quankee-framework-common-ts 1.4.3 → 1.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/.editorconfig +17 -17
  2. package/.gitlab-ci.yml +3 -3
  3. package/LICENSE +15 -15
  4. package/README.md +51 -51
  5. package/angular.json +175 -175
  6. package/package.json +59 -59
  7. package/projects/quankee-framework-interceptor/LICENSE +15 -15
  8. package/projects/quankee-framework-interceptor/ng-package.json +6 -6
  9. package/projects/quankee-framework-interceptor/package-lock.json +45 -45
  10. package/projects/quankee-framework-interceptor/package.json +1 -1
  11. package/projects/quankee-framework-keycloak/LICENSE +15 -15
  12. package/projects/quankee-framework-keycloak/ng-package.json +6 -6
  13. package/projects/quankee-framework-keycloak/package-lock.json +37 -37
  14. package/projects/quankee-framework-keycloak/package.json +1 -1
  15. package/projects/quankee-framework-language/ng-package.json +6 -6
  16. package/projects/quankee-framework-language/package.json +1 -1
  17. package/projects/quankee-framework-response/ng-package.json +6 -6
  18. package/projects/quankee-framework-response/package.json +1 -1
  19. package/projects/quankee-framework-user/LICENSE +15 -15
  20. package/projects/quankee-framework-user/ng-package.json +6 -6
  21. package/projects/quankee-framework-user/package.json +1 -1
  22. package/publish-all.js +13 -13
  23. package/sync-versions.js +26 -26
  24. package/.angular/cache/19.2.15/angular-webpack/10726ec54b663dc47d957771509d3c16530a5c04/0.pack +0 -0
  25. package/.angular/cache/19.2.15/angular-webpack/10726ec54b663dc47d957771509d3c16530a5c04/index.pack +0 -0
  26. package/.angular/cache/19.2.15/angular-webpack/7b97243608b34288b41cb683c4c12cbbac35b78f/0.pack +0 -0
  27. package/.angular/cache/19.2.15/angular-webpack/7b97243608b34288b41cb683c4c12cbbac35b78f/index.pack +0 -0
  28. package/.angular/cache/19.2.15/angular-webpack/94bcc6caa26565395ed680916a15c56a4f369405/0.pack +0 -0
  29. package/.angular/cache/19.2.15/angular-webpack/94bcc6caa26565395ed680916a15c56a4f369405/index.pack +0 -0
  30. package/.angular/cache/19.2.15/angular-webpack/c4d51a1ac3f0cda85f75704b92026f074e3a2239/0.pack +0 -0
  31. package/.angular/cache/19.2.15/angular-webpack/c4d51a1ac3f0cda85f75704b92026f074e3a2239/index.pack +0 -0
  32. package/.angular/cache/19.2.15/angular-webpack/f5b46dc16d29a8b6ba1acc97b51757d36ed2c947/0.pack +0 -0
  33. package/.angular/cache/19.2.15/angular-webpack/f5b46dc16d29a8b6ba1acc97b51757d36ed2c947/index.pack +0 -0
  34. package/.angular/cache/19.2.15/babel-webpack/002001bb82c23a9b0ed2143562a25a92c03c1adff4ea42012bf8b9a21ce82bc7.json +0 -1
  35. package/.angular/cache/19.2.15/babel-webpack/005368dc6f7cda6a18a41f2f18809ce4f2e66f2eb3ca57851a624b40eda8f157.json +0 -1
  36. package/.angular/cache/19.2.15/babel-webpack/005c64f4f96b0c35c949fb27e52cfd7ecf41b1ccc8a6e82aa5668efb2355b990.json +0 -1
  37. package/.angular/cache/19.2.15/babel-webpack/0087688b44367f5b79095b11ae4990cde040ca22e4f5e0360eac16321d1db7d4.json +0 -1
  38. package/.angular/cache/19.2.15/babel-webpack/01eb526696aa8607888da4ec5103aaa3052e5437e2d764b0e0bb2766917a4bf6.json +0 -1
  39. package/.angular/cache/19.2.15/babel-webpack/038d09ea2073205be5da1801da0b56f30c6227a38a410eaad57fcaa40ab14b5e.json +0 -1
  40. package/.angular/cache/19.2.15/babel-webpack/04642651aa51aee5cf33986f07292c2b6d53818af58562509dcb2dcdca9adb00.json +0 -1
  41. package/.angular/cache/19.2.15/babel-webpack/07335a72c77bdb7f32c0b1634a9935673ae18e16b307e5b43cbad16f06d59676.json +0 -1
  42. package/.angular/cache/19.2.15/babel-webpack/0b4072ca2d69fcded6d835e6571b028469d5a0c16b957de0950f748b66ca04b5.json +0 -1
  43. package/.angular/cache/19.2.15/babel-webpack/0cc181a493cecd44474f7f62121f0ffc0dabd295a0734585bdeb92feefab7c09.json +0 -1
  44. package/.angular/cache/19.2.15/babel-webpack/0d23ca1cf4023ebf51d81c67052b8203496edfbc7bb60db597d47238d8465203.json +0 -1
  45. package/.angular/cache/19.2.15/babel-webpack/0d2c56a117b8320b31040054c75108550d24b6543f3ed4966aa722f26638e5a9.json +0 -1
  46. package/.angular/cache/19.2.15/babel-webpack/0d84bfd5b072f31e342550e4efae5d2313175cdde4b091605ed2e261ef0896ba.json +0 -1
  47. package/.angular/cache/19.2.15/babel-webpack/1086f877e03aff62fb645e967d6254bd512c1ebcfb42509471eed8ac84748d9c.json +0 -1
  48. package/.angular/cache/19.2.15/babel-webpack/110b37eba57ad9ad0de36ed161a29f16d219559142202bb5ac9aa09135e985fa.json +0 -1
  49. package/.angular/cache/19.2.15/babel-webpack/1170c291e7e02dfcb3b273aee3071f6a57d318a77bf0616344d4b7cc6df6694a.json +0 -1
  50. package/.angular/cache/19.2.15/babel-webpack/11aa156d8368de3d9cff5e63e37ae0c539f306342940826b3c4374feb55a0d47.json +0 -1
  51. package/.angular/cache/19.2.15/babel-webpack/13486a523f3fc3b18e9a134f7ba38c88c6c83e6d88f94237b504f9ca3f84275e.json +0 -1
  52. package/.angular/cache/19.2.15/babel-webpack/13d99f131a69fc9516e58b8d3b32acfcdc7cffa9b8b0c73abe2118d4dec7e20e.json +0 -1
  53. package/.angular/cache/19.2.15/babel-webpack/14a6809879e29d29b511b7370b452e36d90d1614c6d0069f1cf5e1529fe715c4.json +0 -1
  54. package/.angular/cache/19.2.15/babel-webpack/165172f2af9bb13902ccbbbdd7d22b32473753740db73fcde525dacbda7f4bd7.json +0 -1
  55. package/.angular/cache/19.2.15/babel-webpack/195fee6dea4bfc85f4d84f2cfbfcf2ec7069fe65e34c79dd776ef7132548ad45.json +0 -1
  56. package/.angular/cache/19.2.15/babel-webpack/199836396696e1fa0a3da701c8ed98add52f889392c4911567f3a2a327ca2f36.json +0 -1
  57. package/.angular/cache/19.2.15/babel-webpack/1a66bef03c9f83f3aca9572fa2afae54e498ff8301ffbef4b93247cc975a3308.json +0 -1
  58. package/.angular/cache/19.2.15/babel-webpack/1a71fe0b6c04ea3719ea3b34d558a2de61e1f3b3619851ad7d773873f230060f.json +0 -1
  59. package/.angular/cache/19.2.15/babel-webpack/1b49eb1aa6c923d57ca08625a2f3393420e36df232848fae8a63a27aa97f8a8f.json +0 -1
  60. package/.angular/cache/19.2.15/babel-webpack/1e3d7e035f81146e920012394df9439299dee6ef215f912fdb15ce63fa0112ac.json +0 -1
  61. package/.angular/cache/19.2.15/babel-webpack/1ea0d8ae83dcfe42c3e4e372adeaa820b51221a259f141dd856f782822202ece.json +0 -1
  62. package/.angular/cache/19.2.15/babel-webpack/200d782f0cb78d4e244379412d4041f1be719dc6dab92281171a737a3ad7388b.json +0 -1
  63. package/.angular/cache/19.2.15/babel-webpack/2092f05fbfb7ad790baabb1c3ac9041051faa9574bf42da395d324181656f133.json +0 -1
  64. package/.angular/cache/19.2.15/babel-webpack/22a03711b691be0b7fa5d36a66cf5420943667d4ff49a5c30d8a4ac9b6b2f714.json +0 -1
  65. package/.angular/cache/19.2.15/babel-webpack/235e01ff3a6b09e38b9a4ad53fba0d2555c2bdfebaf39116ffb562fc73eb1987.json +0 -1
  66. package/.angular/cache/19.2.15/babel-webpack/23a6b1e0215a93fa0f2d9a1f69b84e5e56b34acb9743ba824889d1873d3234c4.json +0 -1
  67. package/.angular/cache/19.2.15/babel-webpack/252cc406eadc631bb5b445401c106f62b5434b859a3d6bb87b38b89165ff1780.json +0 -1
  68. package/.angular/cache/19.2.15/babel-webpack/25df14b3094b40f6ca6e2acffdbe34299cdb8e31f082d3a18602543fe08187f7.json +0 -1
  69. package/.angular/cache/19.2.15/babel-webpack/269add79a6e931b78ce521dd5747fd9a2ab55c7390f81078831dec0312e5e1ea.json +0 -1
  70. package/.angular/cache/19.2.15/babel-webpack/2b9435477fbcdf37aa00672219a0d8a958eee8e99cd78f82c88241f15af7f3d9.json +0 -1
  71. package/.angular/cache/19.2.15/babel-webpack/2e0551f6cc59e1e261498ab6bb5a94a67ae051645a96872ed30859d7eae94f9c.json +0 -1
  72. package/.angular/cache/19.2.15/babel-webpack/2ede6c1531e47bace72b7a40bdda34b73760e0fd0f82016bcf34c580b4e2ea97.json +0 -1
  73. package/.angular/cache/19.2.15/babel-webpack/305d6d8a19f01a5a7f0bdbb1cdeea37e7275b1487a06b85af5bcc601484a3dd9.json +0 -1
  74. package/.angular/cache/19.2.15/babel-webpack/3133bfa3b685426a9de17dcb1ac8ebe04b0dfec9133cde375b3812d9307ce1a6.json +0 -1
  75. package/.angular/cache/19.2.15/babel-webpack/31a5ca02ef99a9721a85e837c1e2306e6d479a7b46cfd12257468f31cb47f00b.json +0 -1
  76. package/.angular/cache/19.2.15/babel-webpack/31d26815a634bbca974f6bd038ad5148c92170a3c5a57446bf082feb8753a5d6.json +0 -1
  77. package/.angular/cache/19.2.15/babel-webpack/329455418433148999a0bc94a34250533156280f077f3ed9167279bd8f26cbde.json +0 -1
  78. package/.angular/cache/19.2.15/babel-webpack/34e12fd4a21b0dd1ec74e7c362b0b0b546fd12932252e401ca2b998b9ec5e641.json +0 -1
  79. package/.angular/cache/19.2.15/babel-webpack/357a6beabcbf640a1ce166aa13134d6f909e4a5c2ef5534953db4aabefef3ecc.json +0 -1
  80. package/.angular/cache/19.2.15/babel-webpack/369ec80723843895ecc220142bc22220213901ca2de27afd790187647f7aa17d.json +0 -1
  81. package/.angular/cache/19.2.15/babel-webpack/36c90dc29906355a68052b5eb05d2f048ef806ced10d922d6e3f793b1b139ea7.json +0 -1
  82. package/.angular/cache/19.2.15/babel-webpack/37308bc4034c73371e5ec487556ab448e0c3efd0682852a2de2357ace28bee41.json +0 -1
  83. package/.angular/cache/19.2.15/babel-webpack/37ac24b4af550ae7abbe018c09e5d6aaecd183942b429abe969b08909523e2da.json +0 -1
  84. package/.angular/cache/19.2.15/babel-webpack/3819b97d9eaad8d453d4a36e9faf1d962870811151d83be3d09c42d6069f3817.json +0 -1
  85. package/.angular/cache/19.2.15/babel-webpack/39d701872161ed4e1d97d69d8437da12bf2608d19347b645ad9b6416d719ee1e.json +0 -1
  86. package/.angular/cache/19.2.15/babel-webpack/3a1d64699f39ebee319e7d11e2a69f45b669ac0091882b1c792b99fcbd60e450.json +0 -1
  87. package/.angular/cache/19.2.15/babel-webpack/3bdaadefa095ae8c2b9b45467188afcb4d10ab7291c5762604e20649a88755ce.json +0 -1
  88. package/.angular/cache/19.2.15/babel-webpack/3c6caf3ca7b97c10114de3d834e88ca8853ab7703d2ea60e44a3d844313184f3.json +0 -1
  89. package/.angular/cache/19.2.15/babel-webpack/3cb2bbbf3d5296dd2ecc283c82d04b6014aee1f2cb5d6b2f1e7605b59efd6771.json +0 -1
  90. package/.angular/cache/19.2.15/babel-webpack/3ce73b02e026303a0ff96c83510a770307dba247b9c89b72321d6897b73f9540.json +0 -1
  91. package/.angular/cache/19.2.15/babel-webpack/3d1cf88833de49f9e09de0c0df81dc61014e2b11711a8c973a2d4b63fed58a38.json +0 -1
  92. package/.angular/cache/19.2.15/babel-webpack/3ebe2a5ca83f8699fd7a5e340a9ce6631887a3df3d377ff634b1ed09d8168945.json +0 -1
  93. package/.angular/cache/19.2.15/babel-webpack/3ef45afc5c118db21428fbe74ebfb74c11c00fdff273b1a4dbab1443bd7ab487.json +0 -1
  94. package/.angular/cache/19.2.15/babel-webpack/40818a774c33fe858836ad6726433bc8a1e72da28c025410cb90c619bc7bcc2d.json +0 -1
  95. package/.angular/cache/19.2.15/babel-webpack/41758885e5dc1d3b6d9dba895640a1ec956205a5f13417a9dd7837f31439a6bb.json +0 -1
  96. package/.angular/cache/19.2.15/babel-webpack/426f0425420073b2bb9884dd8c169792bbc354567616d474dac6e17563c9f86f.json +0 -1
  97. package/.angular/cache/19.2.15/babel-webpack/429450ed0c16f5ff3dd5eceaba57a380d40efedf5712f983e59aa8c7252bd5d6.json +0 -1
  98. package/.angular/cache/19.2.15/babel-webpack/439a74e180c35a87580e7ac593831ad7b037e95c6c585df02a103430c3a4cd86.json +0 -1
  99. package/.angular/cache/19.2.15/babel-webpack/43e160e2ccfd770c62da9265ee3e0f1888f9906b9593480a9f7eb5eb12a359ba.json +0 -1
  100. package/.angular/cache/19.2.15/babel-webpack/43f66b0122a79286c5490fb84b6f0e8e3cd6e6beb62ec865c279da485f5cbc7c.json +0 -1
  101. package/.angular/cache/19.2.15/babel-webpack/45d5234e426232bb732f5a87f49bbd4f8b9c71ebe377a4b4efd9b76492ee1292.json +0 -1
  102. package/.angular/cache/19.2.15/babel-webpack/47c2e80be6b88947af49b0eedfcfc098b2e85bb74c6cd62068bb07b7bd8237eb.json +0 -1
  103. package/.angular/cache/19.2.15/babel-webpack/49408bab6e0bd662aaa0c4cbb12fa81b3f0afcea36aa7c6a57a2767744bec207.json +0 -1
  104. package/.angular/cache/19.2.15/babel-webpack/4a081544b597742067479615ba1331bcf5c09317ee8735b4cfbc0d6c48ac7778.json +0 -1
  105. package/.angular/cache/19.2.15/babel-webpack/4b716c7ae7d9696b62b93aeb3f03ab44b15584b70ab557847d3c52581f81d6b1.json +0 -1
  106. package/.angular/cache/19.2.15/babel-webpack/4bddd4b147d9118e5902432fb10bbb2f8d013527de0bf99c437f146772a4ad72.json +0 -1
  107. package/.angular/cache/19.2.15/babel-webpack/4c6bdd8c03f408bcc69e48df04630c0096cac6176026bd6788f0f0af2eed77f7.json +0 -1
  108. package/.angular/cache/19.2.15/babel-webpack/4c850782188d8f6c06ab570bc1a8efea70b14f934bec1215ef0c767829fc4dd1.json +0 -1
  109. package/.angular/cache/19.2.15/babel-webpack/4e149cf5ef7671d08881edc295bf7090261d90e46c1a92e2dc88856593a27ad0.json +0 -1
  110. package/.angular/cache/19.2.15/babel-webpack/4e34c4ef3d7b3c7f0c6db17cd7739173696c8d9524a5ed93cda96d416faeb908.json +0 -1
  111. package/.angular/cache/19.2.15/babel-webpack/4eee3937693aa8ad7b5385e07e4f843436a1a8a82053b6e49c7ef2ed10a8e94b.json +0 -1
  112. package/.angular/cache/19.2.15/babel-webpack/540756a71e80e9e7f0d6e8274ee2cdfeb423a234a6023cde0d531687407309b7.json +0 -1
  113. package/.angular/cache/19.2.15/babel-webpack/549bb2ff9955529b80cf5b57c4311af95be007d15cc7989c5adf9baa81acd29c.json +0 -1
  114. package/.angular/cache/19.2.15/babel-webpack/571926fae0528c62a7b5898e6d8b86b74ca307a778565c6b723f316bd1bfb066.json +0 -1
  115. package/.angular/cache/19.2.15/babel-webpack/57928816e14bdf5105a1eada735c2695482f9bfc2b882637957f690ee40229aa.json +0 -1
  116. package/.angular/cache/19.2.15/babel-webpack/58aee0cd7464eda6d38b3cb90a74e7c7114a4c381a9c99c772e72bafbd1ecacf.json +0 -1
  117. package/.angular/cache/19.2.15/babel-webpack/59323bb443c9968b9fa96340b262571b416605fe986037e953846e1a092f2a32.json +0 -1
  118. package/.angular/cache/19.2.15/babel-webpack/59aa652c7c3a0bff2753c393ccc642f95a08072310fe66a99553c22dc26aecb7.json +0 -1
  119. package/.angular/cache/19.2.15/babel-webpack/5aa4a2f184e99fc58618e9cd12b258ce91be91b1e92363c21ab08e3833fc9774.json +0 -1
  120. package/.angular/cache/19.2.15/babel-webpack/5aabe7273b6ee89c797a37b8cd1d6ea3882202fe307bf9db86a62f988cdcbcde.json +0 -1
  121. package/.angular/cache/19.2.15/babel-webpack/5c9af05cc654d2aa20cad6b879c5acea719869d568f270f6addf1efb32f92593.json +0 -1
  122. package/.angular/cache/19.2.15/babel-webpack/5ccf641aa7241b79f6906306796e194bc906f30f1243c6d82edcd6d7c2be7e6a.json +0 -1
  123. package/.angular/cache/19.2.15/babel-webpack/5cd4b272e06f92778a043660843f6ecbcf452dc800fdda3d054b04abc4cf5c94.json +0 -1
  124. package/.angular/cache/19.2.15/babel-webpack/5deeebc28b44f36db01b80f490d69c654946b2d9d6ef6f4019b3caf365b86c95.json +0 -1
  125. package/.angular/cache/19.2.15/babel-webpack/5ebf0a4c2a250204c46f1de7434da2e040978984a42de13f53a755259e534989.json +0 -1
  126. package/.angular/cache/19.2.15/babel-webpack/5f47f65d79aa36676f8ebf5f3c63175a9bf0dc666eeb731489e56aad1de89222.json +0 -1
  127. package/.angular/cache/19.2.15/babel-webpack/5fcdaecb8841cc568203353da1b7cca487816bd89b6a7ab010d0f5445432c7f0.json +0 -1
  128. package/.angular/cache/19.2.15/babel-webpack/5ff93fecff5e0ee59dd96ae5466e117f040b4fcd693911ce7539add81dc39a97.json +0 -1
  129. package/.angular/cache/19.2.15/babel-webpack/602a31c18bc18432c05451de7c0b67430060524679c70399468ca8f47603b3f1.json +0 -1
  130. package/.angular/cache/19.2.15/babel-webpack/61eee8863a96edc1bd51104ed1097f507edd3b9e3327baaf3b8f97f9b6731b99.json +0 -1
  131. package/.angular/cache/19.2.15/babel-webpack/63928ea8bc977b7941128df8aa9f0ef57e9a8295699f3f16d30349c9f154c75a.json +0 -1
  132. package/.angular/cache/19.2.15/babel-webpack/64001c9c3383b980405e5a0bf0521d0a4763882455baabb1c7530fc8ed5cfd55.json +0 -1
  133. package/.angular/cache/19.2.15/babel-webpack/641e0f9050dd605bfa9c630ecc3449e79f230e5010d5714aa95a8a23fc2c1147.json +0 -1
  134. package/.angular/cache/19.2.15/babel-webpack/64b5b46276f20158aa4435a721c24f2f2555fa2da7c2cc58f923502594406136.json +0 -1
  135. package/.angular/cache/19.2.15/babel-webpack/64c42985e6b60cbe361e28d9c8baf22950ffb923cf694da37ef9d4ccbb9bf71f.json +0 -1
  136. package/.angular/cache/19.2.15/babel-webpack/64de56955bbb4c062931006afe3389ea2d72d3886b26a700d5cf715fff078f26.json +0 -1
  137. package/.angular/cache/19.2.15/babel-webpack/65c74d720759f038998756b2133f7b21b1b83b51545d53871f959c6c1cf3683b.json +0 -1
  138. package/.angular/cache/19.2.15/babel-webpack/65d8a26f81389f562c19d73ddf3207560a366e31d061290dd9bc11cc7e154a32.json +0 -1
  139. package/.angular/cache/19.2.15/babel-webpack/6671e2b65578994dc79a2fe074ab6fe43c859c75aa3e61679c5a043a426233c5.json +0 -1
  140. package/.angular/cache/19.2.15/babel-webpack/66b243e5cdd1f8055d4408c29ea10d841d24b69502e770855a640ffd70713acd.json +0 -1
  141. package/.angular/cache/19.2.15/babel-webpack/67256b4fa21eeb22d74fe5bc851520973c4111e56ec4af54ef8dcc7fef66d7d5.json +0 -1
  142. package/.angular/cache/19.2.15/babel-webpack/67dcd370eb1f42e86ef98a0a4bee6b051b9836fe0c018765e5ca67b93256391d.json +0 -1
  143. package/.angular/cache/19.2.15/babel-webpack/67e2602a4a39b98145c79ea9bfdb3404c12b38d1d223d6d603e02631652ab249.json +0 -1
  144. package/.angular/cache/19.2.15/babel-webpack/684c2a7ec246d44a15b4ed266263c6d9c974dc7d1d8f6467704292d279cd5c74.json +0 -1
  145. package/.angular/cache/19.2.15/babel-webpack/6851da6a369a728a899c200f19cc8446a96e26af1d052c2f2f0ce24c6185d547.json +0 -1
  146. package/.angular/cache/19.2.15/babel-webpack/68cc9c5a3cbeab766d54df95ecd1e547c45b25887ca6fb672580352d29ae1eb7.json +0 -1
  147. package/.angular/cache/19.2.15/babel-webpack/68ccdc1bd74a10de87ee99c8005672255c117b33cdfb08b15c166664eff0a997.json +0 -1
  148. package/.angular/cache/19.2.15/babel-webpack/696f54f9441b350ea577240f284feb553f041b3e3242b0d65d865fce73d82d11.json +0 -1
  149. package/.angular/cache/19.2.15/babel-webpack/6aeb13f8fc9de17d6e10fc0cf4b4970c1bdfa2995d59a0a7571cd7afe6522538.json +0 -1
  150. package/.angular/cache/19.2.15/babel-webpack/6bdc923f47011fefe9ae7a9ae962d8e9dab1b540505b89e1024c1f4baccdabe2.json +0 -1
  151. package/.angular/cache/19.2.15/babel-webpack/6bf98b382d6fda3f0b74f8892bc1f5bd09caeabf1208fec15ab9f5b7b0243910.json +0 -1
  152. package/.angular/cache/19.2.15/babel-webpack/6e134e4f12a4676fb7a75cd22d979f93fb3ce86a57c1e00455cfcdd95c3611ea.json +0 -1
  153. package/.angular/cache/19.2.15/babel-webpack/6f4028ecdaaed3f34af8a43e1ba3e51025526429c1e1fe281c1886ebbf887453.json +0 -1
  154. package/.angular/cache/19.2.15/babel-webpack/6f5a50d2f55c49ae49ada97596ac02623fc13daf96141ffa0655dc6d78d1aab5.json +0 -1
  155. package/.angular/cache/19.2.15/babel-webpack/6fd7204985be33d1e2c2399e647565c6cfb55c0f8ac4b4f3529e2a15374444e8.json +0 -1
  156. package/.angular/cache/19.2.15/babel-webpack/719a57d887a1ed16ddd2721f64eeb1740083d70c5eb7bcb1304c7412ab142e2c.json +0 -1
  157. package/.angular/cache/19.2.15/babel-webpack/71afc13ab38a115c16a96a587f1178bd42188a35e935185ed261c27d81d9b082.json +0 -1
  158. package/.angular/cache/19.2.15/babel-webpack/728ef5f24e04bda01050ee5e6e2dc88cb88214641824fcca17835e52651ce5cf.json +0 -1
  159. package/.angular/cache/19.2.15/babel-webpack/72ef6f03c26b0faf8c3549a38e7eb0d38f2326ca299dbfbc260c35bba680a1a5.json +0 -1
  160. package/.angular/cache/19.2.15/babel-webpack/73919d260a5357a19fbe8d8559d180457a86b6e89adb20afc23b726a4f1fb769.json +0 -1
  161. package/.angular/cache/19.2.15/babel-webpack/7616f6cbf12a30a53cfc5a70922f994d788e146094ed7ec7a31da315c33beff7.json +0 -1
  162. package/.angular/cache/19.2.15/babel-webpack/7626594f378fab12164ec0a0242131e14143cf98eb5ca39719a08ffbf5279bad.json +0 -1
  163. package/.angular/cache/19.2.15/babel-webpack/76cb2228f31811cada09b1ac524d4ca6c86c4155de934bd2bae8c1ede5312fd1.json +0 -1
  164. package/.angular/cache/19.2.15/babel-webpack/7832d0e2821b7bc2caba3d9ae432f16aef912bc218a80a7ebac87931a03d1d6c.json +0 -1
  165. package/.angular/cache/19.2.15/babel-webpack/7862a83aae033f3212df52cb1326cf739dc1ef4366c5b49f4c4fa63e861da58d.json +0 -1
  166. package/.angular/cache/19.2.15/babel-webpack/786daaf3c4c2cb57b3d15e03d010468397662926afb150d1715dcc6a8e723f9c.json +0 -1
  167. package/.angular/cache/19.2.15/babel-webpack/78c91a6d590f69040d410a6ce991425e38a631c502bda192d6c340bbac76bc4c.json +0 -1
  168. package/.angular/cache/19.2.15/babel-webpack/790757a8edf5dd8a320f36474e7aa7e6b728c0afcf86fc6aa4ca71e289eee2e5.json +0 -1
  169. package/.angular/cache/19.2.15/babel-webpack/7d0354b23659e6972543614716e0a77524b24f7ef7ab7650edaaad3a5c9b0222.json +0 -1
  170. package/.angular/cache/19.2.15/babel-webpack/7d808c47bc69aa0e6db8019738a3687807c26fbdc9c6fb3b5cf31a15c5d5125b.json +0 -1
  171. package/.angular/cache/19.2.15/babel-webpack/7db8144d8d34e58ed5357648fe21ede6b89c0c85053691da68bb2fc12a19472e.json +0 -1
  172. package/.angular/cache/19.2.15/babel-webpack/7f2c81069006b56e4faad42d003ae9c3fb28084d347aec6bdfd0f821cfe95cf7.json +0 -1
  173. package/.angular/cache/19.2.15/babel-webpack/7f5a3b63f5910c44e74d73dd342fc4b91dfe2b4d8746f2a526e0456855ff3a11.json +0 -1
  174. package/.angular/cache/19.2.15/babel-webpack/837fc9d534c106653d98e74a9c7c247a5db30fe441ba8ecdf2fd9f5d008601af.json +0 -1
  175. package/.angular/cache/19.2.15/babel-webpack/83be5725956b6b36f2fe0557751a649c0ee00e77b2a2a3d15c3250883be5bb67.json +0 -1
  176. package/.angular/cache/19.2.15/babel-webpack/84867da7a6d0e52b8d13f55896dc00a652e4aa4391d5711e8f78f57da7883fd0.json +0 -1
  177. package/.angular/cache/19.2.15/babel-webpack/85ada10e62f299b33050452880034cabb9f3d1fb3be26c01d10d4ef42fe926fc.json +0 -1
  178. package/.angular/cache/19.2.15/babel-webpack/87c110589ac76aac5ea468194117de13e79800e1979f7066de08f7b0d7e9e4fb.json +0 -1
  179. package/.angular/cache/19.2.15/babel-webpack/88af454f6321f08c388871934f48573a48522482156fdcf06d488b260b5f86ea.json +0 -1
  180. package/.angular/cache/19.2.15/babel-webpack/8bc0e36747b6877c3f8141fa738a22a4396f0f6d96b063a7e61d84677fb18883.json +0 -1
  181. package/.angular/cache/19.2.15/babel-webpack/8cc714f7d9cb0acac1979696178b83949bbe3a75975304307ba0b90e1554d183.json +0 -1
  182. package/.angular/cache/19.2.15/babel-webpack/8e70246ecd62de98200c9992ddff7f4a6b697031d1394e7cb742eeff6a75f1ac.json +0 -1
  183. package/.angular/cache/19.2.15/babel-webpack/8ed4775eda937129eee703f25eadb006dded189832a67d9c610bb8d7d6bfbec6.json +0 -1
  184. package/.angular/cache/19.2.15/babel-webpack/8efaba9a15cf935c0ec604e939102e8f744fbb7291a49623c40b63e3e19f31ff.json +0 -1
  185. package/.angular/cache/19.2.15/babel-webpack/9049d135e23938c1b5e909b966c5924c42444df7d81603b16433eafb31a001c1.json +0 -1
  186. package/.angular/cache/19.2.15/babel-webpack/90f1849a82440304f6acc591458f4040764da8cd03b9c5608228ae4465abb0ec.json +0 -1
  187. package/.angular/cache/19.2.15/babel-webpack/916f593bc7b673945c697f0a1954d80683964ff4c1785ccf2c386dd61c9ec576.json +0 -1
  188. package/.angular/cache/19.2.15/babel-webpack/91a78040be0e13141c7ed721014205696ec8782d59b560152ba1f8a362632610.json +0 -1
  189. package/.angular/cache/19.2.15/babel-webpack/91c1d206584c95f127235017675ccbda33197b3cc395144a3bb8405f30d23fa7.json +0 -1
  190. package/.angular/cache/19.2.15/babel-webpack/92b5170fb31dfbfc8b0a582c344683c47b7974469937a2df51f44a7668ee32c5.json +0 -1
  191. package/.angular/cache/19.2.15/babel-webpack/9344adb736f6c8062b564d5bf8a554ba2dd71314bdfa98a41c6e3d842b655c24.json +0 -1
  192. package/.angular/cache/19.2.15/babel-webpack/9463424cb58b91dd4932c9ce01f4eec1dcccde596413ce168661dcc9392da5fc.json +0 -1
  193. package/.angular/cache/19.2.15/babel-webpack/96e24cf6cc982e2a3b0a0b35fba952dc1362b48549c4a366a748f04c78d58611.json +0 -1
  194. package/.angular/cache/19.2.15/babel-webpack/99655bb5d6f5a6797c80ea604f091587564d5dc3a294ea74e327d6acc4eedd2b.json +0 -1
  195. package/.angular/cache/19.2.15/babel-webpack/9a6b993060de60a58f2905ac835ee795c5c509308dfd8d4249d90c16df19c1a1.json +0 -1
  196. package/.angular/cache/19.2.15/babel-webpack/9b709d4d922738efe3a66288d91d172e64eced5559b1c8148af24a28083b75ed.json +0 -1
  197. package/.angular/cache/19.2.15/babel-webpack/9c0288fbf0881e77a483b58501209f1328e45c4e966ecda779f21888aba40a89.json +0 -1
  198. package/.angular/cache/19.2.15/babel-webpack/9dd3b4bb0ccb7aed85bcdb7b335630c4249a208614587da0a0c4f57dcf6a7d69.json +0 -1
  199. package/.angular/cache/19.2.15/babel-webpack/a053de867be313f4170915c0b90836b81c0fe6aa305c46f08fba483b253106d2.json +0 -1
  200. package/.angular/cache/19.2.15/babel-webpack/a12d78b36f170fda769b9cf2c79c1602051fad914edc4511f621fc6e477b0f21.json +0 -1
  201. package/.angular/cache/19.2.15/babel-webpack/a20962b3067006b51d83609c93a372b1707f5a199e92f223965b4937a39f76b4.json +0 -1
  202. package/.angular/cache/19.2.15/babel-webpack/a2d5bfd6cf6e02d01dde7a81762657dda4e982369c4e960146e87aef6ae80cc8.json +0 -1
  203. package/.angular/cache/19.2.15/babel-webpack/a3103ff114575d72337ef5f3a1e8fbd12705b56eeeda084770a1192e171b92ee.json +0 -1
  204. package/.angular/cache/19.2.15/babel-webpack/a5d280b1915af705b59a801245daf54831e2a0c7407fbcbc1384c77572dc83fc.json +0 -1
  205. package/.angular/cache/19.2.15/babel-webpack/a5e71ad7770f22fe68908dec29c789cc533308f67e5790449ce461a28dcdb6c0.json +0 -1
  206. package/.angular/cache/19.2.15/babel-webpack/a804fc206852788049392d8646e2f83f6708db4028c3781892e0ccc96fe66844.json +0 -1
  207. package/.angular/cache/19.2.15/babel-webpack/a8fd31126c28413203dc4654779fd91cded8b6286c88e4ff0cd49f110ee6833c.json +0 -1
  208. package/.angular/cache/19.2.15/babel-webpack/aa58d38fdae77071b0689c4e486600c71783a2566daedd224fb8ee525927a6da.json +0 -1
  209. package/.angular/cache/19.2.15/babel-webpack/aab065ccc8cb80aaa06dcd834613939907f0a45bcf261243215c46c77672f944.json +0 -1
  210. package/.angular/cache/19.2.15/babel-webpack/aad167162be99eb37ffb7805e667838fc5f761247fa26b560a7c9b377b8f07dd.json +0 -1
  211. package/.angular/cache/19.2.15/babel-webpack/ac0672080d67beea57efce5fd0600cc566e3c95f492acaa4cb58f79bdf9828ce.json +0 -1
  212. package/.angular/cache/19.2.15/babel-webpack/acdfe0c2d940ee35a348ab25973debc82a677bc6885e45d6cfe4551d7627f973.json +0 -1
  213. package/.angular/cache/19.2.15/babel-webpack/ad3189f34e9515506f8e53eef460a1203433504f7cab64f4a63087abd2e3932a.json +0 -1
  214. package/.angular/cache/19.2.15/babel-webpack/ade43c6f864da316513432192ad32d23026895e6b9bfe1548c0625253b90df79.json +0 -1
  215. package/.angular/cache/19.2.15/babel-webpack/ae344e6d8f02ddac285ed1f09fc7ab6cce09c0e1bd7d8c79eae7c919af69946b.json +0 -1
  216. package/.angular/cache/19.2.15/babel-webpack/af851c21fb63865b5d2ce5252f688b2797c74f3ac58f28bbe0e56f8d73e7b396.json +0 -1
  217. package/.angular/cache/19.2.15/babel-webpack/afa4df5956cb2c4ea9266bc9be0c5d75d3220052f4969b5e1d6077abb367e0e1.json +0 -1
  218. package/.angular/cache/19.2.15/babel-webpack/b0fb3c660f093313e1e530cb720634df501b33f2156b02a3efb373627c89fe0e.json +0 -1
  219. package/.angular/cache/19.2.15/babel-webpack/b1a8b18dfdf83f07acec5f91177542bed2e5b968f7f0143ec31883a6e48d19fe.json +0 -1
  220. package/.angular/cache/19.2.15/babel-webpack/b2fdc054c50e9af4b6614afe479b2d1c725b1bf2fad061104fae0e73cf55af45.json +0 -1
  221. package/.angular/cache/19.2.15/babel-webpack/b3154d45466a1630f021744b98673ac85781578dc205b147d27fdd9fde263b1e.json +0 -1
  222. package/.angular/cache/19.2.15/babel-webpack/b42b3769fc6d46c92287a2a01d1e2a7cbef648c4892832a225113b49381427d6.json +0 -1
  223. package/.angular/cache/19.2.15/babel-webpack/b464a8ca4359beb21d51c1e1bcb7a00626e28b395270ae05be27ccd14361b1e9.json +0 -1
  224. package/.angular/cache/19.2.15/babel-webpack/b5a4cee4d5a393e007f0b5d2e45a7dad028ef44ddd1f1e7cf8c50cfcf24ae68a.json +0 -1
  225. package/.angular/cache/19.2.15/babel-webpack/b685aad157945f8d205b93ea0a33f921964cc83c3272e1e37c6a0eb370b76d66.json +0 -1
  226. package/.angular/cache/19.2.15/babel-webpack/b821f28f19e73d233b18ef90916575e61db2e56bd501a32b13de8e26f91c8323.json +0 -1
  227. package/.angular/cache/19.2.15/babel-webpack/b8eae74c763bd6c3918e3b27f26e48a5cea526882642ed9a5ce1bc72b2d310e0.json +0 -1
  228. package/.angular/cache/19.2.15/babel-webpack/b96837b2fd499543ee8b2f17aaea23f98e96f50018df20963008cab739af9cb2.json +0 -1
  229. package/.angular/cache/19.2.15/babel-webpack/bc236ebac861854a2dc6d4fb0843cad6b2cc75317c12201d2d33df04fedcb13a.json +0 -1
  230. package/.angular/cache/19.2.15/babel-webpack/bd1f496dc7663720bf931776ef526fdc2af33912e87fd194dc4ee3929cbe4b92.json +0 -1
  231. package/.angular/cache/19.2.15/babel-webpack/bf26e716ab8620dcc3d6bb551f732cab40eacb8898cb128363abff90a8c51d0e.json +0 -1
  232. package/.angular/cache/19.2.15/babel-webpack/c02e583440c240c17c10310a9a3efb33df50f54b040b79861b91a3122cace587.json +0 -1
  233. package/.angular/cache/19.2.15/babel-webpack/c07ff0fa7b48e2e11c44f229e5d6a636ae0d4e003185e87102c678f02e1a1e8c.json +0 -1
  234. package/.angular/cache/19.2.15/babel-webpack/c344af3b3096de63f302663443c8f34a2ce3b18f9e2a07c14f622799b699f634.json +0 -1
  235. package/.angular/cache/19.2.15/babel-webpack/c35eae88745cb1903fa6868497d6bf3927da4d490f3780a06c88e7d91e267ba0.json +0 -1
  236. package/.angular/cache/19.2.15/babel-webpack/c41fa533c6ab9c10d9ba780bf3c0bbd2fc289928c81b2c0b84aa40479edfb6f0.json +0 -1
  237. package/.angular/cache/19.2.15/babel-webpack/c53b3231bfa9b0bb7c4d718c553a3da3ca2069532f1f02433af04765d94b6bfa.json +0 -1
  238. package/.angular/cache/19.2.15/babel-webpack/c5905a7adf3deba0fce0e77a257076d7fc81a2d88a0151b35a403c0f0ab15559.json +0 -1
  239. package/.angular/cache/19.2.15/babel-webpack/c6360adae1cbe321e9c611921576674f67a9917d85d2ba96a5670cfd9f9bae93.json +0 -1
  240. package/.angular/cache/19.2.15/babel-webpack/c7e0c0cad1b20199d7b4ba01005c3d9899a72968fcf7c81a2ab8cb04b9c829af.json +0 -1
  241. package/.angular/cache/19.2.15/babel-webpack/c97084ec497d6c0bdde0b4c650a7a8b5c37768c9ba556338e720a07e89278e5c.json +0 -1
  242. package/.angular/cache/19.2.15/babel-webpack/ca87439e65a06f2f592712bf74ed7c361df90b300828c816a918fa2e5b1f8d69.json +0 -1
  243. package/.angular/cache/19.2.15/babel-webpack/cbe0cfcb9a076061ea4939e174c271c0177d9f32559f26aa922e1dff725ddf8f.json +0 -1
  244. package/.angular/cache/19.2.15/babel-webpack/cbf9ed7ee63bfa7c57e80999c894bc6d12ec23010b4352aee9d26883d8083f4b.json +0 -1
  245. package/.angular/cache/19.2.15/babel-webpack/cbfe73278b59403434827a252fa476bbab33d825ed1bb44eb2fb2829bc4900fb.json +0 -1
  246. package/.angular/cache/19.2.15/babel-webpack/ce4148cbb7433945c159ac4a701c8717982164c5d1984445c1e3a947084ea237.json +0 -1
  247. package/.angular/cache/19.2.15/babel-webpack/ce4c0df219205e1e0286cb404215b060069056ef5af7e8f1604483cb12815c00.json +0 -1
  248. package/.angular/cache/19.2.15/babel-webpack/cf869dc70666b3066e961243c925e65751a9af690a89276c9776da864de48673.json +0 -1
  249. package/.angular/cache/19.2.15/babel-webpack/d06afc622b34402af161bb8ec2435b0c3ad1fde40052b7cacb5122b3aa120b11.json +0 -1
  250. package/.angular/cache/19.2.15/babel-webpack/d3454f70d728c7997c21ad33b71f3c1e7ea324ff7f0603d73fbfecfd42a65c92.json +0 -1
  251. package/.angular/cache/19.2.15/babel-webpack/d3df772bb9ee5915ccf94fffc0bb1c7a2e61199afc0193cee379fc24dbad5a93.json +0 -1
  252. package/.angular/cache/19.2.15/babel-webpack/d4e7871be27335444944f5fb56cb8e4c177387ac13266141060b1e52ef2cfdbc.json +0 -1
  253. package/.angular/cache/19.2.15/babel-webpack/d5d2d700e7bd21710cd7731eb723a6d402769e97f13b5d9fc8865f18e60bdb06.json +0 -1
  254. package/.angular/cache/19.2.15/babel-webpack/d5fa8ddd8e260d5cef95573068127a66cee7d12966cf48cc77fbc0004aed1e9b.json +0 -1
  255. package/.angular/cache/19.2.15/babel-webpack/d6f5414805f9dd9381e163a9d26b3be5b7fbe5cf1c424f16b115a26755af21a0.json +0 -1
  256. package/.angular/cache/19.2.15/babel-webpack/d789de59515c2d7edbe504cca23990f6c026f3a27a50653e21ccfb988ca5558a.json +0 -1
  257. package/.angular/cache/19.2.15/babel-webpack/d7c7b043c8b4c30c9f0369251d0d908dd52799df6fb96e47b166064f266bdb72.json +0 -1
  258. package/.angular/cache/19.2.15/babel-webpack/d8299612d4ee893d68b35cd46d27dc729b175eb18894b8834bc61deaa00385ec.json +0 -1
  259. package/.angular/cache/19.2.15/babel-webpack/d84c0648517c2fedae9aafad575cb525f011be0da6620ae653446319f8dde17b.json +0 -1
  260. package/.angular/cache/19.2.15/babel-webpack/d872c76129e22f3df258ad33375ffede8cc3654f133b072ff577af2c3d5d37ff.json +0 -1
  261. package/.angular/cache/19.2.15/babel-webpack/da77318a4f15641e3cc2b8d80546fd389248a601b75feaa5db215a0962f391b6.json +0 -1
  262. package/.angular/cache/19.2.15/babel-webpack/dbc3a210ccae5103c04f71c3bdfb4435ccaddd66242174dce91d663140b21dc5.json +0 -1
  263. package/.angular/cache/19.2.15/babel-webpack/dc992071d5950a2223f1a421d1543e7b4dadf094122fd23a0429c724264f011e.json +0 -1
  264. package/.angular/cache/19.2.15/babel-webpack/dd1c501575b09f57f98b2a8d81b09e546d848a595a5ace7a89d25dbd430be493.json +0 -1
  265. package/.angular/cache/19.2.15/babel-webpack/dd6364865afedbe7c1e18ab9c3788102668313dfaf133a71212c536c01543c56.json +0 -1
  266. package/.angular/cache/19.2.15/babel-webpack/dff219ba3776abe22372f83bd16939393ae98887db82b3749a85c3e22168bc61.json +0 -1
  267. package/.angular/cache/19.2.15/babel-webpack/e0fdf919390ece3350e848e78b3913b0d89893790098935b7c8b33130e5efb8e.json +0 -1
  268. package/.angular/cache/19.2.15/babel-webpack/e77d5f1cb72805c0b888edf5b715b36c78e98723bb438a0a0fdd2882e9829970.json +0 -1
  269. package/.angular/cache/19.2.15/babel-webpack/e7a20108cffbfd2f0dfb812fb537668716baea08625837d1b952d9e4fd0d5bd6.json +0 -1
  270. package/.angular/cache/19.2.15/babel-webpack/e7b79fda0e9d3d6ca48335789edcf122031c45c7e2ca5427389f67ce20a34281.json +0 -1
  271. package/.angular/cache/19.2.15/babel-webpack/ec20396c5d705868c1de7429b3d90f02d4be65d15ea399076ca235fbdd641431.json +0 -1
  272. package/.angular/cache/19.2.15/babel-webpack/ec20a51774553bca90274c246cda80099b04833cc5f12c249640baaf83ebc506.json +0 -1
  273. package/.angular/cache/19.2.15/babel-webpack/ec88853cd9a00f1f8d09e4b67e133b813cce1b521f52b530c8df79f2f7da808b.json +0 -1
  274. package/.angular/cache/19.2.15/babel-webpack/ec940d603510ff67991dfb1f87109bd2494de6b66715dab6bd3ece66fbcf7143.json +0 -1
  275. package/.angular/cache/19.2.15/babel-webpack/ed9bcec5dcee5e3771050a2ba3005be14e0f7c1bd2ebb88b8224715f2afaadb6.json +0 -1
  276. package/.angular/cache/19.2.15/babel-webpack/ee6ff36829b6ee201c9017ff7453149d5a23ec35a5fa605be40db554600d347d.json +0 -1
  277. package/.angular/cache/19.2.15/babel-webpack/f1837d3cd06500bc8b6f8ad7335d320c5bc77b36d9345ac228b84a77edf47ae3.json +0 -1
  278. package/.angular/cache/19.2.15/babel-webpack/f24e1dc40f6df3f034fc61681d484fabf64815194dea077034fbb9252ffe9be2.json +0 -1
  279. package/.angular/cache/19.2.15/babel-webpack/f3f8d3d48c80e266959232980037f561ac3a2029ad5c219b25bd5a427b659c58.json +0 -1
  280. package/.angular/cache/19.2.15/babel-webpack/f40fcb185f52e56bc86fbb442094b2c826d013690af15902508f29f567922be7.json +0 -1
  281. package/.angular/cache/19.2.15/babel-webpack/f44209cd79deb6e7a87e6f9e97ddceb7c223538480e2780ded5f3d668cdd6818.json +0 -1
  282. package/.angular/cache/19.2.15/babel-webpack/f6b163c0527cf26d32b3a064f3d14ba57ab8161faad489d34f570513e4ee9e87.json +0 -1
  283. package/.angular/cache/19.2.15/babel-webpack/f96582be3a4bc506a2e1e6a5e76426055383b4d3fdd9d9c1afb14d32e8d910ad.json +0 -1
  284. package/.angular/cache/19.2.15/babel-webpack/f976bca369664bdf32c1be154e0c5728be960ab5bad4ef84d90fad99ac974abd.json +0 -1
  285. package/.angular/cache/19.2.15/babel-webpack/f9c3de2d4a716d1120233f5051109a122fd7e1ad63076e55fc247e9714ab4960.json +0 -1
  286. package/.angular/cache/19.2.15/babel-webpack/fa5df4343b61a4e5b00d552f176b707397c93da67ae9156e8b55ca58d98f04b2.json +0 -1
  287. package/.angular/cache/19.2.15/babel-webpack/fa6720a313572b9513915e669909508282d392d2b1ce79f482077e67d5b84aaf.json +0 -1
  288. package/.angular/cache/19.2.15/babel-webpack/fa91a0753c69dfd60f22f578cf80740bf043209f410854a5be585c971db48b72.json +0 -1
  289. package/.angular/cache/19.2.15/babel-webpack/fb52edac5fd48f4e6ead8848a83b29a81ed0934eade2a287be577ee72be849ef.json +0 -1
  290. package/.angular/cache/19.2.15/babel-webpack/fb59420fe97419dfa9ff21de01aabeb4157edce2165ef55e64e3682194c0ef2a.json +0 -1
  291. package/.angular/cache/19.2.15/babel-webpack/fbd47c634711337c64927e11e3444f94b1360bc6cbbbaa614cd9cde6da016fff.json +0 -1
  292. package/.angular/cache/19.2.15/babel-webpack/fbde92386c5c40b437ecab1148204dde924c63872d4377c2ea4753365b162b8a.json +0 -1
  293. package/.angular/cache/19.2.15/babel-webpack/fc9175f665c1f5d614ca16ce3d6cd79121fb1b17d3c1efdb54a5376bb4d813f6.json +0 -1
  294. package/.angular/cache/19.2.15/babel-webpack/fe2b3ad820146c2309c6a2b25a44f274277b707599ca772d9a001ce9eec669de.json +0 -1
  295. package/.angular/cache/19.2.15/babel-webpack/fefd393311d9b775f9f647af74656f3f5897d21239e25814b6b0708e657db138.json +0 -1
  296. package/.angular/cache/19.2.15/babel-webpack/ff96f8833e514be320d63eaa33bcf498d78e53f957b9a9449f4687933f2844d8.json +0 -1
  297. package/.angular/cache/19.2.15/ng-packagr/2376c16cef25e849019f7c07c1f2a3b4ab89b9e69826c7d01f10f92dbbc862e7 +0 -1
  298. package/.angular/cache/19.2.15/ng-packagr/4d54d937dc0fb0c6f29a333038ccf08c7481d9a9c9842c3c69d60b448a8fcd48 +0 -1
  299. package/.angular/cache/19.2.15/ng-packagr/4ec9d7c95b688865fdda7559138c701cd4f3b51c24f3fc2679687ee4e8d6f807 +0 -1
  300. package/.angular/cache/19.2.15/ng-packagr/75c856ab93c5d356e910e21d64fe992f383ab17b19fd310228ac71f161bf90f4 +0 -1
  301. package/.angular/cache/19.2.15/ng-packagr/8dc2d5a35f40f993f8e8f007e3ec70ea61d38a9543aaf987838096a6461cfa75 +0 -1
  302. package/.angular/cache/19.2.15/ng-packagr/91f1f2d122acf302d104afbce6fe35663cb63aaaef20721b2ae86ea0bab5c54a +0 -1
  303. package/.angular/cache/19.2.15/ng-packagr/b1851331ce1d33cd48496fe17422276a2b380a319e716db97547784e4d9cc1a1 +0 -1
  304. package/.angular/cache/19.2.15/ng-packagr/bafae0f01f0cf8807646a7eb9e3b6bd5a1edd0fd3752c9f8c93ba0b66b824928 +0 -1
  305. package/.angular/cache/19.2.15/ng-packagr/df9030ba5c4a68a5dd0cb41b53506348a54f8da563888061b23946418e6eb5c4 +0 -1
  306. package/.angular/cache/19.2.15/ng-packagr/e7a7d1fd8010b7d738d17804a871e051239ab07f96a28e9282a235d0bf535001 +0 -1
@@ -1 +0,0 @@
1
- {"ast":null,"code":"'use strict';\n\n/**\n * @license Angular v<unknown>\n * (c) 2010-2025 Google LLC. https://angular.io/\n * License: MIT\n */\nfunction patchJasmine(Zone) {\n Zone.__load_patch('jasmine', (global, Zone, api) => {\n const __extends = function (d, b) {\n for (const p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n // Patch jasmine's describe/it/beforeEach/afterEach functions so test code always runs\n // in a testZone (ProxyZone). (See: angular/zone.js#91 & angular/angular#10503)\n if (!Zone) throw new Error('Missing: zone.js');\n if (typeof jest !== 'undefined') {\n // return if jasmine is a light implementation inside jest\n // in this case, we are running inside jest not jasmine\n return;\n }\n if (typeof jasmine == 'undefined' || jasmine['__zone_patch__']) {\n return;\n }\n jasmine['__zone_patch__'] = true;\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n if (!SyncTestZoneSpec) throw new Error('Missing: SyncTestZoneSpec');\n if (!ProxyZoneSpec) throw new Error('Missing: ProxyZoneSpec');\n const ambientZone = Zone.current;\n const symbol = Zone.__symbol__;\n // whether patch jasmine clock when in fakeAsync\n const disablePatchingJasmineClock = global[symbol('fakeAsyncDisablePatchingClock')] === true;\n // the original variable name fakeAsyncPatchLock is not accurate, so the name will be\n // fakeAsyncAutoFakeAsyncWhenClockPatched and if this enablePatchingJasmineClock is false, we\n // also automatically disable the auto jump into fakeAsync feature\n const enableAutoFakeAsyncWhenClockPatched = !disablePatchingJasmineClock && (global[symbol('fakeAsyncPatchLock')] === true || global[symbol('fakeAsyncAutoFakeAsyncWhenClockPatched')] === true);\n const ignoreUnhandledRejection = global[symbol('ignoreUnhandledRejection')] === true;\n if (!ignoreUnhandledRejection) {\n const globalErrors = jasmine.GlobalErrors;\n if (globalErrors && !jasmine[symbol('GlobalErrors')]) {\n jasmine[symbol('GlobalErrors')] = globalErrors;\n jasmine.GlobalErrors = function () {\n const instance = new globalErrors();\n const originalInstall = instance.install;\n if (originalInstall && !instance[symbol('install')]) {\n instance[symbol('install')] = originalInstall;\n instance.install = function () {\n const isNode = typeof process !== 'undefined' && !!process.on;\n // Note: Jasmine checks internally if `process` and `process.on` is defined.\n // Otherwise, it installs the browser rejection handler through the\n // `global.addEventListener`. This code may be run in the browser environment where\n // `process` is not defined, and this will lead to a runtime exception since webpack 5\n // removed automatic Node.js polyfills. Note, that events are named differently, it's\n // `unhandledRejection` in Node.js and `unhandledrejection` in the browser.\n const originalHandlers = isNode ? process.listeners('unhandledRejection') : global.eventListeners('unhandledrejection');\n const result = originalInstall.apply(this, arguments);\n isNode ? process.removeAllListeners('unhandledRejection') : global.removeAllListeners('unhandledrejection');\n if (originalHandlers) {\n originalHandlers.forEach(handler => {\n if (isNode) {\n process.on('unhandledRejection', handler);\n } else {\n global.addEventListener('unhandledrejection', handler);\n }\n });\n }\n return result;\n };\n }\n return instance;\n };\n }\n }\n // Monkey patch all of the jasmine DSL so that each function runs in appropriate zone.\n const jasmineEnv = jasmine.getEnv();\n ['describe', 'xdescribe', 'fdescribe'].forEach(methodName => {\n let originalJasmineFn = jasmineEnv[methodName];\n jasmineEnv[methodName] = function (description, specDefinitions) {\n return originalJasmineFn.call(this, description, wrapDescribeInZone(description, specDefinitions));\n };\n });\n ['it', 'xit', 'fit'].forEach(methodName => {\n let originalJasmineFn = jasmineEnv[methodName];\n jasmineEnv[symbol(methodName)] = originalJasmineFn;\n jasmineEnv[methodName] = function (description, specDefinitions, timeout) {\n arguments[1] = wrapTestInZone(specDefinitions);\n return originalJasmineFn.apply(this, arguments);\n };\n });\n ['beforeEach', 'afterEach', 'beforeAll', 'afterAll'].forEach(methodName => {\n let originalJasmineFn = jasmineEnv[methodName];\n jasmineEnv[symbol(methodName)] = originalJasmineFn;\n jasmineEnv[methodName] = function (specDefinitions, timeout) {\n arguments[0] = wrapTestInZone(specDefinitions);\n return originalJasmineFn.apply(this, arguments);\n };\n });\n if (!disablePatchingJasmineClock) {\n // need to patch jasmine.clock().mockDate and jasmine.clock().tick() so\n // they can work properly in FakeAsyncTest\n const originalClockFn = jasmine[symbol('clock')] = jasmine['clock'];\n jasmine['clock'] = function () {\n const clock = originalClockFn.apply(this, arguments);\n if (!clock[symbol('patched')]) {\n clock[symbol('patched')] = symbol('patched');\n const originalTick = clock[symbol('tick')] = clock.tick;\n clock.tick = function () {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n return fakeAsyncZoneSpec.tick.apply(fakeAsyncZoneSpec, arguments);\n }\n return originalTick.apply(this, arguments);\n };\n const originalMockDate = clock[symbol('mockDate')] = clock.mockDate;\n clock.mockDate = function () {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n const dateTime = arguments.length > 0 ? arguments[0] : new Date();\n return fakeAsyncZoneSpec.setFakeBaseSystemTime.apply(fakeAsyncZoneSpec, dateTime && typeof dateTime.getTime === 'function' ? [dateTime.getTime()] : arguments);\n }\n return originalMockDate.apply(this, arguments);\n };\n // for auto go into fakeAsync feature, we need the flag to enable it\n if (enableAutoFakeAsyncWhenClockPatched) {\n ['install', 'uninstall'].forEach(methodName => {\n const originalClockFn = clock[symbol(methodName)] = clock[methodName];\n clock[methodName] = function () {\n const FakeAsyncTestZoneSpec = Zone['FakeAsyncTestZoneSpec'];\n if (FakeAsyncTestZoneSpec) {\n jasmine[symbol('clockInstalled')] = 'install' === methodName;\n return;\n }\n return originalClockFn.apply(this, arguments);\n };\n });\n }\n }\n return clock;\n };\n }\n // monkey patch createSpyObj to make properties enumerable to true\n if (!jasmine[Zone.__symbol__('createSpyObj')]) {\n const originalCreateSpyObj = jasmine.createSpyObj;\n jasmine[Zone.__symbol__('createSpyObj')] = originalCreateSpyObj;\n jasmine.createSpyObj = function () {\n const args = Array.prototype.slice.call(arguments);\n const propertyNames = args.length >= 3 ? args[2] : null;\n let spyObj;\n if (propertyNames) {\n const defineProperty = Object.defineProperty;\n Object.defineProperty = function (obj, p, attributes) {\n return defineProperty.call(this, obj, p, {\n ...attributes,\n configurable: true,\n enumerable: true\n });\n };\n try {\n spyObj = originalCreateSpyObj.apply(this, args);\n } finally {\n Object.defineProperty = defineProperty;\n }\n } else {\n spyObj = originalCreateSpyObj.apply(this, args);\n }\n return spyObj;\n };\n }\n /**\n * Gets a function wrapping the body of a Jasmine `describe` block to execute in a\n * synchronous-only zone.\n */\n function wrapDescribeInZone(description, describeBody) {\n return function () {\n // Create a synchronous-only zone in which to run `describe` blocks in order to raise an\n // error if any asynchronous operations are attempted inside of a `describe`.\n const syncZone = ambientZone.fork(new SyncTestZoneSpec(`jasmine.describe#${description}`));\n return syncZone.run(describeBody, this, arguments);\n };\n }\n function runInTestZone(testBody, applyThis, queueRunner, done) {\n const isClockInstalled = !!jasmine[symbol('clockInstalled')];\n queueRunner.testProxyZoneSpec;\n const testProxyZone = queueRunner.testProxyZone;\n if (isClockInstalled && enableAutoFakeAsyncWhenClockPatched) {\n // auto run a fakeAsync\n const fakeAsyncModule = Zone[Zone.__symbol__('fakeAsyncTest')];\n if (fakeAsyncModule && typeof fakeAsyncModule.fakeAsync === 'function') {\n testBody = fakeAsyncModule.fakeAsync(testBody);\n }\n }\n if (done) {\n return testProxyZone.run(testBody, applyThis, [done]);\n } else {\n return testProxyZone.run(testBody, applyThis);\n }\n }\n /**\n * Gets a function wrapping the body of a Jasmine `it/beforeEach/afterEach` block to\n * execute in a ProxyZone zone.\n * This will run in `testProxyZone`. The `testProxyZone` will be reset by the `ZoneQueueRunner`\n */\n function wrapTestInZone(testBody) {\n // The `done` callback is only passed through if the function expects at least one argument.\n // Note we have to make a function with correct number of arguments, otherwise jasmine will\n // think that all functions are sync or async.\n return testBody && (testBody.length ? function (done) {\n return runInTestZone(testBody, this, this.queueRunner, done);\n } : function () {\n return runInTestZone(testBody, this, this.queueRunner);\n });\n }\n const QueueRunner = jasmine.QueueRunner;\n jasmine.QueueRunner = function (_super) {\n __extends(ZoneQueueRunner, _super);\n function ZoneQueueRunner(attrs) {\n if (attrs.onComplete) {\n attrs.onComplete = (fn => () => {\n // All functions are done, clear the test zone.\n this.testProxyZone = null;\n this.testProxyZoneSpec = null;\n ambientZone.scheduleMicroTask('jasmine.onComplete', fn);\n })(attrs.onComplete);\n }\n const nativeSetTimeout = global[Zone.__symbol__('setTimeout')];\n const nativeClearTimeout = global[Zone.__symbol__('clearTimeout')];\n if (nativeSetTimeout) {\n // should run setTimeout inside jasmine outside of zone\n attrs.timeout = {\n setTimeout: nativeSetTimeout ? nativeSetTimeout : global.setTimeout,\n clearTimeout: nativeClearTimeout ? nativeClearTimeout : global.clearTimeout\n };\n }\n // create a userContext to hold the queueRunner itself\n // so we can access the testProxy in it/xit/beforeEach ...\n if (jasmine.UserContext) {\n if (!attrs.userContext) {\n attrs.userContext = new jasmine.UserContext();\n }\n attrs.userContext.queueRunner = this;\n } else {\n if (!attrs.userContext) {\n attrs.userContext = {};\n }\n attrs.userContext.queueRunner = this;\n }\n // patch attrs.onException\n const onException = attrs.onException;\n attrs.onException = function (error) {\n if (error && error.message === 'Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.') {\n // jasmine timeout, we can make the error message more\n // reasonable to tell what tasks are pending\n const proxyZoneSpec = this && this.testProxyZoneSpec;\n if (proxyZoneSpec) {\n const pendingTasksInfo = proxyZoneSpec.getAndClearPendingTasksInfo();\n try {\n // try catch here in case error.message is not writable\n error.message += pendingTasksInfo;\n } catch (err) {}\n }\n }\n if (onException) {\n onException.call(this, error);\n }\n };\n _super.call(this, attrs);\n }\n ZoneQueueRunner.prototype.execute = function () {\n let zone = Zone.current;\n let isChildOfAmbientZone = false;\n while (zone) {\n if (zone === ambientZone) {\n isChildOfAmbientZone = true;\n break;\n }\n zone = zone.parent;\n }\n if (!isChildOfAmbientZone) throw new Error('Unexpected Zone: ' + Zone.current.name);\n // This is the zone which will be used for running individual tests.\n // It will be a proxy zone, so that the tests function can retroactively install\n // different zones.\n // Example:\n // - In beforeEach() do childZone = Zone.current.fork(...);\n // - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the\n // zone outside of fakeAsync it will be able to escape the fakeAsync rules.\n // - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add\n // fakeAsync behavior to the childZone.\n this.testProxyZoneSpec = new ProxyZoneSpec();\n this.testProxyZone = ambientZone.fork(this.testProxyZoneSpec);\n if (!Zone.currentTask) {\n // if we are not running in a task then if someone would register a\n // element.addEventListener and then calling element.click() the\n // addEventListener callback would think that it is the top most task and would\n // drain the microtask queue on element.click() which would be incorrect.\n // For this reason we always force a task when running jasmine tests.\n Zone.current.scheduleMicroTask('jasmine.execute().forceTask', () => QueueRunner.prototype.execute.call(this));\n } else {\n _super.prototype.execute.call(this);\n }\n };\n return ZoneQueueRunner;\n }(QueueRunner);\n });\n}\nfunction patchJest(Zone) {\n Zone.__load_patch('jest', (context, Zone, api) => {\n if (typeof jest === 'undefined' || jest['__zone_patch__']) {\n return;\n }\n // From jest 29 and jest-preset-angular v13, the module transform logic\n // changed, and now jest-preset-angular use the use the tsconfig target\n // other than the hardcoded one, https://github.com/thymikee/jest-preset-angular/issues/2010\n // But jest-angular-preset doesn't introduce the @babel/plugin-transform-async-to-generator\n // which is needed by angular since `async/await` still need to be transformed\n // to promise for ES2017+ target.\n // So for now, we disable to output the uncaught error console log for a temp solution,\n // until jest-preset-angular find a proper solution.\n Zone[api.symbol('ignoreConsoleErrorUncaughtError')] = true;\n jest['__zone_patch__'] = true;\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n if (!ProxyZoneSpec) {\n throw new Error('Missing ProxyZoneSpec');\n }\n const rootZone = Zone.current;\n const syncZone = rootZone.fork(new SyncTestZoneSpec('jest.describe'));\n const proxyZoneSpec = new ProxyZoneSpec();\n const proxyZone = rootZone.fork(proxyZoneSpec);\n function wrapDescribeFactoryInZone(originalJestFn) {\n return function (...tableArgs) {\n const originalDescribeFn = originalJestFn.apply(this, tableArgs);\n return function (...args) {\n args[1] = wrapDescribeInZone(args[1]);\n return originalDescribeFn.apply(this, args);\n };\n };\n }\n function wrapTestFactoryInZone(originalJestFn) {\n return function (...tableArgs) {\n return function (...args) {\n args[1] = wrapTestInZone(args[1]);\n return originalJestFn.apply(this, tableArgs).apply(this, args);\n };\n };\n }\n /**\n * Gets a function wrapping the body of a jest `describe` block to execute in a\n * synchronous-only zone.\n */\n function wrapDescribeInZone(describeBody) {\n return function (...args) {\n return syncZone.run(describeBody, this, args);\n };\n }\n /**\n * Gets a function wrapping the body of a jest `it/beforeEach/afterEach` block to\n * execute in a ProxyZone zone.\n * This will run in the `proxyZone`.\n */\n function wrapTestInZone(testBody, isTestFunc = false) {\n if (typeof testBody !== 'function') {\n return testBody;\n }\n const wrappedFunc = function () {\n if (Zone[api.symbol('useFakeTimersCalled')] === true && testBody && !testBody.isFakeAsync) {\n // jest.useFakeTimers is called, run into fakeAsyncTest automatically.\n const fakeAsyncModule = Zone[Zone.__symbol__('fakeAsyncTest')];\n if (fakeAsyncModule && typeof fakeAsyncModule.fakeAsync === 'function') {\n testBody = fakeAsyncModule.fakeAsync(testBody);\n }\n }\n proxyZoneSpec.isTestFunc = isTestFunc;\n return proxyZone.run(testBody, null, arguments);\n };\n // Update the length of wrappedFunc to be the same as the length of the testBody\n // So jest core can handle whether the test function has `done()` or not correctly\n Object.defineProperty(wrappedFunc, 'length', {\n configurable: true,\n writable: true,\n enumerable: false\n });\n wrappedFunc.length = testBody.length;\n return wrappedFunc;\n }\n ['describe', 'xdescribe', 'fdescribe'].forEach(methodName => {\n let originalJestFn = context[methodName];\n if (context[Zone.__symbol__(methodName)]) {\n return;\n }\n context[Zone.__symbol__(methodName)] = originalJestFn;\n context[methodName] = function (...args) {\n args[1] = wrapDescribeInZone(args[1]);\n return originalJestFn.apply(this, args);\n };\n context[methodName].each = wrapDescribeFactoryInZone(originalJestFn.each);\n });\n context.describe.only = context.fdescribe;\n context.describe.skip = context.xdescribe;\n ['it', 'xit', 'fit', 'test', 'xtest'].forEach(methodName => {\n let originalJestFn = context[methodName];\n if (context[Zone.__symbol__(methodName)]) {\n return;\n }\n context[Zone.__symbol__(methodName)] = originalJestFn;\n context[methodName] = function (...args) {\n args[1] = wrapTestInZone(args[1], true);\n return originalJestFn.apply(this, args);\n };\n context[methodName].each = wrapTestFactoryInZone(originalJestFn.each);\n context[methodName].todo = originalJestFn.todo;\n context[methodName].failing = originalJestFn.failing;\n });\n context.it.only = context.fit;\n context.it.skip = context.xit;\n context.test.only = context.fit;\n context.test.skip = context.xit;\n ['beforeEach', 'afterEach', 'beforeAll', 'afterAll'].forEach(methodName => {\n let originalJestFn = context[methodName];\n if (context[Zone.__symbol__(methodName)]) {\n return;\n }\n context[Zone.__symbol__(methodName)] = originalJestFn;\n context[methodName] = function (...args) {\n args[0] = wrapTestInZone(args[0]);\n return originalJestFn.apply(this, args);\n };\n });\n Zone.patchJestObject = function patchJestObject(Timer, isModern = false) {\n // check whether currently the test is inside fakeAsync()\n function isPatchingFakeTimer() {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n return !!fakeAsyncZoneSpec;\n }\n // check whether the current function is inside `test/it` or other methods\n // such as `describe/beforeEach`\n function isInTestFunc() {\n const proxyZoneSpec = Zone.current.get('ProxyZoneSpec');\n return proxyZoneSpec && proxyZoneSpec.isTestFunc;\n }\n if (Timer[api.symbol('fakeTimers')]) {\n return;\n }\n Timer[api.symbol('fakeTimers')] = true;\n // patch jest fakeTimer internal method to make sure no console.warn print out\n api.patchMethod(Timer, '_checkFakeTimers', delegate => {\n return function (self, args) {\n if (isPatchingFakeTimer()) {\n return true;\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch useFakeTimers(), set useFakeTimersCalled flag, and make test auto run into fakeAsync\n api.patchMethod(Timer, 'useFakeTimers', delegate => {\n return function (self, args) {\n Zone[api.symbol('useFakeTimersCalled')] = true;\n if (isModern || isInTestFunc()) {\n return delegate.apply(self, args);\n }\n return self;\n };\n });\n // patch useRealTimers(), unset useFakeTimers flag\n api.patchMethod(Timer, 'useRealTimers', delegate => {\n return function (self, args) {\n Zone[api.symbol('useFakeTimersCalled')] = false;\n if (isModern || isInTestFunc()) {\n return delegate.apply(self, args);\n }\n return self;\n };\n });\n // patch setSystemTime(), call setCurrentRealTime() in the fakeAsyncTest\n api.patchMethod(Timer, 'setSystemTime', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec && isPatchingFakeTimer()) {\n fakeAsyncZoneSpec.setFakeBaseSystemTime(args[0]);\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch getSystemTime(), call getCurrentRealTime() in the fakeAsyncTest\n api.patchMethod(Timer, 'getRealSystemTime', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec && isPatchingFakeTimer()) {\n return fakeAsyncZoneSpec.getRealSystemTime();\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch runAllTicks(), run all microTasks inside fakeAsync\n api.patchMethod(Timer, 'runAllTicks', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.flushMicrotasks();\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch runAllTimers(), run all macroTasks inside fakeAsync\n api.patchMethod(Timer, 'runAllTimers', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.flush(100, true);\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch advanceTimersByTime(), call tick() in the fakeAsyncTest\n api.patchMethod(Timer, 'advanceTimersByTime', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.tick(args[0]);\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch runOnlyPendingTimers(), call flushOnlyPendingTimers() in the fakeAsyncTest\n api.patchMethod(Timer, 'runOnlyPendingTimers', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.flushOnlyPendingTimers();\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch advanceTimersToNextTimer(), call tickToNext() in the fakeAsyncTest\n api.patchMethod(Timer, 'advanceTimersToNextTimer', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.tickToNext(args[0]);\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch clearAllTimers(), call removeAllTimers() in the fakeAsyncTest\n api.patchMethod(Timer, 'clearAllTimers', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.removeAllTimers();\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch getTimerCount(), call getTimerCount() in the fakeAsyncTest\n api.patchMethod(Timer, 'getTimerCount', delegate => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n return fakeAsyncZoneSpec.getTimerCount();\n } else {\n return delegate.apply(self, args);\n }\n };\n });\n };\n });\n}\nfunction patchMocha(Zone) {\n Zone.__load_patch('mocha', (global, Zone) => {\n const Mocha = global.Mocha;\n if (typeof Mocha === 'undefined') {\n // return if Mocha is not available, because now zone-testing\n // will load mocha patch with jasmine/jest patch\n return;\n }\n if (typeof Zone === 'undefined') {\n throw new Error('Missing Zone.js');\n }\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n if (!ProxyZoneSpec) {\n throw new Error('Missing ProxyZoneSpec');\n }\n if (Mocha['__zone_patch__']) {\n throw new Error('\"Mocha\" has already been patched with \"Zone\".');\n }\n Mocha['__zone_patch__'] = true;\n const rootZone = Zone.current;\n const syncZone = rootZone.fork(new SyncTestZoneSpec('Mocha.describe'));\n let testZone = null;\n const suiteZone = rootZone.fork(new ProxyZoneSpec());\n const mochaOriginal = {\n after: global.after,\n afterEach: global.afterEach,\n before: global.before,\n beforeEach: global.beforeEach,\n describe: global.describe,\n it: global.it\n };\n function modifyArguments(args, syncTest, asyncTest) {\n for (let i = 0; i < args.length; i++) {\n let arg = args[i];\n if (typeof arg === 'function') {\n // The `done` callback is only passed through if the function expects at\n // least one argument.\n // Note we have to make a function with correct number of arguments,\n // otherwise mocha will\n // think that all functions are sync or async.\n args[i] = arg.length === 0 ? syncTest(arg) : asyncTest(arg);\n // Mocha uses toString to view the test body in the result list, make sure we return the\n // correct function body\n args[i].toString = function () {\n return arg.toString();\n };\n }\n }\n return args;\n }\n function wrapDescribeInZone(args) {\n const syncTest = function (fn) {\n return function () {\n return syncZone.run(fn, this, arguments);\n };\n };\n return modifyArguments(args, syncTest);\n }\n function wrapTestInZone(args) {\n const asyncTest = function (fn) {\n return function (done) {\n return testZone.run(fn, this, [done]);\n };\n };\n const syncTest = function (fn) {\n return function () {\n return testZone.run(fn, this);\n };\n };\n return modifyArguments(args, syncTest, asyncTest);\n }\n function wrapSuiteInZone(args) {\n const asyncTest = function (fn) {\n return function (done) {\n return suiteZone.run(fn, this, [done]);\n };\n };\n const syncTest = function (fn) {\n return function () {\n return suiteZone.run(fn, this);\n };\n };\n return modifyArguments(args, syncTest, asyncTest);\n }\n global.describe = global.suite = function () {\n return mochaOriginal.describe.apply(this, wrapDescribeInZone(arguments));\n };\n global.xdescribe = global.suite.skip = global.describe.skip = function () {\n return mochaOriginal.describe.skip.apply(this, wrapDescribeInZone(arguments));\n };\n global.describe.only = global.suite.only = function () {\n return mochaOriginal.describe.only.apply(this, wrapDescribeInZone(arguments));\n };\n global.it = global.specify = global.test = function () {\n return mochaOriginal.it.apply(this, wrapTestInZone(arguments));\n };\n global.xit = global.xspecify = global.it.skip = function () {\n return mochaOriginal.it.skip.apply(this, wrapTestInZone(arguments));\n };\n global.it.only = global.test.only = function () {\n return mochaOriginal.it.only.apply(this, wrapTestInZone(arguments));\n };\n global.after = global.suiteTeardown = function () {\n return mochaOriginal.after.apply(this, wrapSuiteInZone(arguments));\n };\n global.afterEach = global.teardown = function () {\n return mochaOriginal.afterEach.apply(this, wrapTestInZone(arguments));\n };\n global.before = global.suiteSetup = function () {\n return mochaOriginal.before.apply(this, wrapSuiteInZone(arguments));\n };\n global.beforeEach = global.setup = function () {\n return mochaOriginal.beforeEach.apply(this, wrapTestInZone(arguments));\n };\n ((originalRunTest, originalRun) => {\n Mocha.Runner.prototype.runTest = function (fn) {\n Zone.current.scheduleMicroTask('mocha.forceTask', () => {\n originalRunTest.call(this, fn);\n });\n };\n Mocha.Runner.prototype.run = function (fn) {\n this.on('test', e => {\n testZone = rootZone.fork(new ProxyZoneSpec());\n });\n this.on('fail', (test, err) => {\n const proxyZoneSpec = testZone && testZone.get('ProxyZoneSpec');\n if (proxyZoneSpec && err) {\n try {\n // try catch here in case err.message is not writable\n err.message += proxyZoneSpec.getAndClearPendingTasksInfo();\n } catch (error) {}\n }\n });\n return originalRun.call(this, fn);\n };\n })(Mocha.Runner.prototype.runTest, Mocha.Runner.prototype.run);\n });\n}\nconst global$2 = globalThis;\n// __Zone_symbol_prefix global can be used to override the default zone\n// symbol prefix with a custom one if needed.\nfunction __symbol__(name) {\n const symbolPrefix = global$2['__Zone_symbol_prefix'] || '__zone_symbol__';\n return symbolPrefix + name;\n}\nconst __global = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global;\nclass AsyncTestZoneSpec {\n finishCallback;\n failCallback;\n // Needs to be a getter and not a plain property in order run this just-in-time. Otherwise\n // `__symbol__` would be evaluated during top-level execution prior to the Zone prefix being\n // changed for tests.\n static get symbolParentUnresolved() {\n return __symbol__('parentUnresolved');\n }\n _pendingMicroTasks = false;\n _pendingMacroTasks = false;\n _alreadyErrored = false;\n _isSync = false;\n _existingFinishTimer = null;\n entryFunction = null;\n runZone = Zone.current;\n unresolvedChainedPromiseCount = 0;\n supportWaitUnresolvedChainedPromise = false;\n constructor(finishCallback, failCallback, namePrefix) {\n this.finishCallback = finishCallback;\n this.failCallback = failCallback;\n this.name = 'asyncTestZone for ' + namePrefix;\n this.properties = {\n 'AsyncTestZoneSpec': this\n };\n this.supportWaitUnresolvedChainedPromise = __global[__symbol__('supportWaitUnResolvedChainedPromise')] === true;\n }\n isUnresolvedChainedPromisePending() {\n return this.unresolvedChainedPromiseCount > 0;\n }\n _finishCallbackIfDone() {\n // NOTE: Technically the `onHasTask` could fire together with the initial synchronous\n // completion in `onInvoke`. `onHasTask` might call this method when it captured e.g.\n // microtasks in the proxy zone that now complete as part of this async zone run.\n // Consider the following scenario:\n // 1. A test `beforeEach` schedules a microtask in the ProxyZone.\n // 2. An actual empty `it` spec executes in the AsyncTestZone` (using e.g. `waitForAsync`).\n // 3. The `onInvoke` invokes `_finishCallbackIfDone` because the spec runs synchronously.\n // 4. We wait the scheduled timeout (see below) to account for unhandled promises.\n // 5. The microtask from (1) finishes and `onHasTask` is invoked.\n // --> We register a second `_finishCallbackIfDone` even though we have scheduled a timeout.\n // If the finish timeout from below is already scheduled, terminate the existing scheduled\n // finish invocation, avoiding calling `jasmine` `done` multiple times. *Note* that we would\n // want to schedule a new finish callback in case the task state changes again.\n if (this._existingFinishTimer !== null) {\n clearTimeout(this._existingFinishTimer);\n this._existingFinishTimer = null;\n }\n if (!(this._pendingMicroTasks || this._pendingMacroTasks || this.supportWaitUnresolvedChainedPromise && this.isUnresolvedChainedPromisePending())) {\n // We wait until the next tick because we would like to catch unhandled promises which could\n // cause test logic to be executed. In such cases we cannot finish with tasks pending then.\n this.runZone.run(() => {\n this._existingFinishTimer = setTimeout(() => {\n if (!this._alreadyErrored && !(this._pendingMicroTasks || this._pendingMacroTasks)) {\n this.finishCallback();\n }\n }, 0);\n });\n }\n }\n patchPromiseForTest() {\n if (!this.supportWaitUnresolvedChainedPromise) {\n return;\n }\n const patchPromiseForTest = Promise[Zone.__symbol__('patchPromiseForTest')];\n if (patchPromiseForTest) {\n patchPromiseForTest();\n }\n }\n unPatchPromiseForTest() {\n if (!this.supportWaitUnresolvedChainedPromise) {\n return;\n }\n const unPatchPromiseForTest = Promise[Zone.__symbol__('unPatchPromiseForTest')];\n if (unPatchPromiseForTest) {\n unPatchPromiseForTest();\n }\n }\n // ZoneSpec implementation below.\n name;\n properties;\n onScheduleTask(delegate, current, target, task) {\n if (task.type !== 'eventTask') {\n this._isSync = false;\n }\n if (task.type === 'microTask' && task.data && task.data instanceof Promise) {\n // check whether the promise is a chained promise\n if (task.data[AsyncTestZoneSpec.symbolParentUnresolved] === true) {\n // chained promise is being scheduled\n this.unresolvedChainedPromiseCount--;\n }\n }\n return delegate.scheduleTask(target, task);\n }\n onInvokeTask(delegate, current, target, task, applyThis, applyArgs) {\n if (task.type !== 'eventTask') {\n this._isSync = false;\n }\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n onCancelTask(delegate, current, target, task) {\n if (task.type !== 'eventTask') {\n this._isSync = false;\n }\n return delegate.cancelTask(target, task);\n }\n // Note - we need to use onInvoke at the moment to call finish when a test is\n // fully synchronous. TODO(juliemr): remove this when the logic for\n // onHasTask changes and it calls whenever the task queues are dirty.\n // updated by(JiaLiPassion), only call finish callback when no task\n // was scheduled/invoked/canceled.\n onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {\n if (!this.entryFunction) {\n this.entryFunction = delegate;\n }\n try {\n this._isSync = true;\n return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);\n } finally {\n // We need to check the delegate is the same as entryFunction or not.\n // Consider the following case.\n //\n // asyncTestZone.run(() => { // Here the delegate will be the entryFunction\n // Zone.current.run(() => { // Here the delegate will not be the entryFunction\n // });\n // });\n //\n // We only want to check whether there are async tasks scheduled\n // for the entry function.\n if (this._isSync && this.entryFunction === delegate) {\n this._finishCallbackIfDone();\n }\n }\n }\n onHandleError(parentZoneDelegate, currentZone, targetZone, error) {\n // Let the parent try to handle the error.\n const result = parentZoneDelegate.handleError(targetZone, error);\n if (result) {\n this.failCallback(error);\n this._alreadyErrored = true;\n }\n return false;\n }\n onHasTask(delegate, current, target, hasTaskState) {\n delegate.hasTask(target, hasTaskState);\n // We should only trigger finishCallback when the target zone is the AsyncTestZone\n // Consider the following cases.\n //\n // const childZone = asyncTestZone.fork({\n // name: 'child',\n // onHasTask: ...\n // });\n //\n // So we have nested zones declared the onHasTask hook, in this case,\n // the onHasTask will be triggered twice, and cause the finishCallbackIfDone()\n // is also be invoked twice. So we need to only trigger the finishCallbackIfDone()\n // when the current zone is the same as the target zone.\n if (current !== target) {\n return;\n }\n if (hasTaskState.change == 'microTask') {\n this._pendingMicroTasks = hasTaskState.microTask;\n this._finishCallbackIfDone();\n } else if (hasTaskState.change == 'macroTask') {\n this._pendingMacroTasks = hasTaskState.macroTask;\n this._finishCallbackIfDone();\n }\n }\n}\nfunction patchAsyncTest(Zone) {\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['AsyncTestZoneSpec'] = AsyncTestZoneSpec;\n Zone.__load_patch('asynctest', (global, Zone, api) => {\n /**\n * Wraps a test function in an asynchronous test zone. The test will automatically\n * complete when all asynchronous calls within this zone are done.\n */\n Zone[api.symbol('asyncTest')] = function asyncTest(fn) {\n // If we're running using the Jasmine test framework, adapt to call the 'done'\n // function when asynchronous activity is finished.\n if (global.jasmine) {\n // Not using an arrow function to preserve context passed from call site\n return function (done) {\n if (!done) {\n // if we run beforeEach in @angular/core/testing/testing_internal then we get no done\n // fake it here and assume sync.\n done = function () {};\n done.fail = function (e) {\n throw e;\n };\n }\n runInTestZone(fn, this, done, err => {\n if (typeof err === 'string') {\n return done.fail(new Error(err));\n } else {\n done.fail(err);\n }\n });\n };\n }\n // Otherwise, return a promise which will resolve when asynchronous activity\n // is finished. This will be correctly consumed by the Mocha framework with\n // it('...', async(myFn)); or can be used in a custom framework.\n // Not using an arrow function to preserve context passed from call site\n return function () {\n return new Promise((finishCallback, failCallback) => {\n runInTestZone(fn, this, finishCallback, failCallback);\n });\n };\n };\n function runInTestZone(fn, context, finishCallback, failCallback) {\n const currentZone = Zone.current;\n const AsyncTestZoneSpec = Zone['AsyncTestZoneSpec'];\n if (AsyncTestZoneSpec === undefined) {\n throw new Error('AsyncTestZoneSpec is needed for the async() test helper but could not be found. ' + 'Please make sure that your environment includes zone.js/plugins/async-test');\n }\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n if (!ProxyZoneSpec) {\n throw new Error('ProxyZoneSpec is needed for the async() test helper but could not be found. ' + 'Please make sure that your environment includes zone.js/plugins/proxy');\n }\n const proxyZoneSpec = ProxyZoneSpec.get();\n ProxyZoneSpec.assertPresent();\n // We need to create the AsyncTestZoneSpec outside the ProxyZone.\n // If we do it in ProxyZone then we will get to infinite recursion.\n const proxyZone = Zone.current.getZoneWith('ProxyZoneSpec');\n const previousDelegate = proxyZoneSpec.getDelegate();\n proxyZone.parent.run(() => {\n const testZoneSpec = new AsyncTestZoneSpec(() => {\n // Need to restore the original zone.\n if (proxyZoneSpec.getDelegate() == testZoneSpec) {\n // Only reset the zone spec if it's\n // still this one. Otherwise, assume\n // it's OK.\n proxyZoneSpec.setDelegate(previousDelegate);\n }\n testZoneSpec.unPatchPromiseForTest();\n currentZone.run(() => {\n finishCallback();\n });\n }, error => {\n // Need to restore the original zone.\n if (proxyZoneSpec.getDelegate() == testZoneSpec) {\n // Only reset the zone spec if it's sill this one. Otherwise, assume it's OK.\n proxyZoneSpec.setDelegate(previousDelegate);\n }\n testZoneSpec.unPatchPromiseForTest();\n currentZone.run(() => {\n failCallback(error);\n });\n }, 'test');\n proxyZoneSpec.setDelegate(testZoneSpec);\n testZoneSpec.patchPromiseForTest();\n });\n return Zone.current.runGuarded(fn, context);\n }\n });\n}\nconst global$1 = typeof window === 'object' && window || typeof self === 'object' && self || globalThis.global;\nconst OriginalDate = global$1.Date;\n// Since when we compile this file to `es2015`, and if we define\n// this `FakeDate` as `class FakeDate`, and then set `FakeDate.prototype`\n// there will be an error which is `Cannot assign to read only property 'prototype'`\n// so we need to use function implementation here.\nfunction FakeDate() {\n if (arguments.length === 0) {\n const d = new OriginalDate();\n d.setTime(FakeDate.now());\n return d;\n } else {\n const args = Array.prototype.slice.call(arguments);\n return new OriginalDate(...args);\n }\n}\nFakeDate.now = function () {\n const fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncTestZoneSpec) {\n return fakeAsyncTestZoneSpec.getFakeSystemTime();\n }\n return OriginalDate.now.apply(this, arguments);\n};\nFakeDate.UTC = OriginalDate.UTC;\nFakeDate.parse = OriginalDate.parse;\n// keep a reference for zone patched timer function\nlet patchedTimers;\nconst timeoutCallback = function () {};\nclass Scheduler {\n // Next scheduler id.\n static nextNodeJSId = 1;\n static nextId = -1;\n // Scheduler queue with the tuple of end time and callback function - sorted by end time.\n _schedulerQueue = [];\n // Current simulated time in millis.\n _currentTickTime = 0;\n // Current fake system base time in millis.\n _currentFakeBaseSystemTime = OriginalDate.now();\n // track requeuePeriodicTimer\n _currentTickRequeuePeriodicEntries = [];\n constructor() {}\n static getNextId() {\n const id = patchedTimers.nativeSetTimeout.call(global$1, timeoutCallback, 0);\n patchedTimers.nativeClearTimeout.call(global$1, id);\n if (typeof id === 'number') {\n return id;\n }\n // in NodeJS, we just use a number for fakeAsync, since it will not\n // conflict with native TimeoutId\n return Scheduler.nextNodeJSId++;\n }\n getCurrentTickTime() {\n return this._currentTickTime;\n }\n getFakeSystemTime() {\n return this._currentFakeBaseSystemTime + this._currentTickTime;\n }\n setFakeBaseSystemTime(fakeBaseSystemTime) {\n this._currentFakeBaseSystemTime = fakeBaseSystemTime;\n }\n getRealSystemTime() {\n return OriginalDate.now();\n }\n scheduleFunction(cb, delay, options) {\n options = {\n ...{\n args: [],\n isPeriodic: false,\n isRequestAnimationFrame: false,\n id: -1,\n isRequeuePeriodic: false\n },\n ...options\n };\n let currentId = options.id < 0 ? Scheduler.nextId : options.id;\n Scheduler.nextId = Scheduler.getNextId();\n let endTime = this._currentTickTime + delay;\n // Insert so that scheduler queue remains sorted by end time.\n let newEntry = {\n endTime: endTime,\n id: currentId,\n func: cb,\n args: options.args,\n delay: delay,\n isPeriodic: options.isPeriodic,\n isRequestAnimationFrame: options.isRequestAnimationFrame\n };\n if (options.isRequeuePeriodic) {\n this._currentTickRequeuePeriodicEntries.push(newEntry);\n }\n let i = 0;\n for (; i < this._schedulerQueue.length; i++) {\n let currentEntry = this._schedulerQueue[i];\n if (newEntry.endTime < currentEntry.endTime) {\n break;\n }\n }\n this._schedulerQueue.splice(i, 0, newEntry);\n return currentId;\n }\n removeScheduledFunctionWithId(id) {\n for (let i = 0; i < this._schedulerQueue.length; i++) {\n if (this._schedulerQueue[i].id == id) {\n this._schedulerQueue.splice(i, 1);\n break;\n }\n }\n }\n removeAll() {\n this._schedulerQueue = [];\n }\n getTimerCount() {\n return this._schedulerQueue.length;\n }\n tickToNext(step = 1, doTick, tickOptions) {\n if (this._schedulerQueue.length < step) {\n return;\n }\n // Find the last task currently queued in the scheduler queue and tick\n // till that time.\n const startTime = this._currentTickTime;\n const targetTask = this._schedulerQueue[step - 1];\n this.tick(targetTask.endTime - startTime, doTick, tickOptions);\n }\n tick(millis = 0, doTick, tickOptions) {\n let finalTime = this._currentTickTime + millis;\n let lastCurrentTime = 0;\n tickOptions = Object.assign({\n processNewMacroTasksSynchronously: true\n }, tickOptions);\n // we need to copy the schedulerQueue so nested timeout\n // will not be wrongly called in the current tick\n // https://github.com/angular/angular/issues/33799\n const schedulerQueue = tickOptions.processNewMacroTasksSynchronously ? this._schedulerQueue : this._schedulerQueue.slice();\n if (schedulerQueue.length === 0 && doTick) {\n doTick(millis);\n return;\n }\n while (schedulerQueue.length > 0) {\n // clear requeueEntries before each loop\n this._currentTickRequeuePeriodicEntries = [];\n let current = schedulerQueue[0];\n if (finalTime < current.endTime) {\n // Done processing the queue since it's sorted by endTime.\n break;\n } else {\n // Time to run scheduled function. Remove it from the head of queue.\n let current = schedulerQueue.shift();\n if (!tickOptions.processNewMacroTasksSynchronously) {\n const idx = this._schedulerQueue.indexOf(current);\n if (idx >= 0) {\n this._schedulerQueue.splice(idx, 1);\n }\n }\n lastCurrentTime = this._currentTickTime;\n this._currentTickTime = current.endTime;\n if (doTick) {\n doTick(this._currentTickTime - lastCurrentTime);\n }\n let retval = current.func.apply(global$1, current.isRequestAnimationFrame ? [this._currentTickTime] : current.args);\n if (!retval) {\n // Uncaught exception in the current scheduled function. Stop processing the queue.\n break;\n }\n // check is there any requeue periodic entry is added in\n // current loop, if there is, we need to add to current loop\n if (!tickOptions.processNewMacroTasksSynchronously) {\n this._currentTickRequeuePeriodicEntries.forEach(newEntry => {\n let i = 0;\n for (; i < schedulerQueue.length; i++) {\n const currentEntry = schedulerQueue[i];\n if (newEntry.endTime < currentEntry.endTime) {\n break;\n }\n }\n schedulerQueue.splice(i, 0, newEntry);\n });\n }\n }\n }\n lastCurrentTime = this._currentTickTime;\n this._currentTickTime = finalTime;\n if (doTick) {\n doTick(this._currentTickTime - lastCurrentTime);\n }\n }\n flushOnlyPendingTimers(doTick) {\n if (this._schedulerQueue.length === 0) {\n return 0;\n }\n // Find the last task currently queued in the scheduler queue and tick\n // till that time.\n const startTime = this._currentTickTime;\n const lastTask = this._schedulerQueue[this._schedulerQueue.length - 1];\n this.tick(lastTask.endTime - startTime, doTick, {\n processNewMacroTasksSynchronously: false\n });\n return this._currentTickTime - startTime;\n }\n flush(limit = 20, flushPeriodic = false, doTick) {\n if (flushPeriodic) {\n return this.flushPeriodic(doTick);\n } else {\n return this.flushNonPeriodic(limit, doTick);\n }\n }\n flushPeriodic(doTick) {\n if (this._schedulerQueue.length === 0) {\n return 0;\n }\n // Find the last task currently queued in the scheduler queue and tick\n // till that time.\n const startTime = this._currentTickTime;\n const lastTask = this._schedulerQueue[this._schedulerQueue.length - 1];\n this.tick(lastTask.endTime - startTime, doTick);\n return this._currentTickTime - startTime;\n }\n flushNonPeriodic(limit, doTick) {\n const startTime = this._currentTickTime;\n let lastCurrentTime = 0;\n let count = 0;\n while (this._schedulerQueue.length > 0) {\n count++;\n if (count > limit) {\n throw new Error('flush failed after reaching the limit of ' + limit + ' tasks. Does your code use a polling timeout?');\n }\n // flush only non-periodic timers.\n // If the only remaining tasks are periodic(or requestAnimationFrame), finish flushing.\n if (this._schedulerQueue.filter(task => !task.isPeriodic && !task.isRequestAnimationFrame).length === 0) {\n break;\n }\n const current = this._schedulerQueue.shift();\n lastCurrentTime = this._currentTickTime;\n this._currentTickTime = current.endTime;\n if (doTick) {\n // Update any secondary schedulers like Jasmine mock Date.\n doTick(this._currentTickTime - lastCurrentTime);\n }\n const retval = current.func.apply(global$1, current.args);\n if (!retval) {\n // Uncaught exception in the current scheduled function. Stop processing the queue.\n break;\n }\n }\n return this._currentTickTime - startTime;\n }\n}\nclass FakeAsyncTestZoneSpec {\n trackPendingRequestAnimationFrame;\n macroTaskOptions;\n static assertInZone() {\n if (Zone.current.get('FakeAsyncTestZoneSpec') == null) {\n throw new Error('The code should be running in the fakeAsync zone to call this function');\n }\n }\n _scheduler = new Scheduler();\n _microtasks = [];\n _lastError = null;\n _uncaughtPromiseErrors = Promise[Zone.__symbol__('uncaughtPromiseErrors')];\n pendingPeriodicTimers = [];\n pendingTimers = [];\n patchDateLocked = false;\n constructor(namePrefix, trackPendingRequestAnimationFrame = false, macroTaskOptions) {\n this.trackPendingRequestAnimationFrame = trackPendingRequestAnimationFrame;\n this.macroTaskOptions = macroTaskOptions;\n this.name = 'fakeAsyncTestZone for ' + namePrefix;\n // in case user can't access the construction of FakeAsyncTestSpec\n // user can also define macroTaskOptions by define a global variable.\n if (!this.macroTaskOptions) {\n this.macroTaskOptions = global$1[Zone.__symbol__('FakeAsyncTestMacroTask')];\n }\n }\n _fnAndFlush(fn, completers) {\n return (...args) => {\n fn.apply(global$1, args);\n if (this._lastError === null) {\n // Success\n if (completers.onSuccess != null) {\n completers.onSuccess.apply(global$1);\n }\n // Flush microtasks only on success.\n this.flushMicrotasks();\n } else {\n // Failure\n if (completers.onError != null) {\n completers.onError.apply(global$1);\n }\n }\n // Return true if there were no errors, false otherwise.\n return this._lastError === null;\n };\n }\n static _removeTimer(timers, id) {\n let index = timers.indexOf(id);\n if (index > -1) {\n timers.splice(index, 1);\n }\n }\n _dequeueTimer(id) {\n return () => {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id);\n };\n }\n _requeuePeriodicTimer(fn, interval, args, id) {\n return () => {\n // Requeue the timer callback if it's not been canceled.\n if (this.pendingPeriodicTimers.indexOf(id) !== -1) {\n this._scheduler.scheduleFunction(fn, interval, {\n args,\n isPeriodic: true,\n id,\n isRequeuePeriodic: true\n });\n }\n };\n }\n _dequeuePeriodicTimer(id) {\n return () => {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id);\n };\n }\n _setTimeout(fn, delay, args, isTimer = true) {\n let removeTimerFn = this._dequeueTimer(Scheduler.nextId);\n // Queue the callback and dequeue the timer on success and error.\n let cb = this._fnAndFlush(fn, {\n onSuccess: removeTimerFn,\n onError: removeTimerFn\n });\n let id = this._scheduler.scheduleFunction(cb, delay, {\n args,\n isRequestAnimationFrame: !isTimer\n });\n if (isTimer) {\n this.pendingTimers.push(id);\n }\n return id;\n }\n _clearTimeout(id) {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id);\n this._scheduler.removeScheduledFunctionWithId(id);\n }\n _setInterval(fn, interval, args) {\n let id = Scheduler.nextId;\n let completers = {\n onSuccess: null,\n onError: this._dequeuePeriodicTimer(id)\n };\n let cb = this._fnAndFlush(fn, completers);\n // Use the callback created above to requeue on success.\n completers.onSuccess = this._requeuePeriodicTimer(cb, interval, args, id);\n // Queue the callback and dequeue the periodic timer only on error.\n this._scheduler.scheduleFunction(cb, interval, {\n args,\n isPeriodic: true\n });\n this.pendingPeriodicTimers.push(id);\n return id;\n }\n _clearInterval(id) {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id);\n this._scheduler.removeScheduledFunctionWithId(id);\n }\n _resetLastErrorAndThrow() {\n let error = this._lastError || this._uncaughtPromiseErrors[0];\n this._uncaughtPromiseErrors.length = 0;\n this._lastError = null;\n throw error;\n }\n getCurrentTickTime() {\n return this._scheduler.getCurrentTickTime();\n }\n getFakeSystemTime() {\n return this._scheduler.getFakeSystemTime();\n }\n setFakeBaseSystemTime(realTime) {\n this._scheduler.setFakeBaseSystemTime(realTime);\n }\n getRealSystemTime() {\n return this._scheduler.getRealSystemTime();\n }\n static patchDate() {\n if (!!global$1[Zone.__symbol__('disableDatePatching')]) {\n // we don't want to patch global Date\n // because in some case, global Date\n // is already being patched, we need to provide\n // an option to let user still use their\n // own version of Date.\n return;\n }\n if (global$1['Date'] === FakeDate) {\n // already patched\n return;\n }\n global$1['Date'] = FakeDate;\n FakeDate.prototype = OriginalDate.prototype;\n // try check and reset timers\n // because jasmine.clock().install() may\n // have replaced the global timer\n FakeAsyncTestZoneSpec.checkTimerPatch();\n }\n static resetDate() {\n if (global$1['Date'] === FakeDate) {\n global$1['Date'] = OriginalDate;\n }\n }\n static checkTimerPatch() {\n if (!patchedTimers) {\n throw new Error('Expected timers to have been patched.');\n }\n if (global$1.setTimeout !== patchedTimers.setTimeout) {\n global$1.setTimeout = patchedTimers.setTimeout;\n global$1.clearTimeout = patchedTimers.clearTimeout;\n }\n if (global$1.setInterval !== patchedTimers.setInterval) {\n global$1.setInterval = patchedTimers.setInterval;\n global$1.clearInterval = patchedTimers.clearInterval;\n }\n }\n lockDatePatch() {\n this.patchDateLocked = true;\n FakeAsyncTestZoneSpec.patchDate();\n }\n unlockDatePatch() {\n this.patchDateLocked = false;\n FakeAsyncTestZoneSpec.resetDate();\n }\n tickToNext(steps = 1, doTick, tickOptions = {\n processNewMacroTasksSynchronously: true\n }) {\n if (steps <= 0) {\n return;\n }\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n this._scheduler.tickToNext(steps, doTick, tickOptions);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n }\n tick(millis = 0, doTick, tickOptions = {\n processNewMacroTasksSynchronously: true\n }) {\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n this._scheduler.tick(millis, doTick, tickOptions);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n }\n flushMicrotasks() {\n FakeAsyncTestZoneSpec.assertInZone();\n const flushErrors = () => {\n if (this._lastError !== null || this._uncaughtPromiseErrors.length) {\n // If there is an error stop processing the microtask queue and rethrow the error.\n this._resetLastErrorAndThrow();\n }\n };\n while (this._microtasks.length > 0) {\n let microtask = this._microtasks.shift();\n microtask.func.apply(microtask.target, microtask.args);\n }\n flushErrors();\n }\n flush(limit, flushPeriodic, doTick) {\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n const elapsed = this._scheduler.flush(limit, flushPeriodic, doTick);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n return elapsed;\n }\n flushOnlyPendingTimers(doTick) {\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n const elapsed = this._scheduler.flushOnlyPendingTimers(doTick);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n return elapsed;\n }\n removeAllTimers() {\n FakeAsyncTestZoneSpec.assertInZone();\n this._scheduler.removeAll();\n this.pendingPeriodicTimers = [];\n this.pendingTimers = [];\n }\n getTimerCount() {\n return this._scheduler.getTimerCount() + this._microtasks.length;\n }\n // ZoneSpec implementation below.\n name;\n properties = {\n 'FakeAsyncTestZoneSpec': this\n };\n onScheduleTask(delegate, current, target, task) {\n switch (task.type) {\n case 'microTask':\n let args = task.data && task.data.args;\n // should pass additional arguments to callback if have any\n // currently we know process.nextTick will have such additional\n // arguments\n let additionalArgs;\n if (args) {\n let callbackIndex = task.data.cbIdx;\n if (typeof args.length === 'number' && args.length > callbackIndex + 1) {\n additionalArgs = Array.prototype.slice.call(args, callbackIndex + 1);\n }\n }\n this._microtasks.push({\n func: task.invoke,\n args: additionalArgs,\n target: task.data && task.data.target\n });\n break;\n case 'macroTask':\n switch (task.source) {\n case 'setTimeout':\n task.data['handleId'] = this._setTimeout(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));\n break;\n case 'setImmediate':\n task.data['handleId'] = this._setTimeout(task.invoke, 0, Array.prototype.slice.call(task.data['args'], 1));\n break;\n case 'setInterval':\n task.data['handleId'] = this._setInterval(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));\n break;\n case 'XMLHttpRequest.send':\n throw new Error('Cannot make XHRs from within a fake async test. Request URL: ' + task.data['url']);\n case 'requestAnimationFrame':\n case 'webkitRequestAnimationFrame':\n case 'mozRequestAnimationFrame':\n // Simulate a requestAnimationFrame by using a setTimeout with 16 ms.\n // (60 frames per second)\n task.data['handleId'] = this._setTimeout(task.invoke, 16, task.data['args'], this.trackPendingRequestAnimationFrame);\n break;\n default:\n // user can define which macroTask they want to support by passing\n // macroTaskOptions\n const macroTaskOption = this.findMacroTaskOption(task);\n if (macroTaskOption) {\n const args = task.data && task.data['args'];\n const delay = args && args.length > 1 ? args[1] : 0;\n let callbackArgs = macroTaskOption.callbackArgs ? macroTaskOption.callbackArgs : args;\n if (!!macroTaskOption.isPeriodic) {\n // periodic macroTask, use setInterval to simulate\n task.data['handleId'] = this._setInterval(task.invoke, delay, callbackArgs);\n task.data.isPeriodic = true;\n } else {\n // not periodic, use setTimeout to simulate\n task.data['handleId'] = this._setTimeout(task.invoke, delay, callbackArgs);\n }\n break;\n }\n throw new Error('Unknown macroTask scheduled in fake async test: ' + task.source);\n }\n break;\n case 'eventTask':\n task = delegate.scheduleTask(target, task);\n break;\n }\n return task;\n }\n onCancelTask(delegate, current, target, task) {\n switch (task.source) {\n case 'setTimeout':\n case 'requestAnimationFrame':\n case 'webkitRequestAnimationFrame':\n case 'mozRequestAnimationFrame':\n return this._clearTimeout(task.data['handleId']);\n case 'setInterval':\n return this._clearInterval(task.data['handleId']);\n default:\n // user can define which macroTask they want to support by passing\n // macroTaskOptions\n const macroTaskOption = this.findMacroTaskOption(task);\n if (macroTaskOption) {\n const handleId = task.data['handleId'];\n return macroTaskOption.isPeriodic ? this._clearInterval(handleId) : this._clearTimeout(handleId);\n }\n return delegate.cancelTask(target, task);\n }\n }\n onInvoke(delegate, current, target, callback, applyThis, applyArgs, source) {\n try {\n FakeAsyncTestZoneSpec.patchDate();\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n } finally {\n if (!this.patchDateLocked) {\n FakeAsyncTestZoneSpec.resetDate();\n }\n }\n }\n findMacroTaskOption(task) {\n if (!this.macroTaskOptions) {\n return null;\n }\n for (let i = 0; i < this.macroTaskOptions.length; i++) {\n const macroTaskOption = this.macroTaskOptions[i];\n if (macroTaskOption.source === task.source) {\n return macroTaskOption;\n }\n }\n return null;\n }\n onHandleError(parentZoneDelegate, currentZone, targetZone, error) {\n // ComponentFixture has a special-case handling to detect FakeAsyncTestZoneSpec\n // and prevent rethrowing the error from the onError subscription since it's handled here.\n this._lastError = error;\n return false; // Don't propagate error to parent zone.\n }\n}\nlet _fakeAsyncTestZoneSpec = null;\nfunction getProxyZoneSpec() {\n return Zone && Zone['ProxyZoneSpec'];\n}\nlet _sharedProxyZoneSpec = null;\nlet _sharedProxyZone = null;\n/**\n * Clears out the shared fake async zone for a test.\n * To be called in a global `beforeEach`.\n *\n * @experimental\n */\nfunction resetFakeAsyncZone() {\n if (_fakeAsyncTestZoneSpec) {\n _fakeAsyncTestZoneSpec.unlockDatePatch();\n }\n _fakeAsyncTestZoneSpec = null;\n getProxyZoneSpec()?.get()?.resetDelegate();\n _sharedProxyZoneSpec?.resetDelegate();\n}\n/**\n * Wraps a function to be executed in the fakeAsync zone:\n * - microtasks are manually executed by calling `flushMicrotasks()`,\n * - timers are synchronous, `tick()` simulates the asynchronous passage of time.\n *\n * When flush is `false`, if there are any pending timers at the end of the function,\n * an exception will be thrown.\n *\n * Can be used to wrap inject() calls.\n *\n * ## Example\n *\n * {@example core/testing/ts/fake_async.ts region='basic'}\n *\n * @param fn\n * @param options\n * flush: when true, will drain the macrotask queue after the test function completes.\n * @returns The function wrapped to be executed in the fakeAsync zone\n *\n * @experimental\n */\nfunction fakeAsync(fn, options = {}) {\n const {\n flush = true\n } = options;\n // Not using an arrow function to preserve context passed from call site\n const fakeAsyncFn = function (...args) {\n const ProxyZoneSpec = getProxyZoneSpec();\n if (!ProxyZoneSpec) {\n throw new Error('ProxyZoneSpec is needed for the fakeAsync() test helper but could not be found. ' + 'Make sure that your environment includes zone-testing.js');\n }\n const proxyZoneSpec = ProxyZoneSpec.assertPresent();\n if (Zone.current.get('FakeAsyncTestZoneSpec')) {\n throw new Error('fakeAsync() calls can not be nested');\n }\n try {\n // in case jasmine.clock init a fakeAsyncTestZoneSpec\n if (!_fakeAsyncTestZoneSpec) {\n const FakeAsyncTestZoneSpec = Zone && Zone['FakeAsyncTestZoneSpec'];\n if (proxyZoneSpec.getDelegate() instanceof FakeAsyncTestZoneSpec) {\n throw new Error('fakeAsync() calls can not be nested');\n }\n _fakeAsyncTestZoneSpec = new FakeAsyncTestZoneSpec();\n }\n let res;\n const lastProxyZoneSpec = proxyZoneSpec.getDelegate();\n proxyZoneSpec.setDelegate(_fakeAsyncTestZoneSpec);\n _fakeAsyncTestZoneSpec.lockDatePatch();\n try {\n res = fn.apply(this, args);\n if (flush) {\n _fakeAsyncTestZoneSpec.flush(20, true);\n } else {\n flushMicrotasks();\n }\n } finally {\n proxyZoneSpec.setDelegate(lastProxyZoneSpec);\n }\n if (!flush) {\n if (_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length > 0) {\n throw new Error(`${_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length} ` + `periodic timer(s) still in the queue.`);\n }\n if (_fakeAsyncTestZoneSpec.pendingTimers.length > 0) {\n throw new Error(`${_fakeAsyncTestZoneSpec.pendingTimers.length} timer(s) still in the queue.`);\n }\n }\n return res;\n } finally {\n resetFakeAsyncZone();\n }\n };\n fakeAsyncFn.isFakeAsync = true;\n return fakeAsyncFn;\n}\nfunction _getFakeAsyncZoneSpec() {\n if (_fakeAsyncTestZoneSpec == null) {\n _fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (_fakeAsyncTestZoneSpec == null) {\n throw new Error('The code should be running in the fakeAsync zone to call this function');\n }\n }\n return _fakeAsyncTestZoneSpec;\n}\n/**\n * Simulates the asynchronous passage of time for the timers in the fakeAsync zone.\n *\n * The microtasks queue is drained at the very start of this function and after any timer\n * callback has been executed.\n *\n * ## Example\n *\n * {@example core/testing/ts/fake_async.ts region='basic'}\n *\n * @experimental\n */\nfunction tick(millis = 0, ignoreNestedTimeout = false) {\n _getFakeAsyncZoneSpec().tick(millis, null, ignoreNestedTimeout);\n}\n/**\n * Simulates the asynchronous passage of time for the timers in the fakeAsync zone by\n * draining the macrotask queue until it is empty. The returned value is the milliseconds\n * of time that would have been elapsed.\n *\n * @param maxTurns\n * @returns The simulated time elapsed, in millis.\n *\n * @experimental\n */\nfunction flush(maxTurns) {\n return _getFakeAsyncZoneSpec().flush(maxTurns);\n}\n/**\n * Discard all remaining periodic tasks.\n *\n * @experimental\n */\nfunction discardPeriodicTasks() {\n const zoneSpec = _getFakeAsyncZoneSpec();\n zoneSpec.pendingPeriodicTimers;\n zoneSpec.pendingPeriodicTimers.length = 0;\n}\n/**\n * Wraps a function to be executed in a shared ProxyZone.\n *\n * If no shared ProxyZone exists, one is created and reused for subsequent calls.\n * Useful for wrapping test setup (beforeEach) and test execution (it) when test\n * runner patching isn't available or desired for setting up the ProxyZone.\n *\n * @param fn The function to wrap.\n * @returns A function that executes the original function within the shared ProxyZone.\n *\n * @experimental\n */\nfunction withProxyZone(fn) {\n const autoProxyFn = function (...args) {\n const proxyZoneSpec = getProxyZoneSpec();\n if (proxyZoneSpec === undefined) {\n throw new Error('ProxyZoneSpec is needed for the withProxyZone() test helper but could not be found. ' + 'Make sure that your environment includes zone-testing.js');\n }\n const proxyZone = proxyZoneSpec.get() !== undefined ? Zone.current : getOrCreateRootProxy();\n return proxyZone.run(fn, this, args);\n };\n return autoProxyFn;\n}\nfunction getOrCreateRootProxy() {\n const ProxyZoneSpec = getProxyZoneSpec();\n if (ProxyZoneSpec === undefined) {\n throw new Error('ProxyZoneSpec is needed for withProxyZone but could not be found. ' + 'Make sure that your environment includes zone-testing.js');\n }\n // Ensure the shared ProxyZoneSpec instance exists\n if (_sharedProxyZoneSpec === null) {\n _sharedProxyZoneSpec = new ProxyZoneSpec();\n }\n _sharedProxyZone = Zone.root.fork(_sharedProxyZoneSpec);\n return _sharedProxyZone;\n}\n/**\n * Flush any pending microtasks.\n *\n * @experimental\n */\nfunction flushMicrotasks() {\n _getFakeAsyncZoneSpec().flushMicrotasks();\n}\nfunction patchFakeAsyncTest(Zone) {\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['FakeAsyncTestZoneSpec'] = FakeAsyncTestZoneSpec;\n Zone.__load_patch('fakeasync', (global, Zone, api) => {\n Zone[api.symbol('fakeAsyncTest')] = {\n resetFakeAsyncZone,\n flushMicrotasks,\n discardPeriodicTasks,\n tick,\n flush,\n fakeAsync,\n withProxyZone\n };\n }, true);\n patchedTimers = {\n setTimeout: global$1.setTimeout,\n setInterval: global$1.setInterval,\n clearTimeout: global$1.clearTimeout,\n clearInterval: global$1.clearInterval,\n nativeSetTimeout: global$1[Zone.__symbol__('setTimeout')],\n nativeClearTimeout: global$1[Zone.__symbol__('clearTimeout')]\n };\n Scheduler.nextId = Scheduler.getNextId();\n}\n\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nfunction patchLongStackTrace(Zone) {\n const NEWLINE = '\\n';\n const IGNORE_FRAMES = {};\n const creationTrace = '__creationTrace__';\n const ERROR_TAG = 'STACKTRACE TRACKING';\n const SEP_TAG = '__SEP_TAG__';\n let sepTemplate = SEP_TAG + '@[native]';\n class LongStackTrace {\n error = getStacktrace();\n timestamp = new Date();\n }\n function getStacktraceWithUncaughtError() {\n return new Error(ERROR_TAG);\n }\n function getStacktraceWithCaughtError() {\n try {\n throw getStacktraceWithUncaughtError();\n } catch (err) {\n return err;\n }\n }\n // Some implementations of exception handling don't create a stack trace if the exception\n // isn't thrown, however it's faster not to actually throw the exception.\n const error = getStacktraceWithUncaughtError();\n const caughtError = getStacktraceWithCaughtError();\n const getStacktrace = error.stack ? getStacktraceWithUncaughtError : caughtError.stack ? getStacktraceWithCaughtError : getStacktraceWithUncaughtError;\n function getFrames(error) {\n return error.stack ? error.stack.split(NEWLINE) : [];\n }\n function addErrorStack(lines, error) {\n let trace = getFrames(error);\n for (let i = 0; i < trace.length; i++) {\n const frame = trace[i];\n // Filter out the Frames which are part of stack capturing.\n if (!IGNORE_FRAMES.hasOwnProperty(frame)) {\n lines.push(trace[i]);\n }\n }\n }\n function renderLongStackTrace(frames, stack) {\n const longTrace = [stack ? stack.trim() : ''];\n if (frames) {\n let timestamp = new Date().getTime();\n for (let i = 0; i < frames.length; i++) {\n const traceFrames = frames[i];\n const lastTime = traceFrames.timestamp;\n let separator = `____________________Elapsed ${timestamp - lastTime.getTime()} ms; At: ${lastTime}`;\n separator = separator.replace(/[^\\w\\d]/g, '_');\n longTrace.push(sepTemplate.replace(SEP_TAG, separator));\n addErrorStack(longTrace, traceFrames.error);\n timestamp = lastTime.getTime();\n }\n }\n return longTrace.join(NEWLINE);\n }\n // if Error.stackTraceLimit is 0, means stack trace\n // is disabled, so we don't need to generate long stack trace\n // this will improve performance in some test(some test will\n // set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698\n function stackTracesEnabled() {\n // Cast through any since this property only exists on Error in the nodejs\n // typings.\n return Error.stackTraceLimit > 0;\n }\n Zone['longStackTraceZoneSpec'] = {\n name: 'long-stack-trace',\n longStackTraceLimit: 10,\n // Max number of task to keep the stack trace for.\n // add a getLongStackTrace method in spec to\n // handle handled reject promise error.\n getLongStackTrace: function (error) {\n if (!error) {\n return undefined;\n }\n const trace = error[Zone.__symbol__('currentTaskTrace')];\n if (!trace) {\n return error.stack;\n }\n return renderLongStackTrace(trace, error.stack);\n },\n onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) {\n if (stackTracesEnabled()) {\n const currentTask = Zone.currentTask;\n let trace = currentTask && currentTask.data && currentTask.data[creationTrace] || [];\n trace = [new LongStackTrace()].concat(trace);\n if (trace.length > this.longStackTraceLimit) {\n trace.length = this.longStackTraceLimit;\n }\n if (!task.data) task.data = {};\n if (task.type === 'eventTask') {\n // Fix issue https://github.com/angular/zone.js/issues/1195,\n // For event task of browser, by default, all task will share a\n // singleton instance of data object, we should create a new one here\n // The cast to `any` is required to workaround a closure bug which wrongly applies\n // URL sanitization rules to .data access.\n task.data = {\n ...task.data\n };\n }\n task.data[creationTrace] = trace;\n }\n return parentZoneDelegate.scheduleTask(targetZone, task);\n },\n onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {\n if (stackTracesEnabled()) {\n const parentTask = Zone.currentTask || error.task;\n if (error instanceof Error && parentTask) {\n const longStack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);\n try {\n error.stack = error.longStack = longStack;\n } catch (err) {}\n }\n }\n return parentZoneDelegate.handleError(targetZone, error);\n }\n };\n function captureStackTraces(stackTraces, count) {\n if (count > 0) {\n stackTraces.push(getFrames(new LongStackTrace().error));\n captureStackTraces(stackTraces, count - 1);\n }\n }\n function computeIgnoreFrames() {\n if (!stackTracesEnabled()) {\n return;\n }\n const frames = [];\n captureStackTraces(frames, 2);\n const frames1 = frames[0];\n const frames2 = frames[1];\n for (let i = 0; i < frames1.length; i++) {\n const frame1 = frames1[i];\n if (frame1.indexOf(ERROR_TAG) == -1) {\n let match = frame1.match(/^\\s*at\\s+/);\n if (match) {\n sepTemplate = match[0] + SEP_TAG + ' (http://localhost)';\n break;\n }\n }\n }\n for (let i = 0; i < frames1.length; i++) {\n const frame1 = frames1[i];\n const frame2 = frames2[i];\n if (frame1 === frame2) {\n IGNORE_FRAMES[frame1] = true;\n } else {\n break;\n }\n }\n }\n computeIgnoreFrames();\n}\nclass ProxyZoneSpec {\n defaultSpecDelegate;\n name = 'ProxyZone';\n _delegateSpec = null;\n properties = {\n 'ProxyZoneSpec': this\n };\n propertyKeys = null;\n lastTaskState = null;\n isNeedToTriggerHasTask = false;\n tasks = [];\n static get() {\n return Zone.current.get('ProxyZoneSpec');\n }\n static isLoaded() {\n return ProxyZoneSpec.get() instanceof ProxyZoneSpec;\n }\n static assertPresent() {\n const spec = ProxyZoneSpec.get();\n if (spec === undefined) {\n throw new Error(`Expected to be running in 'ProxyZone', but it was not found.`);\n }\n return spec;\n }\n constructor(defaultSpecDelegate = null) {\n this.defaultSpecDelegate = defaultSpecDelegate;\n this.setDelegate(defaultSpecDelegate);\n }\n setDelegate(delegateSpec) {\n const isNewDelegate = this._delegateSpec !== delegateSpec;\n this._delegateSpec = delegateSpec;\n this.propertyKeys && this.propertyKeys.forEach(key => delete this.properties[key]);\n this.propertyKeys = null;\n if (delegateSpec && delegateSpec.properties) {\n this.propertyKeys = Object.keys(delegateSpec.properties);\n this.propertyKeys.forEach(k => this.properties[k] = delegateSpec.properties[k]);\n }\n // if a new delegateSpec was set, check if we need to trigger hasTask\n if (isNewDelegate && this.lastTaskState && (this.lastTaskState.macroTask || this.lastTaskState.microTask)) {\n this.isNeedToTriggerHasTask = true;\n }\n }\n getDelegate() {\n return this._delegateSpec;\n }\n resetDelegate() {\n this.getDelegate();\n this.setDelegate(this.defaultSpecDelegate);\n }\n tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone) {\n if (this.isNeedToTriggerHasTask && this.lastTaskState) {\n // last delegateSpec has microTask or macroTask\n // should call onHasTask in current delegateSpec\n this.isNeedToTriggerHasTask = false;\n this.onHasTask(parentZoneDelegate, currentZone, targetZone, this.lastTaskState);\n }\n }\n removeFromTasks(task) {\n if (!this.tasks) {\n return;\n }\n for (let i = 0; i < this.tasks.length; i++) {\n if (this.tasks[i] === task) {\n this.tasks.splice(i, 1);\n return;\n }\n }\n }\n getAndClearPendingTasksInfo() {\n if (this.tasks.length === 0) {\n return '';\n }\n const taskInfo = this.tasks.map(task => {\n const dataInfo = task.data && Object.keys(task.data).map(key => {\n return key + ':' + task.data[key];\n }).join(',');\n return `type: ${task.type}, source: ${task.source}, args: {${dataInfo}}`;\n });\n const pendingTasksInfo = '--Pending async tasks are: [' + taskInfo + ']';\n // clear tasks\n this.tasks = [];\n return pendingTasksInfo;\n }\n onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec) {\n if (this._delegateSpec && this._delegateSpec.onFork) {\n return this._delegateSpec.onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec);\n } else {\n return parentZoneDelegate.fork(targetZone, zoneSpec);\n }\n }\n onIntercept(parentZoneDelegate, currentZone, targetZone, delegate, source) {\n if (this._delegateSpec && this._delegateSpec.onIntercept) {\n return this._delegateSpec.onIntercept(parentZoneDelegate, currentZone, targetZone, delegate, source);\n } else {\n return parentZoneDelegate.intercept(targetZone, delegate, source);\n }\n }\n onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {\n this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);\n if (this._delegateSpec && this._delegateSpec.onInvoke) {\n return this._delegateSpec.onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source);\n } else {\n return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);\n }\n }\n onHandleError(parentZoneDelegate, currentZone, targetZone, error) {\n if (this._delegateSpec && this._delegateSpec.onHandleError) {\n return this._delegateSpec.onHandleError(parentZoneDelegate, currentZone, targetZone, error);\n } else {\n return parentZoneDelegate.handleError(targetZone, error);\n }\n }\n onScheduleTask(parentZoneDelegate, currentZone, targetZone, task) {\n if (task.type !== 'eventTask') {\n this.tasks.push(task);\n }\n if (this._delegateSpec && this._delegateSpec.onScheduleTask) {\n return this._delegateSpec.onScheduleTask(parentZoneDelegate, currentZone, targetZone, task);\n } else {\n return parentZoneDelegate.scheduleTask(targetZone, task);\n }\n }\n onInvokeTask(parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {\n if (task.type !== 'eventTask') {\n this.removeFromTasks(task);\n }\n this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);\n if (this._delegateSpec && this._delegateSpec.onInvokeTask) {\n return this._delegateSpec.onInvokeTask(parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs);\n } else {\n return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);\n }\n }\n onCancelTask(parentZoneDelegate, currentZone, targetZone, task) {\n if (task.type !== 'eventTask') {\n this.removeFromTasks(task);\n }\n this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);\n if (this._delegateSpec && this._delegateSpec.onCancelTask) {\n return this._delegateSpec.onCancelTask(parentZoneDelegate, currentZone, targetZone, task);\n } else {\n return parentZoneDelegate.cancelTask(targetZone, task);\n }\n }\n onHasTask(delegate, current, target, hasTaskState) {\n this.lastTaskState = hasTaskState;\n if (this._delegateSpec && this._delegateSpec.onHasTask) {\n this._delegateSpec.onHasTask(delegate, current, target, hasTaskState);\n } else {\n delegate.hasTask(target, hasTaskState);\n }\n }\n}\nfunction patchProxyZoneSpec(Zone) {\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['ProxyZoneSpec'] = ProxyZoneSpec;\n}\nfunction patchSyncTest(Zone) {\n class SyncTestZoneSpec {\n runZone = Zone.current;\n constructor(namePrefix) {\n this.name = 'syncTestZone for ' + namePrefix;\n }\n // ZoneSpec implementation below.\n name;\n onScheduleTask(delegate, current, target, task) {\n switch (task.type) {\n case 'microTask':\n case 'macroTask':\n throw new Error(`Cannot call ${task.source} from within a sync test (${this.name}).`);\n case 'eventTask':\n task = delegate.scheduleTask(target, task);\n break;\n }\n return task;\n }\n }\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['SyncTestZoneSpec'] = SyncTestZoneSpec;\n}\nfunction patchPromiseTesting(Zone) {\n /**\n * Promise for async/fakeAsync zoneSpec test\n * can support async operation which not supported by zone.js\n * such as\n * it ('test jsonp in AsyncZone', async() => {\n * new Promise(res => {\n * jsonp(url, (data) => {\n * // success callback\n * res(data);\n * });\n * }).then((jsonpResult) => {\n * // get jsonp result.\n *\n * // user will expect AsyncZoneSpec wait for\n * // then, but because jsonp is not zone aware\n * // AsyncZone will finish before then is called.\n * });\n * });\n */\n Zone.__load_patch('promisefortest', (global, Zone, api) => {\n const symbolState = api.symbol('state');\n const UNRESOLVED = null;\n const symbolParentUnresolved = api.symbol('parentUnresolved');\n // patch Promise.prototype.then to keep an internal\n // number for tracking unresolved chained promise\n // we will decrease this number when the parent promise\n // being resolved/rejected and chained promise was\n // scheduled as a microTask.\n // so we can know such kind of chained promise still\n // not resolved in AsyncTestZone\n Promise[api.symbol('patchPromiseForTest')] = function patchPromiseForTest() {\n let oriThen = Promise[Zone.__symbol__('ZonePromiseThen')];\n if (oriThen) {\n return;\n }\n oriThen = Promise[Zone.__symbol__('ZonePromiseThen')] = Promise.prototype.then;\n Promise.prototype.then = function () {\n const chained = oriThen.apply(this, arguments);\n if (this[symbolState] === UNRESOLVED) {\n // parent promise is unresolved.\n const asyncTestZoneSpec = Zone.current.get('AsyncTestZoneSpec');\n if (asyncTestZoneSpec) {\n asyncTestZoneSpec.unresolvedChainedPromiseCount++;\n chained[symbolParentUnresolved] = true;\n }\n }\n return chained;\n };\n };\n Promise[api.symbol('unPatchPromiseForTest')] = function unpatchPromiseForTest() {\n // restore origin then\n const oriThen = Promise[Zone.__symbol__('ZonePromiseThen')];\n if (oriThen) {\n Promise.prototype.then = oriThen;\n Promise[Zone.__symbol__('ZonePromiseThen')] = undefined;\n }\n };\n });\n}\nfunction rollupTesting(Zone) {\n patchLongStackTrace(Zone);\n patchProxyZoneSpec(Zone);\n patchSyncTest(Zone);\n patchJasmine(Zone);\n patchJest(Zone);\n patchMocha(Zone);\n patchAsyncTest(Zone);\n patchFakeAsyncTest(Zone);\n patchPromiseTesting(Zone);\n}\nrollupTesting(Zone);","map":{"version":3,"names":["patchJasmine","Zone","__load_patch","global","api","__extends","d","b","p","hasOwnProperty","__","constructor","prototype","Object","create","Error","jest","jasmine","SyncTestZoneSpec","ProxyZoneSpec","ambientZone","current","symbol","__symbol__","disablePatchingJasmineClock","enableAutoFakeAsyncWhenClockPatched","ignoreUnhandledRejection","globalErrors","GlobalErrors","instance","originalInstall","install","isNode","process","on","originalHandlers","listeners","eventListeners","result","apply","arguments","removeAllListeners","forEach","handler","addEventListener","jasmineEnv","getEnv","methodName","originalJasmineFn","description","specDefinitions","call","wrapDescribeInZone","timeout","wrapTestInZone","originalClockFn","clock","originalTick","tick","fakeAsyncZoneSpec","get","originalMockDate","mockDate","dateTime","length","Date","setFakeBaseSystemTime","getTime","FakeAsyncTestZoneSpec","originalCreateSpyObj","createSpyObj","args","Array","slice","propertyNames","spyObj","defineProperty","obj","attributes","configurable","enumerable","describeBody","syncZone","fork","run","runInTestZone","testBody","applyThis","queueRunner","done","isClockInstalled","testProxyZoneSpec","testProxyZone","fakeAsyncModule","fakeAsync","QueueRunner","_super","ZoneQueueRunner","attrs","onComplete","fn","scheduleMicroTask","nativeSetTimeout","nativeClearTimeout","setTimeout","clearTimeout","UserContext","userContext","onException","error","message","proxyZoneSpec","pendingTasksInfo","getAndClearPendingTasksInfo","err","execute","zone","isChildOfAmbientZone","parent","name","currentTask","patchJest","context","rootZone","proxyZone","wrapDescribeFactoryInZone","originalJestFn","tableArgs","originalDescribeFn","wrapTestFactoryInZone","isTestFunc","wrappedFunc","isFakeAsync","writable","each","describe","only","fdescribe","skip","xdescribe","todo","failing","it","fit","xit","test","patchJestObject","Timer","isModern","isPatchingFakeTimer","isInTestFunc","patchMethod","delegate","self","getRealSystemTime","flushMicrotasks","flush","flushOnlyPendingTimers","tickToNext","removeAllTimers","getTimerCount","patchMocha","Mocha","testZone","suiteZone","mochaOriginal","after","afterEach","before","beforeEach","modifyArguments","syncTest","asyncTest","i","arg","toString","wrapSuiteInZone","suite","specify","xspecify","suiteTeardown","teardown","suiteSetup","setup","originalRunTest","originalRun","Runner","runTest","e","global$2","globalThis","symbolPrefix","__global","window","AsyncTestZoneSpec","finishCallback","failCallback","symbolParentUnresolved","_pendingMicroTasks","_pendingMacroTasks","_alreadyErrored","_isSync","_existingFinishTimer","entryFunction","runZone","unresolvedChainedPromiseCount","supportWaitUnresolvedChainedPromise","namePrefix","properties","isUnresolvedChainedPromisePending","_finishCallbackIfDone","patchPromiseForTest","Promise","unPatchPromiseForTest","onScheduleTask","target","task","type","data","scheduleTask","onInvokeTask","applyArgs","invokeTask","onCancelTask","cancelTask","onInvoke","parentZoneDelegate","currentZone","targetZone","source","invoke","onHandleError","handleError","onHasTask","hasTaskState","hasTask","change","microTask","macroTask","patchAsyncTest","fail","undefined","assertPresent","getZoneWith","previousDelegate","getDelegate","testZoneSpec","setDelegate","runGuarded","global$1","OriginalDate","FakeDate","setTime","now","fakeAsyncTestZoneSpec","getFakeSystemTime","UTC","parse","patchedTimers","timeoutCallback","Scheduler","nextNodeJSId","nextId","_schedulerQueue","_currentTickTime","_currentFakeBaseSystemTime","_currentTickRequeuePeriodicEntries","getNextId","id","getCurrentTickTime","fakeBaseSystemTime","scheduleFunction","cb","delay","options","isPeriodic","isRequestAnimationFrame","isRequeuePeriodic","currentId","endTime","newEntry","func","push","currentEntry","splice","removeScheduledFunctionWithId","removeAll","step","doTick","tickOptions","startTime","targetTask","millis","finalTime","lastCurrentTime","assign","processNewMacroTasksSynchronously","schedulerQueue","shift","idx","indexOf","retval","lastTask","limit","flushPeriodic","flushNonPeriodic","count","filter","trackPendingRequestAnimationFrame","macroTaskOptions","assertInZone","_scheduler","_microtasks","_lastError","_uncaughtPromiseErrors","pendingPeriodicTimers","pendingTimers","patchDateLocked","_fnAndFlush","completers","onSuccess","onError","_removeTimer","timers","index","_dequeueTimer","_requeuePeriodicTimer","interval","_dequeuePeriodicTimer","_setTimeout","isTimer","removeTimerFn","_clearTimeout","_setInterval","_clearInterval","_resetLastErrorAndThrow","realTime","patchDate","checkTimerPatch","resetDate","setInterval","clearInterval","lockDatePatch","unlockDatePatch","steps","flushErrors","microtask","elapsed","additionalArgs","callbackIndex","cbIdx","macroTaskOption","findMacroTaskOption","callbackArgs","handleId","callback","_fakeAsyncTestZoneSpec","getProxyZoneSpec","_sharedProxyZoneSpec","_sharedProxyZone","resetFakeAsyncZone","resetDelegate","fakeAsyncFn","res","lastProxyZoneSpec","_getFakeAsyncZoneSpec","ignoreNestedTimeout","maxTurns","discardPeriodicTasks","zoneSpec","withProxyZone","autoProxyFn","getOrCreateRootProxy","root","patchFakeAsyncTest","patchLongStackTrace","NEWLINE","IGNORE_FRAMES","creationTrace","ERROR_TAG","SEP_TAG","sepTemplate","LongStackTrace","getStacktrace","timestamp","getStacktraceWithUncaughtError","getStacktraceWithCaughtError","caughtError","stack","getFrames","split","addErrorStack","lines","trace","frame","renderLongStackTrace","frames","longTrace","trim","traceFrames","lastTime","separator","replace","join","stackTracesEnabled","stackTraceLimit","longStackTraceLimit","getLongStackTrace","concat","parentTask","longStack","captureStackTraces","stackTraces","computeIgnoreFrames","frames1","frames2","frame1","match","frame2","defaultSpecDelegate","_delegateSpec","propertyKeys","lastTaskState","isNeedToTriggerHasTask","tasks","isLoaded","spec","delegateSpec","isNewDelegate","key","keys","k","tryTriggerHasTask","removeFromTasks","taskInfo","map","dataInfo","onFork","onIntercept","intercept","patchProxyZoneSpec","patchSyncTest","patchPromiseTesting","symbolState","UNRESOLVED","oriThen","then","chained","asyncTestZoneSpec","unpatchPromiseForTest","rollupTesting"],"sources":["C:/usr/local/workspaces/workspace-quankee/quankee-framework/quankee-framework-common-ts/node_modules/zone.js/fesm2015/zone-testing.js"],"sourcesContent":["'use strict';\n/**\n * @license Angular v<unknown>\n * (c) 2010-2025 Google LLC. https://angular.io/\n * License: MIT\n */\nfunction patchJasmine(Zone) {\n Zone.__load_patch('jasmine', (global, Zone, api) => {\n const __extends = function (d, b) {\n for (const p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype =\n b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n // Patch jasmine's describe/it/beforeEach/afterEach functions so test code always runs\n // in a testZone (ProxyZone). (See: angular/zone.js#91 & angular/angular#10503)\n if (!Zone)\n throw new Error('Missing: zone.js');\n if (typeof jest !== 'undefined') {\n // return if jasmine is a light implementation inside jest\n // in this case, we are running inside jest not jasmine\n return;\n }\n if (typeof jasmine == 'undefined' || jasmine['__zone_patch__']) {\n return;\n }\n jasmine['__zone_patch__'] = true;\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n if (!SyncTestZoneSpec)\n throw new Error('Missing: SyncTestZoneSpec');\n if (!ProxyZoneSpec)\n throw new Error('Missing: ProxyZoneSpec');\n const ambientZone = Zone.current;\n const symbol = Zone.__symbol__;\n // whether patch jasmine clock when in fakeAsync\n const disablePatchingJasmineClock = global[symbol('fakeAsyncDisablePatchingClock')] === true;\n // the original variable name fakeAsyncPatchLock is not accurate, so the name will be\n // fakeAsyncAutoFakeAsyncWhenClockPatched and if this enablePatchingJasmineClock is false, we\n // also automatically disable the auto jump into fakeAsync feature\n const enableAutoFakeAsyncWhenClockPatched = !disablePatchingJasmineClock &&\n (global[symbol('fakeAsyncPatchLock')] === true ||\n global[symbol('fakeAsyncAutoFakeAsyncWhenClockPatched')] === true);\n const ignoreUnhandledRejection = global[symbol('ignoreUnhandledRejection')] === true;\n if (!ignoreUnhandledRejection) {\n const globalErrors = jasmine.GlobalErrors;\n if (globalErrors && !jasmine[symbol('GlobalErrors')]) {\n jasmine[symbol('GlobalErrors')] = globalErrors;\n jasmine.GlobalErrors = function () {\n const instance = new globalErrors();\n const originalInstall = instance.install;\n if (originalInstall && !instance[symbol('install')]) {\n instance[symbol('install')] = originalInstall;\n instance.install = function () {\n const isNode = typeof process !== 'undefined' && !!process.on;\n // Note: Jasmine checks internally if `process` and `process.on` is defined.\n // Otherwise, it installs the browser rejection handler through the\n // `global.addEventListener`. This code may be run in the browser environment where\n // `process` is not defined, and this will lead to a runtime exception since webpack 5\n // removed automatic Node.js polyfills. Note, that events are named differently, it's\n // `unhandledRejection` in Node.js and `unhandledrejection` in the browser.\n const originalHandlers = isNode\n ? process.listeners('unhandledRejection')\n : global.eventListeners('unhandledrejection');\n const result = originalInstall.apply(this, arguments);\n isNode\n ? process.removeAllListeners('unhandledRejection')\n : global.removeAllListeners('unhandledrejection');\n if (originalHandlers) {\n originalHandlers.forEach((handler) => {\n if (isNode) {\n process.on('unhandledRejection', handler);\n }\n else {\n global.addEventListener('unhandledrejection', handler);\n }\n });\n }\n return result;\n };\n }\n return instance;\n };\n }\n }\n // Monkey patch all of the jasmine DSL so that each function runs in appropriate zone.\n const jasmineEnv = jasmine.getEnv();\n ['describe', 'xdescribe', 'fdescribe'].forEach((methodName) => {\n let originalJasmineFn = jasmineEnv[methodName];\n jasmineEnv[methodName] = function (description, specDefinitions) {\n return originalJasmineFn.call(this, description, wrapDescribeInZone(description, specDefinitions));\n };\n });\n ['it', 'xit', 'fit'].forEach((methodName) => {\n let originalJasmineFn = jasmineEnv[methodName];\n jasmineEnv[symbol(methodName)] = originalJasmineFn;\n jasmineEnv[methodName] = function (description, specDefinitions, timeout) {\n arguments[1] = wrapTestInZone(specDefinitions);\n return originalJasmineFn.apply(this, arguments);\n };\n });\n ['beforeEach', 'afterEach', 'beforeAll', 'afterAll'].forEach((methodName) => {\n let originalJasmineFn = jasmineEnv[methodName];\n jasmineEnv[symbol(methodName)] = originalJasmineFn;\n jasmineEnv[methodName] = function (specDefinitions, timeout) {\n arguments[0] = wrapTestInZone(specDefinitions);\n return originalJasmineFn.apply(this, arguments);\n };\n });\n if (!disablePatchingJasmineClock) {\n // need to patch jasmine.clock().mockDate and jasmine.clock().tick() so\n // they can work properly in FakeAsyncTest\n const originalClockFn = (jasmine[symbol('clock')] = jasmine['clock']);\n jasmine['clock'] = function () {\n const clock = originalClockFn.apply(this, arguments);\n if (!clock[symbol('patched')]) {\n clock[symbol('patched')] = symbol('patched');\n const originalTick = (clock[symbol('tick')] = clock.tick);\n clock.tick = function () {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n return fakeAsyncZoneSpec.tick.apply(fakeAsyncZoneSpec, arguments);\n }\n return originalTick.apply(this, arguments);\n };\n const originalMockDate = (clock[symbol('mockDate')] = clock.mockDate);\n clock.mockDate = function () {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n const dateTime = arguments.length > 0 ? arguments[0] : new Date();\n return fakeAsyncZoneSpec.setFakeBaseSystemTime.apply(fakeAsyncZoneSpec, dateTime && typeof dateTime.getTime === 'function'\n ? [dateTime.getTime()]\n : arguments);\n }\n return originalMockDate.apply(this, arguments);\n };\n // for auto go into fakeAsync feature, we need the flag to enable it\n if (enableAutoFakeAsyncWhenClockPatched) {\n ['install', 'uninstall'].forEach((methodName) => {\n const originalClockFn = (clock[symbol(methodName)] = clock[methodName]);\n clock[methodName] = function () {\n const FakeAsyncTestZoneSpec = Zone['FakeAsyncTestZoneSpec'];\n if (FakeAsyncTestZoneSpec) {\n jasmine[symbol('clockInstalled')] = 'install' === methodName;\n return;\n }\n return originalClockFn.apply(this, arguments);\n };\n });\n }\n }\n return clock;\n };\n }\n // monkey patch createSpyObj to make properties enumerable to true\n if (!jasmine[Zone.__symbol__('createSpyObj')]) {\n const originalCreateSpyObj = jasmine.createSpyObj;\n jasmine[Zone.__symbol__('createSpyObj')] = originalCreateSpyObj;\n jasmine.createSpyObj = function () {\n const args = Array.prototype.slice.call(arguments);\n const propertyNames = args.length >= 3 ? args[2] : null;\n let spyObj;\n if (propertyNames) {\n const defineProperty = Object.defineProperty;\n Object.defineProperty = function (obj, p, attributes) {\n return defineProperty.call(this, obj, p, {\n ...attributes,\n configurable: true,\n enumerable: true,\n });\n };\n try {\n spyObj = originalCreateSpyObj.apply(this, args);\n }\n finally {\n Object.defineProperty = defineProperty;\n }\n }\n else {\n spyObj = originalCreateSpyObj.apply(this, args);\n }\n return spyObj;\n };\n }\n /**\n * Gets a function wrapping the body of a Jasmine `describe` block to execute in a\n * synchronous-only zone.\n */\n function wrapDescribeInZone(description, describeBody) {\n return function () {\n // Create a synchronous-only zone in which to run `describe` blocks in order to raise an\n // error if any asynchronous operations are attempted inside of a `describe`.\n const syncZone = ambientZone.fork(new SyncTestZoneSpec(`jasmine.describe#${description}`));\n return syncZone.run(describeBody, this, arguments);\n };\n }\n function runInTestZone(testBody, applyThis, queueRunner, done) {\n const isClockInstalled = !!jasmine[symbol('clockInstalled')];\n queueRunner.testProxyZoneSpec;\n const testProxyZone = queueRunner.testProxyZone;\n if (isClockInstalled && enableAutoFakeAsyncWhenClockPatched) {\n // auto run a fakeAsync\n const fakeAsyncModule = Zone[Zone.__symbol__('fakeAsyncTest')];\n if (fakeAsyncModule && typeof fakeAsyncModule.fakeAsync === 'function') {\n testBody = fakeAsyncModule.fakeAsync(testBody);\n }\n }\n if (done) {\n return testProxyZone.run(testBody, applyThis, [done]);\n }\n else {\n return testProxyZone.run(testBody, applyThis);\n }\n }\n /**\n * Gets a function wrapping the body of a Jasmine `it/beforeEach/afterEach` block to\n * execute in a ProxyZone zone.\n * This will run in `testProxyZone`. The `testProxyZone` will be reset by the `ZoneQueueRunner`\n */\n function wrapTestInZone(testBody) {\n // The `done` callback is only passed through if the function expects at least one argument.\n // Note we have to make a function with correct number of arguments, otherwise jasmine will\n // think that all functions are sync or async.\n return (testBody &&\n (testBody.length\n ? function (done) {\n return runInTestZone(testBody, this, this.queueRunner, done);\n }\n : function () {\n return runInTestZone(testBody, this, this.queueRunner);\n }));\n }\n const QueueRunner = jasmine.QueueRunner;\n jasmine.QueueRunner = (function (_super) {\n __extends(ZoneQueueRunner, _super);\n function ZoneQueueRunner(attrs) {\n if (attrs.onComplete) {\n attrs.onComplete = ((fn) => () => {\n // All functions are done, clear the test zone.\n this.testProxyZone = null;\n this.testProxyZoneSpec = null;\n ambientZone.scheduleMicroTask('jasmine.onComplete', fn);\n })(attrs.onComplete);\n }\n const nativeSetTimeout = global[Zone.__symbol__('setTimeout')];\n const nativeClearTimeout = global[Zone.__symbol__('clearTimeout')];\n if (nativeSetTimeout) {\n // should run setTimeout inside jasmine outside of zone\n attrs.timeout = {\n setTimeout: nativeSetTimeout ? nativeSetTimeout : global.setTimeout,\n clearTimeout: nativeClearTimeout ? nativeClearTimeout : global.clearTimeout,\n };\n }\n // create a userContext to hold the queueRunner itself\n // so we can access the testProxy in it/xit/beforeEach ...\n if (jasmine.UserContext) {\n if (!attrs.userContext) {\n attrs.userContext = new jasmine.UserContext();\n }\n attrs.userContext.queueRunner = this;\n }\n else {\n if (!attrs.userContext) {\n attrs.userContext = {};\n }\n attrs.userContext.queueRunner = this;\n }\n // patch attrs.onException\n const onException = attrs.onException;\n attrs.onException = function (error) {\n if (error &&\n error.message ===\n 'Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.') {\n // jasmine timeout, we can make the error message more\n // reasonable to tell what tasks are pending\n const proxyZoneSpec = this && this.testProxyZoneSpec;\n if (proxyZoneSpec) {\n const pendingTasksInfo = proxyZoneSpec.getAndClearPendingTasksInfo();\n try {\n // try catch here in case error.message is not writable\n error.message += pendingTasksInfo;\n }\n catch (err) { }\n }\n }\n if (onException) {\n onException.call(this, error);\n }\n };\n _super.call(this, attrs);\n }\n ZoneQueueRunner.prototype.execute = function () {\n let zone = Zone.current;\n let isChildOfAmbientZone = false;\n while (zone) {\n if (zone === ambientZone) {\n isChildOfAmbientZone = true;\n break;\n }\n zone = zone.parent;\n }\n if (!isChildOfAmbientZone)\n throw new Error('Unexpected Zone: ' + Zone.current.name);\n // This is the zone which will be used for running individual tests.\n // It will be a proxy zone, so that the tests function can retroactively install\n // different zones.\n // Example:\n // - In beforeEach() do childZone = Zone.current.fork(...);\n // - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the\n // zone outside of fakeAsync it will be able to escape the fakeAsync rules.\n // - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add\n // fakeAsync behavior to the childZone.\n this.testProxyZoneSpec = new ProxyZoneSpec();\n this.testProxyZone = ambientZone.fork(this.testProxyZoneSpec);\n if (!Zone.currentTask) {\n // if we are not running in a task then if someone would register a\n // element.addEventListener and then calling element.click() the\n // addEventListener callback would think that it is the top most task and would\n // drain the microtask queue on element.click() which would be incorrect.\n // For this reason we always force a task when running jasmine tests.\n Zone.current.scheduleMicroTask('jasmine.execute().forceTask', () => QueueRunner.prototype.execute.call(this));\n }\n else {\n _super.prototype.execute.call(this);\n }\n };\n return ZoneQueueRunner;\n })(QueueRunner);\n });\n}\n\nfunction patchJest(Zone) {\n Zone.__load_patch('jest', (context, Zone, api) => {\n if (typeof jest === 'undefined' || jest['__zone_patch__']) {\n return;\n }\n // From jest 29 and jest-preset-angular v13, the module transform logic\n // changed, and now jest-preset-angular use the use the tsconfig target\n // other than the hardcoded one, https://github.com/thymikee/jest-preset-angular/issues/2010\n // But jest-angular-preset doesn't introduce the @babel/plugin-transform-async-to-generator\n // which is needed by angular since `async/await` still need to be transformed\n // to promise for ES2017+ target.\n // So for now, we disable to output the uncaught error console log for a temp solution,\n // until jest-preset-angular find a proper solution.\n Zone[api.symbol('ignoreConsoleErrorUncaughtError')] = true;\n jest['__zone_patch__'] = true;\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n if (!ProxyZoneSpec) {\n throw new Error('Missing ProxyZoneSpec');\n }\n const rootZone = Zone.current;\n const syncZone = rootZone.fork(new SyncTestZoneSpec('jest.describe'));\n const proxyZoneSpec = new ProxyZoneSpec();\n const proxyZone = rootZone.fork(proxyZoneSpec);\n function wrapDescribeFactoryInZone(originalJestFn) {\n return function (...tableArgs) {\n const originalDescribeFn = originalJestFn.apply(this, tableArgs);\n return function (...args) {\n args[1] = wrapDescribeInZone(args[1]);\n return originalDescribeFn.apply(this, args);\n };\n };\n }\n function wrapTestFactoryInZone(originalJestFn) {\n return function (...tableArgs) {\n return function (...args) {\n args[1] = wrapTestInZone(args[1]);\n return originalJestFn.apply(this, tableArgs).apply(this, args);\n };\n };\n }\n /**\n * Gets a function wrapping the body of a jest `describe` block to execute in a\n * synchronous-only zone.\n */\n function wrapDescribeInZone(describeBody) {\n return function (...args) {\n return syncZone.run(describeBody, this, args);\n };\n }\n /**\n * Gets a function wrapping the body of a jest `it/beforeEach/afterEach` block to\n * execute in a ProxyZone zone.\n * This will run in the `proxyZone`.\n */\n function wrapTestInZone(testBody, isTestFunc = false) {\n if (typeof testBody !== 'function') {\n return testBody;\n }\n const wrappedFunc = function () {\n if (Zone[api.symbol('useFakeTimersCalled')] === true &&\n testBody &&\n !testBody.isFakeAsync) {\n // jest.useFakeTimers is called, run into fakeAsyncTest automatically.\n const fakeAsyncModule = Zone[Zone.__symbol__('fakeAsyncTest')];\n if (fakeAsyncModule && typeof fakeAsyncModule.fakeAsync === 'function') {\n testBody = fakeAsyncModule.fakeAsync(testBody);\n }\n }\n proxyZoneSpec.isTestFunc = isTestFunc;\n return proxyZone.run(testBody, null, arguments);\n };\n // Update the length of wrappedFunc to be the same as the length of the testBody\n // So jest core can handle whether the test function has `done()` or not correctly\n Object.defineProperty(wrappedFunc, 'length', {\n configurable: true,\n writable: true,\n enumerable: false,\n });\n wrappedFunc.length = testBody.length;\n return wrappedFunc;\n }\n ['describe', 'xdescribe', 'fdescribe'].forEach((methodName) => {\n let originalJestFn = context[methodName];\n if (context[Zone.__symbol__(methodName)]) {\n return;\n }\n context[Zone.__symbol__(methodName)] = originalJestFn;\n context[methodName] = function (...args) {\n args[1] = wrapDescribeInZone(args[1]);\n return originalJestFn.apply(this, args);\n };\n context[methodName].each = wrapDescribeFactoryInZone(originalJestFn.each);\n });\n context.describe.only = context.fdescribe;\n context.describe.skip = context.xdescribe;\n ['it', 'xit', 'fit', 'test', 'xtest'].forEach((methodName) => {\n let originalJestFn = context[methodName];\n if (context[Zone.__symbol__(methodName)]) {\n return;\n }\n context[Zone.__symbol__(methodName)] = originalJestFn;\n context[methodName] = function (...args) {\n args[1] = wrapTestInZone(args[1], true);\n return originalJestFn.apply(this, args);\n };\n context[methodName].each = wrapTestFactoryInZone(originalJestFn.each);\n context[methodName].todo = originalJestFn.todo;\n context[methodName].failing = originalJestFn.failing;\n });\n context.it.only = context.fit;\n context.it.skip = context.xit;\n context.test.only = context.fit;\n context.test.skip = context.xit;\n ['beforeEach', 'afterEach', 'beforeAll', 'afterAll'].forEach((methodName) => {\n let originalJestFn = context[methodName];\n if (context[Zone.__symbol__(methodName)]) {\n return;\n }\n context[Zone.__symbol__(methodName)] = originalJestFn;\n context[methodName] = function (...args) {\n args[0] = wrapTestInZone(args[0]);\n return originalJestFn.apply(this, args);\n };\n });\n Zone.patchJestObject = function patchJestObject(Timer, isModern = false) {\n // check whether currently the test is inside fakeAsync()\n function isPatchingFakeTimer() {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n return !!fakeAsyncZoneSpec;\n }\n // check whether the current function is inside `test/it` or other methods\n // such as `describe/beforeEach`\n function isInTestFunc() {\n const proxyZoneSpec = Zone.current.get('ProxyZoneSpec');\n return proxyZoneSpec && proxyZoneSpec.isTestFunc;\n }\n if (Timer[api.symbol('fakeTimers')]) {\n return;\n }\n Timer[api.symbol('fakeTimers')] = true;\n // patch jest fakeTimer internal method to make sure no console.warn print out\n api.patchMethod(Timer, '_checkFakeTimers', (delegate) => {\n return function (self, args) {\n if (isPatchingFakeTimer()) {\n return true;\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch useFakeTimers(), set useFakeTimersCalled flag, and make test auto run into fakeAsync\n api.patchMethod(Timer, 'useFakeTimers', (delegate) => {\n return function (self, args) {\n Zone[api.symbol('useFakeTimersCalled')] = true;\n if (isModern || isInTestFunc()) {\n return delegate.apply(self, args);\n }\n return self;\n };\n });\n // patch useRealTimers(), unset useFakeTimers flag\n api.patchMethod(Timer, 'useRealTimers', (delegate) => {\n return function (self, args) {\n Zone[api.symbol('useFakeTimersCalled')] = false;\n if (isModern || isInTestFunc()) {\n return delegate.apply(self, args);\n }\n return self;\n };\n });\n // patch setSystemTime(), call setCurrentRealTime() in the fakeAsyncTest\n api.patchMethod(Timer, 'setSystemTime', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec && isPatchingFakeTimer()) {\n fakeAsyncZoneSpec.setFakeBaseSystemTime(args[0]);\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch getSystemTime(), call getCurrentRealTime() in the fakeAsyncTest\n api.patchMethod(Timer, 'getRealSystemTime', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec && isPatchingFakeTimer()) {\n return fakeAsyncZoneSpec.getRealSystemTime();\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch runAllTicks(), run all microTasks inside fakeAsync\n api.patchMethod(Timer, 'runAllTicks', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.flushMicrotasks();\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch runAllTimers(), run all macroTasks inside fakeAsync\n api.patchMethod(Timer, 'runAllTimers', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.flush(100, true);\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch advanceTimersByTime(), call tick() in the fakeAsyncTest\n api.patchMethod(Timer, 'advanceTimersByTime', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.tick(args[0]);\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch runOnlyPendingTimers(), call flushOnlyPendingTimers() in the fakeAsyncTest\n api.patchMethod(Timer, 'runOnlyPendingTimers', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.flushOnlyPendingTimers();\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch advanceTimersToNextTimer(), call tickToNext() in the fakeAsyncTest\n api.patchMethod(Timer, 'advanceTimersToNextTimer', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.tickToNext(args[0]);\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch clearAllTimers(), call removeAllTimers() in the fakeAsyncTest\n api.patchMethod(Timer, 'clearAllTimers', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n fakeAsyncZoneSpec.removeAllTimers();\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n // patch getTimerCount(), call getTimerCount() in the fakeAsyncTest\n api.patchMethod(Timer, 'getTimerCount', (delegate) => {\n return function (self, args) {\n const fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncZoneSpec) {\n return fakeAsyncZoneSpec.getTimerCount();\n }\n else {\n return delegate.apply(self, args);\n }\n };\n });\n };\n });\n}\n\nfunction patchMocha(Zone) {\n Zone.__load_patch('mocha', (global, Zone) => {\n const Mocha = global.Mocha;\n if (typeof Mocha === 'undefined') {\n // return if Mocha is not available, because now zone-testing\n // will load mocha patch with jasmine/jest patch\n return;\n }\n if (typeof Zone === 'undefined') {\n throw new Error('Missing Zone.js');\n }\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n if (!ProxyZoneSpec) {\n throw new Error('Missing ProxyZoneSpec');\n }\n if (Mocha['__zone_patch__']) {\n throw new Error('\"Mocha\" has already been patched with \"Zone\".');\n }\n Mocha['__zone_patch__'] = true;\n const rootZone = Zone.current;\n const syncZone = rootZone.fork(new SyncTestZoneSpec('Mocha.describe'));\n let testZone = null;\n const suiteZone = rootZone.fork(new ProxyZoneSpec());\n const mochaOriginal = {\n after: global.after,\n afterEach: global.afterEach,\n before: global.before,\n beforeEach: global.beforeEach,\n describe: global.describe,\n it: global.it,\n };\n function modifyArguments(args, syncTest, asyncTest) {\n for (let i = 0; i < args.length; i++) {\n let arg = args[i];\n if (typeof arg === 'function') {\n // The `done` callback is only passed through if the function expects at\n // least one argument.\n // Note we have to make a function with correct number of arguments,\n // otherwise mocha will\n // think that all functions are sync or async.\n args[i] = arg.length === 0 ? syncTest(arg) : asyncTest(arg);\n // Mocha uses toString to view the test body in the result list, make sure we return the\n // correct function body\n args[i].toString = function () {\n return arg.toString();\n };\n }\n }\n return args;\n }\n function wrapDescribeInZone(args) {\n const syncTest = function (fn) {\n return function () {\n return syncZone.run(fn, this, arguments);\n };\n };\n return modifyArguments(args, syncTest);\n }\n function wrapTestInZone(args) {\n const asyncTest = function (fn) {\n return function (done) {\n return testZone.run(fn, this, [done]);\n };\n };\n const syncTest = function (fn) {\n return function () {\n return testZone.run(fn, this);\n };\n };\n return modifyArguments(args, syncTest, asyncTest);\n }\n function wrapSuiteInZone(args) {\n const asyncTest = function (fn) {\n return function (done) {\n return suiteZone.run(fn, this, [done]);\n };\n };\n const syncTest = function (fn) {\n return function () {\n return suiteZone.run(fn, this);\n };\n };\n return modifyArguments(args, syncTest, asyncTest);\n }\n global.describe = global.suite = function () {\n return mochaOriginal.describe.apply(this, wrapDescribeInZone(arguments));\n };\n global.xdescribe =\n global.suite.skip =\n global.describe.skip =\n function () {\n return mochaOriginal.describe.skip.apply(this, wrapDescribeInZone(arguments));\n };\n global.describe.only = global.suite.only = function () {\n return mochaOriginal.describe.only.apply(this, wrapDescribeInZone(arguments));\n };\n global.it =\n global.specify =\n global.test =\n function () {\n return mochaOriginal.it.apply(this, wrapTestInZone(arguments));\n };\n global.xit =\n global.xspecify =\n global.it.skip =\n function () {\n return mochaOriginal.it.skip.apply(this, wrapTestInZone(arguments));\n };\n global.it.only = global.test.only = function () {\n return mochaOriginal.it.only.apply(this, wrapTestInZone(arguments));\n };\n global.after = global.suiteTeardown = function () {\n return mochaOriginal.after.apply(this, wrapSuiteInZone(arguments));\n };\n global.afterEach = global.teardown = function () {\n return mochaOriginal.afterEach.apply(this, wrapTestInZone(arguments));\n };\n global.before = global.suiteSetup = function () {\n return mochaOriginal.before.apply(this, wrapSuiteInZone(arguments));\n };\n global.beforeEach = global.setup = function () {\n return mochaOriginal.beforeEach.apply(this, wrapTestInZone(arguments));\n };\n ((originalRunTest, originalRun) => {\n Mocha.Runner.prototype.runTest = function (fn) {\n Zone.current.scheduleMicroTask('mocha.forceTask', () => {\n originalRunTest.call(this, fn);\n });\n };\n Mocha.Runner.prototype.run = function (fn) {\n this.on('test', (e) => {\n testZone = rootZone.fork(new ProxyZoneSpec());\n });\n this.on('fail', (test, err) => {\n const proxyZoneSpec = testZone && testZone.get('ProxyZoneSpec');\n if (proxyZoneSpec && err) {\n try {\n // try catch here in case err.message is not writable\n err.message += proxyZoneSpec.getAndClearPendingTasksInfo();\n }\n catch (error) { }\n }\n });\n return originalRun.call(this, fn);\n };\n })(Mocha.Runner.prototype.runTest, Mocha.Runner.prototype.run);\n });\n}\n\nconst global$2 = globalThis;\n// __Zone_symbol_prefix global can be used to override the default zone\n// symbol prefix with a custom one if needed.\nfunction __symbol__(name) {\n const symbolPrefix = global$2['__Zone_symbol_prefix'] || '__zone_symbol__';\n return symbolPrefix + name;\n}\n\nconst __global = (typeof window !== 'undefined' && window) || (typeof self !== 'undefined' && self) || global;\nclass AsyncTestZoneSpec {\n finishCallback;\n failCallback;\n // Needs to be a getter and not a plain property in order run this just-in-time. Otherwise\n // `__symbol__` would be evaluated during top-level execution prior to the Zone prefix being\n // changed for tests.\n static get symbolParentUnresolved() {\n return __symbol__('parentUnresolved');\n }\n _pendingMicroTasks = false;\n _pendingMacroTasks = false;\n _alreadyErrored = false;\n _isSync = false;\n _existingFinishTimer = null;\n entryFunction = null;\n runZone = Zone.current;\n unresolvedChainedPromiseCount = 0;\n supportWaitUnresolvedChainedPromise = false;\n constructor(finishCallback, failCallback, namePrefix) {\n this.finishCallback = finishCallback;\n this.failCallback = failCallback;\n this.name = 'asyncTestZone for ' + namePrefix;\n this.properties = { 'AsyncTestZoneSpec': this };\n this.supportWaitUnresolvedChainedPromise =\n __global[__symbol__('supportWaitUnResolvedChainedPromise')] === true;\n }\n isUnresolvedChainedPromisePending() {\n return this.unresolvedChainedPromiseCount > 0;\n }\n _finishCallbackIfDone() {\n // NOTE: Technically the `onHasTask` could fire together with the initial synchronous\n // completion in `onInvoke`. `onHasTask` might call this method when it captured e.g.\n // microtasks in the proxy zone that now complete as part of this async zone run.\n // Consider the following scenario:\n // 1. A test `beforeEach` schedules a microtask in the ProxyZone.\n // 2. An actual empty `it` spec executes in the AsyncTestZone` (using e.g. `waitForAsync`).\n // 3. The `onInvoke` invokes `_finishCallbackIfDone` because the spec runs synchronously.\n // 4. We wait the scheduled timeout (see below) to account for unhandled promises.\n // 5. The microtask from (1) finishes and `onHasTask` is invoked.\n // --> We register a second `_finishCallbackIfDone` even though we have scheduled a timeout.\n // If the finish timeout from below is already scheduled, terminate the existing scheduled\n // finish invocation, avoiding calling `jasmine` `done` multiple times. *Note* that we would\n // want to schedule a new finish callback in case the task state changes again.\n if (this._existingFinishTimer !== null) {\n clearTimeout(this._existingFinishTimer);\n this._existingFinishTimer = null;\n }\n if (!(this._pendingMicroTasks ||\n this._pendingMacroTasks ||\n (this.supportWaitUnresolvedChainedPromise && this.isUnresolvedChainedPromisePending()))) {\n // We wait until the next tick because we would like to catch unhandled promises which could\n // cause test logic to be executed. In such cases we cannot finish with tasks pending then.\n this.runZone.run(() => {\n this._existingFinishTimer = setTimeout(() => {\n if (!this._alreadyErrored && !(this._pendingMicroTasks || this._pendingMacroTasks)) {\n this.finishCallback();\n }\n }, 0);\n });\n }\n }\n patchPromiseForTest() {\n if (!this.supportWaitUnresolvedChainedPromise) {\n return;\n }\n const patchPromiseForTest = Promise[Zone.__symbol__('patchPromiseForTest')];\n if (patchPromiseForTest) {\n patchPromiseForTest();\n }\n }\n unPatchPromiseForTest() {\n if (!this.supportWaitUnresolvedChainedPromise) {\n return;\n }\n const unPatchPromiseForTest = Promise[Zone.__symbol__('unPatchPromiseForTest')];\n if (unPatchPromiseForTest) {\n unPatchPromiseForTest();\n }\n }\n // ZoneSpec implementation below.\n name;\n properties;\n onScheduleTask(delegate, current, target, task) {\n if (task.type !== 'eventTask') {\n this._isSync = false;\n }\n if (task.type === 'microTask' && task.data && task.data instanceof Promise) {\n // check whether the promise is a chained promise\n if (task.data[AsyncTestZoneSpec.symbolParentUnresolved] === true) {\n // chained promise is being scheduled\n this.unresolvedChainedPromiseCount--;\n }\n }\n return delegate.scheduleTask(target, task);\n }\n onInvokeTask(delegate, current, target, task, applyThis, applyArgs) {\n if (task.type !== 'eventTask') {\n this._isSync = false;\n }\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n onCancelTask(delegate, current, target, task) {\n if (task.type !== 'eventTask') {\n this._isSync = false;\n }\n return delegate.cancelTask(target, task);\n }\n // Note - we need to use onInvoke at the moment to call finish when a test is\n // fully synchronous. TODO(juliemr): remove this when the logic for\n // onHasTask changes and it calls whenever the task queues are dirty.\n // updated by(JiaLiPassion), only call finish callback when no task\n // was scheduled/invoked/canceled.\n onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {\n if (!this.entryFunction) {\n this.entryFunction = delegate;\n }\n try {\n this._isSync = true;\n return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);\n }\n finally {\n // We need to check the delegate is the same as entryFunction or not.\n // Consider the following case.\n //\n // asyncTestZone.run(() => { // Here the delegate will be the entryFunction\n // Zone.current.run(() => { // Here the delegate will not be the entryFunction\n // });\n // });\n //\n // We only want to check whether there are async tasks scheduled\n // for the entry function.\n if (this._isSync && this.entryFunction === delegate) {\n this._finishCallbackIfDone();\n }\n }\n }\n onHandleError(parentZoneDelegate, currentZone, targetZone, error) {\n // Let the parent try to handle the error.\n const result = parentZoneDelegate.handleError(targetZone, error);\n if (result) {\n this.failCallback(error);\n this._alreadyErrored = true;\n }\n return false;\n }\n onHasTask(delegate, current, target, hasTaskState) {\n delegate.hasTask(target, hasTaskState);\n // We should only trigger finishCallback when the target zone is the AsyncTestZone\n // Consider the following cases.\n //\n // const childZone = asyncTestZone.fork({\n // name: 'child',\n // onHasTask: ...\n // });\n //\n // So we have nested zones declared the onHasTask hook, in this case,\n // the onHasTask will be triggered twice, and cause the finishCallbackIfDone()\n // is also be invoked twice. So we need to only trigger the finishCallbackIfDone()\n // when the current zone is the same as the target zone.\n if (current !== target) {\n return;\n }\n if (hasTaskState.change == 'microTask') {\n this._pendingMicroTasks = hasTaskState.microTask;\n this._finishCallbackIfDone();\n }\n else if (hasTaskState.change == 'macroTask') {\n this._pendingMacroTasks = hasTaskState.macroTask;\n this._finishCallbackIfDone();\n }\n }\n}\nfunction patchAsyncTest(Zone) {\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['AsyncTestZoneSpec'] = AsyncTestZoneSpec;\n Zone.__load_patch('asynctest', (global, Zone, api) => {\n /**\n * Wraps a test function in an asynchronous test zone. The test will automatically\n * complete when all asynchronous calls within this zone are done.\n */\n Zone[api.symbol('asyncTest')] = function asyncTest(fn) {\n // If we're running using the Jasmine test framework, adapt to call the 'done'\n // function when asynchronous activity is finished.\n if (global.jasmine) {\n // Not using an arrow function to preserve context passed from call site\n return function (done) {\n if (!done) {\n // if we run beforeEach in @angular/core/testing/testing_internal then we get no done\n // fake it here and assume sync.\n done = function () { };\n done.fail = function (e) {\n throw e;\n };\n }\n runInTestZone(fn, this, done, (err) => {\n if (typeof err === 'string') {\n return done.fail(new Error(err));\n }\n else {\n done.fail(err);\n }\n });\n };\n }\n // Otherwise, return a promise which will resolve when asynchronous activity\n // is finished. This will be correctly consumed by the Mocha framework with\n // it('...', async(myFn)); or can be used in a custom framework.\n // Not using an arrow function to preserve context passed from call site\n return function () {\n return new Promise((finishCallback, failCallback) => {\n runInTestZone(fn, this, finishCallback, failCallback);\n });\n };\n };\n function runInTestZone(fn, context, finishCallback, failCallback) {\n const currentZone = Zone.current;\n const AsyncTestZoneSpec = Zone['AsyncTestZoneSpec'];\n if (AsyncTestZoneSpec === undefined) {\n throw new Error('AsyncTestZoneSpec is needed for the async() test helper but could not be found. ' +\n 'Please make sure that your environment includes zone.js/plugins/async-test');\n }\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n if (!ProxyZoneSpec) {\n throw new Error('ProxyZoneSpec is needed for the async() test helper but could not be found. ' +\n 'Please make sure that your environment includes zone.js/plugins/proxy');\n }\n const proxyZoneSpec = ProxyZoneSpec.get();\n ProxyZoneSpec.assertPresent();\n // We need to create the AsyncTestZoneSpec outside the ProxyZone.\n // If we do it in ProxyZone then we will get to infinite recursion.\n const proxyZone = Zone.current.getZoneWith('ProxyZoneSpec');\n const previousDelegate = proxyZoneSpec.getDelegate();\n proxyZone.parent.run(() => {\n const testZoneSpec = new AsyncTestZoneSpec(() => {\n // Need to restore the original zone.\n if (proxyZoneSpec.getDelegate() == testZoneSpec) {\n // Only reset the zone spec if it's\n // still this one. Otherwise, assume\n // it's OK.\n proxyZoneSpec.setDelegate(previousDelegate);\n }\n testZoneSpec.unPatchPromiseForTest();\n currentZone.run(() => {\n finishCallback();\n });\n }, (error) => {\n // Need to restore the original zone.\n if (proxyZoneSpec.getDelegate() == testZoneSpec) {\n // Only reset the zone spec if it's sill this one. Otherwise, assume it's OK.\n proxyZoneSpec.setDelegate(previousDelegate);\n }\n testZoneSpec.unPatchPromiseForTest();\n currentZone.run(() => {\n failCallback(error);\n });\n }, 'test');\n proxyZoneSpec.setDelegate(testZoneSpec);\n testZoneSpec.patchPromiseForTest();\n });\n return Zone.current.runGuarded(fn, context);\n }\n });\n}\n\nconst global$1 = (typeof window === 'object' && window) || (typeof self === 'object' && self) || globalThis.global;\nconst OriginalDate = global$1.Date;\n// Since when we compile this file to `es2015`, and if we define\n// this `FakeDate` as `class FakeDate`, and then set `FakeDate.prototype`\n// there will be an error which is `Cannot assign to read only property 'prototype'`\n// so we need to use function implementation here.\nfunction FakeDate() {\n if (arguments.length === 0) {\n const d = new OriginalDate();\n d.setTime(FakeDate.now());\n return d;\n }\n else {\n const args = Array.prototype.slice.call(arguments);\n return new OriginalDate(...args);\n }\n}\nFakeDate.now = function () {\n const fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (fakeAsyncTestZoneSpec) {\n return fakeAsyncTestZoneSpec.getFakeSystemTime();\n }\n return OriginalDate.now.apply(this, arguments);\n};\nFakeDate.UTC = OriginalDate.UTC;\nFakeDate.parse = OriginalDate.parse;\n// keep a reference for zone patched timer function\nlet patchedTimers;\nconst timeoutCallback = function () { };\nclass Scheduler {\n // Next scheduler id.\n static nextNodeJSId = 1;\n static nextId = -1;\n // Scheduler queue with the tuple of end time and callback function - sorted by end time.\n _schedulerQueue = [];\n // Current simulated time in millis.\n _currentTickTime = 0;\n // Current fake system base time in millis.\n _currentFakeBaseSystemTime = OriginalDate.now();\n // track requeuePeriodicTimer\n _currentTickRequeuePeriodicEntries = [];\n constructor() { }\n static getNextId() {\n const id = patchedTimers.nativeSetTimeout.call(global$1, timeoutCallback, 0);\n patchedTimers.nativeClearTimeout.call(global$1, id);\n if (typeof id === 'number') {\n return id;\n }\n // in NodeJS, we just use a number for fakeAsync, since it will not\n // conflict with native TimeoutId\n return Scheduler.nextNodeJSId++;\n }\n getCurrentTickTime() {\n return this._currentTickTime;\n }\n getFakeSystemTime() {\n return this._currentFakeBaseSystemTime + this._currentTickTime;\n }\n setFakeBaseSystemTime(fakeBaseSystemTime) {\n this._currentFakeBaseSystemTime = fakeBaseSystemTime;\n }\n getRealSystemTime() {\n return OriginalDate.now();\n }\n scheduleFunction(cb, delay, options) {\n options = {\n ...{\n args: [],\n isPeriodic: false,\n isRequestAnimationFrame: false,\n id: -1,\n isRequeuePeriodic: false,\n },\n ...options,\n };\n let currentId = options.id < 0 ? Scheduler.nextId : options.id;\n Scheduler.nextId = Scheduler.getNextId();\n let endTime = this._currentTickTime + delay;\n // Insert so that scheduler queue remains sorted by end time.\n let newEntry = {\n endTime: endTime,\n id: currentId,\n func: cb,\n args: options.args,\n delay: delay,\n isPeriodic: options.isPeriodic,\n isRequestAnimationFrame: options.isRequestAnimationFrame,\n };\n if (options.isRequeuePeriodic) {\n this._currentTickRequeuePeriodicEntries.push(newEntry);\n }\n let i = 0;\n for (; i < this._schedulerQueue.length; i++) {\n let currentEntry = this._schedulerQueue[i];\n if (newEntry.endTime < currentEntry.endTime) {\n break;\n }\n }\n this._schedulerQueue.splice(i, 0, newEntry);\n return currentId;\n }\n removeScheduledFunctionWithId(id) {\n for (let i = 0; i < this._schedulerQueue.length; i++) {\n if (this._schedulerQueue[i].id == id) {\n this._schedulerQueue.splice(i, 1);\n break;\n }\n }\n }\n removeAll() {\n this._schedulerQueue = [];\n }\n getTimerCount() {\n return this._schedulerQueue.length;\n }\n tickToNext(step = 1, doTick, tickOptions) {\n if (this._schedulerQueue.length < step) {\n return;\n }\n // Find the last task currently queued in the scheduler queue and tick\n // till that time.\n const startTime = this._currentTickTime;\n const targetTask = this._schedulerQueue[step - 1];\n this.tick(targetTask.endTime - startTime, doTick, tickOptions);\n }\n tick(millis = 0, doTick, tickOptions) {\n let finalTime = this._currentTickTime + millis;\n let lastCurrentTime = 0;\n tickOptions = Object.assign({ processNewMacroTasksSynchronously: true }, tickOptions);\n // we need to copy the schedulerQueue so nested timeout\n // will not be wrongly called in the current tick\n // https://github.com/angular/angular/issues/33799\n const schedulerQueue = tickOptions.processNewMacroTasksSynchronously\n ? this._schedulerQueue\n : this._schedulerQueue.slice();\n if (schedulerQueue.length === 0 && doTick) {\n doTick(millis);\n return;\n }\n while (schedulerQueue.length > 0) {\n // clear requeueEntries before each loop\n this._currentTickRequeuePeriodicEntries = [];\n let current = schedulerQueue[0];\n if (finalTime < current.endTime) {\n // Done processing the queue since it's sorted by endTime.\n break;\n }\n else {\n // Time to run scheduled function. Remove it from the head of queue.\n let current = schedulerQueue.shift();\n if (!tickOptions.processNewMacroTasksSynchronously) {\n const idx = this._schedulerQueue.indexOf(current);\n if (idx >= 0) {\n this._schedulerQueue.splice(idx, 1);\n }\n }\n lastCurrentTime = this._currentTickTime;\n this._currentTickTime = current.endTime;\n if (doTick) {\n doTick(this._currentTickTime - lastCurrentTime);\n }\n let retval = current.func.apply(global$1, current.isRequestAnimationFrame ? [this._currentTickTime] : current.args);\n if (!retval) {\n // Uncaught exception in the current scheduled function. Stop processing the queue.\n break;\n }\n // check is there any requeue periodic entry is added in\n // current loop, if there is, we need to add to current loop\n if (!tickOptions.processNewMacroTasksSynchronously) {\n this._currentTickRequeuePeriodicEntries.forEach((newEntry) => {\n let i = 0;\n for (; i < schedulerQueue.length; i++) {\n const currentEntry = schedulerQueue[i];\n if (newEntry.endTime < currentEntry.endTime) {\n break;\n }\n }\n schedulerQueue.splice(i, 0, newEntry);\n });\n }\n }\n }\n lastCurrentTime = this._currentTickTime;\n this._currentTickTime = finalTime;\n if (doTick) {\n doTick(this._currentTickTime - lastCurrentTime);\n }\n }\n flushOnlyPendingTimers(doTick) {\n if (this._schedulerQueue.length === 0) {\n return 0;\n }\n // Find the last task currently queued in the scheduler queue and tick\n // till that time.\n const startTime = this._currentTickTime;\n const lastTask = this._schedulerQueue[this._schedulerQueue.length - 1];\n this.tick(lastTask.endTime - startTime, doTick, { processNewMacroTasksSynchronously: false });\n return this._currentTickTime - startTime;\n }\n flush(limit = 20, flushPeriodic = false, doTick) {\n if (flushPeriodic) {\n return this.flushPeriodic(doTick);\n }\n else {\n return this.flushNonPeriodic(limit, doTick);\n }\n }\n flushPeriodic(doTick) {\n if (this._schedulerQueue.length === 0) {\n return 0;\n }\n // Find the last task currently queued in the scheduler queue and tick\n // till that time.\n const startTime = this._currentTickTime;\n const lastTask = this._schedulerQueue[this._schedulerQueue.length - 1];\n this.tick(lastTask.endTime - startTime, doTick);\n return this._currentTickTime - startTime;\n }\n flushNonPeriodic(limit, doTick) {\n const startTime = this._currentTickTime;\n let lastCurrentTime = 0;\n let count = 0;\n while (this._schedulerQueue.length > 0) {\n count++;\n if (count > limit) {\n throw new Error('flush failed after reaching the limit of ' +\n limit +\n ' tasks. Does your code use a polling timeout?');\n }\n // flush only non-periodic timers.\n // If the only remaining tasks are periodic(or requestAnimationFrame), finish flushing.\n if (this._schedulerQueue.filter((task) => !task.isPeriodic && !task.isRequestAnimationFrame)\n .length === 0) {\n break;\n }\n const current = this._schedulerQueue.shift();\n lastCurrentTime = this._currentTickTime;\n this._currentTickTime = current.endTime;\n if (doTick) {\n // Update any secondary schedulers like Jasmine mock Date.\n doTick(this._currentTickTime - lastCurrentTime);\n }\n const retval = current.func.apply(global$1, current.args);\n if (!retval) {\n // Uncaught exception in the current scheduled function. Stop processing the queue.\n break;\n }\n }\n return this._currentTickTime - startTime;\n }\n}\nclass FakeAsyncTestZoneSpec {\n trackPendingRequestAnimationFrame;\n macroTaskOptions;\n static assertInZone() {\n if (Zone.current.get('FakeAsyncTestZoneSpec') == null) {\n throw new Error('The code should be running in the fakeAsync zone to call this function');\n }\n }\n _scheduler = new Scheduler();\n _microtasks = [];\n _lastError = null;\n _uncaughtPromiseErrors = Promise[Zone.__symbol__('uncaughtPromiseErrors')];\n pendingPeriodicTimers = [];\n pendingTimers = [];\n patchDateLocked = false;\n constructor(namePrefix, trackPendingRequestAnimationFrame = false, macroTaskOptions) {\n this.trackPendingRequestAnimationFrame = trackPendingRequestAnimationFrame;\n this.macroTaskOptions = macroTaskOptions;\n this.name = 'fakeAsyncTestZone for ' + namePrefix;\n // in case user can't access the construction of FakeAsyncTestSpec\n // user can also define macroTaskOptions by define a global variable.\n if (!this.macroTaskOptions) {\n this.macroTaskOptions = global$1[Zone.__symbol__('FakeAsyncTestMacroTask')];\n }\n }\n _fnAndFlush(fn, completers) {\n return (...args) => {\n fn.apply(global$1, args);\n if (this._lastError === null) {\n // Success\n if (completers.onSuccess != null) {\n completers.onSuccess.apply(global$1);\n }\n // Flush microtasks only on success.\n this.flushMicrotasks();\n }\n else {\n // Failure\n if (completers.onError != null) {\n completers.onError.apply(global$1);\n }\n }\n // Return true if there were no errors, false otherwise.\n return this._lastError === null;\n };\n }\n static _removeTimer(timers, id) {\n let index = timers.indexOf(id);\n if (index > -1) {\n timers.splice(index, 1);\n }\n }\n _dequeueTimer(id) {\n return () => {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id);\n };\n }\n _requeuePeriodicTimer(fn, interval, args, id) {\n return () => {\n // Requeue the timer callback if it's not been canceled.\n if (this.pendingPeriodicTimers.indexOf(id) !== -1) {\n this._scheduler.scheduleFunction(fn, interval, {\n args,\n isPeriodic: true,\n id,\n isRequeuePeriodic: true,\n });\n }\n };\n }\n _dequeuePeriodicTimer(id) {\n return () => {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id);\n };\n }\n _setTimeout(fn, delay, args, isTimer = true) {\n let removeTimerFn = this._dequeueTimer(Scheduler.nextId);\n // Queue the callback and dequeue the timer on success and error.\n let cb = this._fnAndFlush(fn, { onSuccess: removeTimerFn, onError: removeTimerFn });\n let id = this._scheduler.scheduleFunction(cb, delay, { args, isRequestAnimationFrame: !isTimer });\n if (isTimer) {\n this.pendingTimers.push(id);\n }\n return id;\n }\n _clearTimeout(id) {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id);\n this._scheduler.removeScheduledFunctionWithId(id);\n }\n _setInterval(fn, interval, args) {\n let id = Scheduler.nextId;\n let completers = { onSuccess: null, onError: this._dequeuePeriodicTimer(id) };\n let cb = this._fnAndFlush(fn, completers);\n // Use the callback created above to requeue on success.\n completers.onSuccess = this._requeuePeriodicTimer(cb, interval, args, id);\n // Queue the callback and dequeue the periodic timer only on error.\n this._scheduler.scheduleFunction(cb, interval, { args, isPeriodic: true });\n this.pendingPeriodicTimers.push(id);\n return id;\n }\n _clearInterval(id) {\n FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id);\n this._scheduler.removeScheduledFunctionWithId(id);\n }\n _resetLastErrorAndThrow() {\n let error = this._lastError || this._uncaughtPromiseErrors[0];\n this._uncaughtPromiseErrors.length = 0;\n this._lastError = null;\n throw error;\n }\n getCurrentTickTime() {\n return this._scheduler.getCurrentTickTime();\n }\n getFakeSystemTime() {\n return this._scheduler.getFakeSystemTime();\n }\n setFakeBaseSystemTime(realTime) {\n this._scheduler.setFakeBaseSystemTime(realTime);\n }\n getRealSystemTime() {\n return this._scheduler.getRealSystemTime();\n }\n static patchDate() {\n if (!!global$1[Zone.__symbol__('disableDatePatching')]) {\n // we don't want to patch global Date\n // because in some case, global Date\n // is already being patched, we need to provide\n // an option to let user still use their\n // own version of Date.\n return;\n }\n if (global$1['Date'] === FakeDate) {\n // already patched\n return;\n }\n global$1['Date'] = FakeDate;\n FakeDate.prototype = OriginalDate.prototype;\n // try check and reset timers\n // because jasmine.clock().install() may\n // have replaced the global timer\n FakeAsyncTestZoneSpec.checkTimerPatch();\n }\n static resetDate() {\n if (global$1['Date'] === FakeDate) {\n global$1['Date'] = OriginalDate;\n }\n }\n static checkTimerPatch() {\n if (!patchedTimers) {\n throw new Error('Expected timers to have been patched.');\n }\n if (global$1.setTimeout !== patchedTimers.setTimeout) {\n global$1.setTimeout = patchedTimers.setTimeout;\n global$1.clearTimeout = patchedTimers.clearTimeout;\n }\n if (global$1.setInterval !== patchedTimers.setInterval) {\n global$1.setInterval = patchedTimers.setInterval;\n global$1.clearInterval = patchedTimers.clearInterval;\n }\n }\n lockDatePatch() {\n this.patchDateLocked = true;\n FakeAsyncTestZoneSpec.patchDate();\n }\n unlockDatePatch() {\n this.patchDateLocked = false;\n FakeAsyncTestZoneSpec.resetDate();\n }\n tickToNext(steps = 1, doTick, tickOptions = { processNewMacroTasksSynchronously: true }) {\n if (steps <= 0) {\n return;\n }\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n this._scheduler.tickToNext(steps, doTick, tickOptions);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n }\n tick(millis = 0, doTick, tickOptions = { processNewMacroTasksSynchronously: true }) {\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n this._scheduler.tick(millis, doTick, tickOptions);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n }\n flushMicrotasks() {\n FakeAsyncTestZoneSpec.assertInZone();\n const flushErrors = () => {\n if (this._lastError !== null || this._uncaughtPromiseErrors.length) {\n // If there is an error stop processing the microtask queue and rethrow the error.\n this._resetLastErrorAndThrow();\n }\n };\n while (this._microtasks.length > 0) {\n let microtask = this._microtasks.shift();\n microtask.func.apply(microtask.target, microtask.args);\n }\n flushErrors();\n }\n flush(limit, flushPeriodic, doTick) {\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n const elapsed = this._scheduler.flush(limit, flushPeriodic, doTick);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n return elapsed;\n }\n flushOnlyPendingTimers(doTick) {\n FakeAsyncTestZoneSpec.assertInZone();\n this.flushMicrotasks();\n const elapsed = this._scheduler.flushOnlyPendingTimers(doTick);\n if (this._lastError !== null) {\n this._resetLastErrorAndThrow();\n }\n return elapsed;\n }\n removeAllTimers() {\n FakeAsyncTestZoneSpec.assertInZone();\n this._scheduler.removeAll();\n this.pendingPeriodicTimers = [];\n this.pendingTimers = [];\n }\n getTimerCount() {\n return this._scheduler.getTimerCount() + this._microtasks.length;\n }\n // ZoneSpec implementation below.\n name;\n properties = { 'FakeAsyncTestZoneSpec': this };\n onScheduleTask(delegate, current, target, task) {\n switch (task.type) {\n case 'microTask':\n let args = task.data && task.data.args;\n // should pass additional arguments to callback if have any\n // currently we know process.nextTick will have such additional\n // arguments\n let additionalArgs;\n if (args) {\n let callbackIndex = task.data.cbIdx;\n if (typeof args.length === 'number' && args.length > callbackIndex + 1) {\n additionalArgs = Array.prototype.slice.call(args, callbackIndex + 1);\n }\n }\n this._microtasks.push({\n func: task.invoke,\n args: additionalArgs,\n target: task.data && task.data.target,\n });\n break;\n case 'macroTask':\n switch (task.source) {\n case 'setTimeout':\n task.data['handleId'] = this._setTimeout(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));\n break;\n case 'setImmediate':\n task.data['handleId'] = this._setTimeout(task.invoke, 0, Array.prototype.slice.call(task.data['args'], 1));\n break;\n case 'setInterval':\n task.data['handleId'] = this._setInterval(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));\n break;\n case 'XMLHttpRequest.send':\n throw new Error('Cannot make XHRs from within a fake async test. Request URL: ' +\n task.data['url']);\n case 'requestAnimationFrame':\n case 'webkitRequestAnimationFrame':\n case 'mozRequestAnimationFrame':\n // Simulate a requestAnimationFrame by using a setTimeout with 16 ms.\n // (60 frames per second)\n task.data['handleId'] = this._setTimeout(task.invoke, 16, task.data['args'], this.trackPendingRequestAnimationFrame);\n break;\n default:\n // user can define which macroTask they want to support by passing\n // macroTaskOptions\n const macroTaskOption = this.findMacroTaskOption(task);\n if (macroTaskOption) {\n const args = task.data && task.data['args'];\n const delay = args && args.length > 1 ? args[1] : 0;\n let callbackArgs = macroTaskOption.callbackArgs ? macroTaskOption.callbackArgs : args;\n if (!!macroTaskOption.isPeriodic) {\n // periodic macroTask, use setInterval to simulate\n task.data['handleId'] = this._setInterval(task.invoke, delay, callbackArgs);\n task.data.isPeriodic = true;\n }\n else {\n // not periodic, use setTimeout to simulate\n task.data['handleId'] = this._setTimeout(task.invoke, delay, callbackArgs);\n }\n break;\n }\n throw new Error('Unknown macroTask scheduled in fake async test: ' + task.source);\n }\n break;\n case 'eventTask':\n task = delegate.scheduleTask(target, task);\n break;\n }\n return task;\n }\n onCancelTask(delegate, current, target, task) {\n switch (task.source) {\n case 'setTimeout':\n case 'requestAnimationFrame':\n case 'webkitRequestAnimationFrame':\n case 'mozRequestAnimationFrame':\n return this._clearTimeout(task.data['handleId']);\n case 'setInterval':\n return this._clearInterval(task.data['handleId']);\n default:\n // user can define which macroTask they want to support by passing\n // macroTaskOptions\n const macroTaskOption = this.findMacroTaskOption(task);\n if (macroTaskOption) {\n const handleId = task.data['handleId'];\n return macroTaskOption.isPeriodic\n ? this._clearInterval(handleId)\n : this._clearTimeout(handleId);\n }\n return delegate.cancelTask(target, task);\n }\n }\n onInvoke(delegate, current, target, callback, applyThis, applyArgs, source) {\n try {\n FakeAsyncTestZoneSpec.patchDate();\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n }\n finally {\n if (!this.patchDateLocked) {\n FakeAsyncTestZoneSpec.resetDate();\n }\n }\n }\n findMacroTaskOption(task) {\n if (!this.macroTaskOptions) {\n return null;\n }\n for (let i = 0; i < this.macroTaskOptions.length; i++) {\n const macroTaskOption = this.macroTaskOptions[i];\n if (macroTaskOption.source === task.source) {\n return macroTaskOption;\n }\n }\n return null;\n }\n onHandleError(parentZoneDelegate, currentZone, targetZone, error) {\n // ComponentFixture has a special-case handling to detect FakeAsyncTestZoneSpec\n // and prevent rethrowing the error from the onError subscription since it's handled here.\n this._lastError = error;\n return false; // Don't propagate error to parent zone.\n }\n}\nlet _fakeAsyncTestZoneSpec = null;\nfunction getProxyZoneSpec() {\n return Zone && Zone['ProxyZoneSpec'];\n}\nlet _sharedProxyZoneSpec = null;\nlet _sharedProxyZone = null;\n/**\n * Clears out the shared fake async zone for a test.\n * To be called in a global `beforeEach`.\n *\n * @experimental\n */\nfunction resetFakeAsyncZone() {\n if (_fakeAsyncTestZoneSpec) {\n _fakeAsyncTestZoneSpec.unlockDatePatch();\n }\n _fakeAsyncTestZoneSpec = null;\n getProxyZoneSpec()?.get()?.resetDelegate();\n _sharedProxyZoneSpec?.resetDelegate();\n}\n/**\n * Wraps a function to be executed in the fakeAsync zone:\n * - microtasks are manually executed by calling `flushMicrotasks()`,\n * - timers are synchronous, `tick()` simulates the asynchronous passage of time.\n *\n * When flush is `false`, if there are any pending timers at the end of the function,\n * an exception will be thrown.\n *\n * Can be used to wrap inject() calls.\n *\n * ## Example\n *\n * {@example core/testing/ts/fake_async.ts region='basic'}\n *\n * @param fn\n * @param options\n * flush: when true, will drain the macrotask queue after the test function completes.\n * @returns The function wrapped to be executed in the fakeAsync zone\n *\n * @experimental\n */\nfunction fakeAsync(fn, options = {}) {\n const { flush = true } = options;\n // Not using an arrow function to preserve context passed from call site\n const fakeAsyncFn = function (...args) {\n const ProxyZoneSpec = getProxyZoneSpec();\n if (!ProxyZoneSpec) {\n throw new Error('ProxyZoneSpec is needed for the fakeAsync() test helper but could not be found. ' +\n 'Make sure that your environment includes zone-testing.js');\n }\n const proxyZoneSpec = ProxyZoneSpec.assertPresent();\n if (Zone.current.get('FakeAsyncTestZoneSpec')) {\n throw new Error('fakeAsync() calls can not be nested');\n }\n try {\n // in case jasmine.clock init a fakeAsyncTestZoneSpec\n if (!_fakeAsyncTestZoneSpec) {\n const FakeAsyncTestZoneSpec = Zone && Zone['FakeAsyncTestZoneSpec'];\n if (proxyZoneSpec.getDelegate() instanceof FakeAsyncTestZoneSpec) {\n throw new Error('fakeAsync() calls can not be nested');\n }\n _fakeAsyncTestZoneSpec = new FakeAsyncTestZoneSpec();\n }\n let res;\n const lastProxyZoneSpec = proxyZoneSpec.getDelegate();\n proxyZoneSpec.setDelegate(_fakeAsyncTestZoneSpec);\n _fakeAsyncTestZoneSpec.lockDatePatch();\n try {\n res = fn.apply(this, args);\n if (flush) {\n _fakeAsyncTestZoneSpec.flush(20, true);\n }\n else {\n flushMicrotasks();\n }\n }\n finally {\n proxyZoneSpec.setDelegate(lastProxyZoneSpec);\n }\n if (!flush) {\n if (_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length > 0) {\n throw new Error(`${_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length} ` +\n `periodic timer(s) still in the queue.`);\n }\n if (_fakeAsyncTestZoneSpec.pendingTimers.length > 0) {\n throw new Error(`${_fakeAsyncTestZoneSpec.pendingTimers.length} timer(s) still in the queue.`);\n }\n }\n return res;\n }\n finally {\n resetFakeAsyncZone();\n }\n };\n fakeAsyncFn.isFakeAsync = true;\n return fakeAsyncFn;\n}\nfunction _getFakeAsyncZoneSpec() {\n if (_fakeAsyncTestZoneSpec == null) {\n _fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');\n if (_fakeAsyncTestZoneSpec == null) {\n throw new Error('The code should be running in the fakeAsync zone to call this function');\n }\n }\n return _fakeAsyncTestZoneSpec;\n}\n/**\n * Simulates the asynchronous passage of time for the timers in the fakeAsync zone.\n *\n * The microtasks queue is drained at the very start of this function and after any timer\n * callback has been executed.\n *\n * ## Example\n *\n * {@example core/testing/ts/fake_async.ts region='basic'}\n *\n * @experimental\n */\nfunction tick(millis = 0, ignoreNestedTimeout = false) {\n _getFakeAsyncZoneSpec().tick(millis, null, ignoreNestedTimeout);\n}\n/**\n * Simulates the asynchronous passage of time for the timers in the fakeAsync zone by\n * draining the macrotask queue until it is empty. The returned value is the milliseconds\n * of time that would have been elapsed.\n *\n * @param maxTurns\n * @returns The simulated time elapsed, in millis.\n *\n * @experimental\n */\nfunction flush(maxTurns) {\n return _getFakeAsyncZoneSpec().flush(maxTurns);\n}\n/**\n * Discard all remaining periodic tasks.\n *\n * @experimental\n */\nfunction discardPeriodicTasks() {\n const zoneSpec = _getFakeAsyncZoneSpec();\n zoneSpec.pendingPeriodicTimers;\n zoneSpec.pendingPeriodicTimers.length = 0;\n}\n/**\n * Wraps a function to be executed in a shared ProxyZone.\n *\n * If no shared ProxyZone exists, one is created and reused for subsequent calls.\n * Useful for wrapping test setup (beforeEach) and test execution (it) when test\n * runner patching isn't available or desired for setting up the ProxyZone.\n *\n * @param fn The function to wrap.\n * @returns A function that executes the original function within the shared ProxyZone.\n *\n * @experimental\n */\nfunction withProxyZone(fn) {\n const autoProxyFn = function (...args) {\n const proxyZoneSpec = getProxyZoneSpec();\n if (proxyZoneSpec === undefined) {\n throw new Error('ProxyZoneSpec is needed for the withProxyZone() test helper but could not be found. ' +\n 'Make sure that your environment includes zone-testing.js');\n }\n const proxyZone = proxyZoneSpec.get() !== undefined ? Zone.current : getOrCreateRootProxy();\n return proxyZone.run(fn, this, args);\n };\n return autoProxyFn;\n}\nfunction getOrCreateRootProxy() {\n const ProxyZoneSpec = getProxyZoneSpec();\n if (ProxyZoneSpec === undefined) {\n throw new Error('ProxyZoneSpec is needed for withProxyZone but could not be found. ' +\n 'Make sure that your environment includes zone-testing.js');\n }\n // Ensure the shared ProxyZoneSpec instance exists\n if (_sharedProxyZoneSpec === null) {\n _sharedProxyZoneSpec = new ProxyZoneSpec();\n }\n _sharedProxyZone = Zone.root.fork(_sharedProxyZoneSpec);\n return _sharedProxyZone;\n}\n/**\n * Flush any pending microtasks.\n *\n * @experimental\n */\nfunction flushMicrotasks() {\n _getFakeAsyncZoneSpec().flushMicrotasks();\n}\nfunction patchFakeAsyncTest(Zone) {\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['FakeAsyncTestZoneSpec'] = FakeAsyncTestZoneSpec;\n Zone.__load_patch('fakeasync', (global, Zone, api) => {\n Zone[api.symbol('fakeAsyncTest')] = {\n resetFakeAsyncZone,\n flushMicrotasks,\n discardPeriodicTasks,\n tick,\n flush,\n fakeAsync,\n withProxyZone,\n };\n }, true);\n patchedTimers = {\n setTimeout: global$1.setTimeout,\n setInterval: global$1.setInterval,\n clearTimeout: global$1.clearTimeout,\n clearInterval: global$1.clearInterval,\n nativeSetTimeout: global$1[Zone.__symbol__('setTimeout')],\n nativeClearTimeout: global$1[Zone.__symbol__('clearTimeout')],\n };\n Scheduler.nextId = Scheduler.getNextId();\n}\n\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nfunction patchLongStackTrace(Zone) {\n const NEWLINE = '\\n';\n const IGNORE_FRAMES = {};\n const creationTrace = '__creationTrace__';\n const ERROR_TAG = 'STACKTRACE TRACKING';\n const SEP_TAG = '__SEP_TAG__';\n let sepTemplate = SEP_TAG + '@[native]';\n class LongStackTrace {\n error = getStacktrace();\n timestamp = new Date();\n }\n function getStacktraceWithUncaughtError() {\n return new Error(ERROR_TAG);\n }\n function getStacktraceWithCaughtError() {\n try {\n throw getStacktraceWithUncaughtError();\n }\n catch (err) {\n return err;\n }\n }\n // Some implementations of exception handling don't create a stack trace if the exception\n // isn't thrown, however it's faster not to actually throw the exception.\n const error = getStacktraceWithUncaughtError();\n const caughtError = getStacktraceWithCaughtError();\n const getStacktrace = error.stack\n ? getStacktraceWithUncaughtError\n : caughtError.stack\n ? getStacktraceWithCaughtError\n : getStacktraceWithUncaughtError;\n function getFrames(error) {\n return error.stack ? error.stack.split(NEWLINE) : [];\n }\n function addErrorStack(lines, error) {\n let trace = getFrames(error);\n for (let i = 0; i < trace.length; i++) {\n const frame = trace[i];\n // Filter out the Frames which are part of stack capturing.\n if (!IGNORE_FRAMES.hasOwnProperty(frame)) {\n lines.push(trace[i]);\n }\n }\n }\n function renderLongStackTrace(frames, stack) {\n const longTrace = [stack ? stack.trim() : ''];\n if (frames) {\n let timestamp = new Date().getTime();\n for (let i = 0; i < frames.length; i++) {\n const traceFrames = frames[i];\n const lastTime = traceFrames.timestamp;\n let separator = `____________________Elapsed ${timestamp - lastTime.getTime()} ms; At: ${lastTime}`;\n separator = separator.replace(/[^\\w\\d]/g, '_');\n longTrace.push(sepTemplate.replace(SEP_TAG, separator));\n addErrorStack(longTrace, traceFrames.error);\n timestamp = lastTime.getTime();\n }\n }\n return longTrace.join(NEWLINE);\n }\n // if Error.stackTraceLimit is 0, means stack trace\n // is disabled, so we don't need to generate long stack trace\n // this will improve performance in some test(some test will\n // set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698\n function stackTracesEnabled() {\n // Cast through any since this property only exists on Error in the nodejs\n // typings.\n return Error.stackTraceLimit > 0;\n }\n Zone['longStackTraceZoneSpec'] = {\n name: 'long-stack-trace',\n longStackTraceLimit: 10, // Max number of task to keep the stack trace for.\n // add a getLongStackTrace method in spec to\n // handle handled reject promise error.\n getLongStackTrace: function (error) {\n if (!error) {\n return undefined;\n }\n const trace = error[Zone.__symbol__('currentTaskTrace')];\n if (!trace) {\n return error.stack;\n }\n return renderLongStackTrace(trace, error.stack);\n },\n onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) {\n if (stackTracesEnabled()) {\n const currentTask = Zone.currentTask;\n let trace = (currentTask && currentTask.data && currentTask.data[creationTrace]) || [];\n trace = [new LongStackTrace()].concat(trace);\n if (trace.length > this.longStackTraceLimit) {\n trace.length = this.longStackTraceLimit;\n }\n if (!task.data)\n task.data = {};\n if (task.type === 'eventTask') {\n // Fix issue https://github.com/angular/zone.js/issues/1195,\n // For event task of browser, by default, all task will share a\n // singleton instance of data object, we should create a new one here\n // The cast to `any` is required to workaround a closure bug which wrongly applies\n // URL sanitization rules to .data access.\n task.data = { ...task.data };\n }\n task.data[creationTrace] = trace;\n }\n return parentZoneDelegate.scheduleTask(targetZone, task);\n },\n onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {\n if (stackTracesEnabled()) {\n const parentTask = Zone.currentTask || error.task;\n if (error instanceof Error && parentTask) {\n const longStack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);\n try {\n error.stack = error.longStack = longStack;\n }\n catch (err) { }\n }\n }\n return parentZoneDelegate.handleError(targetZone, error);\n },\n };\n function captureStackTraces(stackTraces, count) {\n if (count > 0) {\n stackTraces.push(getFrames(new LongStackTrace().error));\n captureStackTraces(stackTraces, count - 1);\n }\n }\n function computeIgnoreFrames() {\n if (!stackTracesEnabled()) {\n return;\n }\n const frames = [];\n captureStackTraces(frames, 2);\n const frames1 = frames[0];\n const frames2 = frames[1];\n for (let i = 0; i < frames1.length; i++) {\n const frame1 = frames1[i];\n if (frame1.indexOf(ERROR_TAG) == -1) {\n let match = frame1.match(/^\\s*at\\s+/);\n if (match) {\n sepTemplate = match[0] + SEP_TAG + ' (http://localhost)';\n break;\n }\n }\n }\n for (let i = 0; i < frames1.length; i++) {\n const frame1 = frames1[i];\n const frame2 = frames2[i];\n if (frame1 === frame2) {\n IGNORE_FRAMES[frame1] = true;\n }\n else {\n break;\n }\n }\n }\n computeIgnoreFrames();\n}\n\nclass ProxyZoneSpec {\n defaultSpecDelegate;\n name = 'ProxyZone';\n _delegateSpec = null;\n properties = { 'ProxyZoneSpec': this };\n propertyKeys = null;\n lastTaskState = null;\n isNeedToTriggerHasTask = false;\n tasks = [];\n static get() {\n return Zone.current.get('ProxyZoneSpec');\n }\n static isLoaded() {\n return ProxyZoneSpec.get() instanceof ProxyZoneSpec;\n }\n static assertPresent() {\n const spec = ProxyZoneSpec.get();\n if (spec === undefined) {\n throw new Error(`Expected to be running in 'ProxyZone', but it was not found.`);\n }\n return spec;\n }\n constructor(defaultSpecDelegate = null) {\n this.defaultSpecDelegate = defaultSpecDelegate;\n this.setDelegate(defaultSpecDelegate);\n }\n setDelegate(delegateSpec) {\n const isNewDelegate = this._delegateSpec !== delegateSpec;\n this._delegateSpec = delegateSpec;\n this.propertyKeys && this.propertyKeys.forEach((key) => delete this.properties[key]);\n this.propertyKeys = null;\n if (delegateSpec && delegateSpec.properties) {\n this.propertyKeys = Object.keys(delegateSpec.properties);\n this.propertyKeys.forEach((k) => (this.properties[k] = delegateSpec.properties[k]));\n }\n // if a new delegateSpec was set, check if we need to trigger hasTask\n if (isNewDelegate &&\n this.lastTaskState &&\n (this.lastTaskState.macroTask || this.lastTaskState.microTask)) {\n this.isNeedToTriggerHasTask = true;\n }\n }\n getDelegate() {\n return this._delegateSpec;\n }\n resetDelegate() {\n this.getDelegate();\n this.setDelegate(this.defaultSpecDelegate);\n }\n tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone) {\n if (this.isNeedToTriggerHasTask && this.lastTaskState) {\n // last delegateSpec has microTask or macroTask\n // should call onHasTask in current delegateSpec\n this.isNeedToTriggerHasTask = false;\n this.onHasTask(parentZoneDelegate, currentZone, targetZone, this.lastTaskState);\n }\n }\n removeFromTasks(task) {\n if (!this.tasks) {\n return;\n }\n for (let i = 0; i < this.tasks.length; i++) {\n if (this.tasks[i] === task) {\n this.tasks.splice(i, 1);\n return;\n }\n }\n }\n getAndClearPendingTasksInfo() {\n if (this.tasks.length === 0) {\n return '';\n }\n const taskInfo = this.tasks.map((task) => {\n const dataInfo = task.data &&\n Object.keys(task.data)\n .map((key) => {\n return key + ':' + task.data[key];\n })\n .join(',');\n return `type: ${task.type}, source: ${task.source}, args: {${dataInfo}}`;\n });\n const pendingTasksInfo = '--Pending async tasks are: [' + taskInfo + ']';\n // clear tasks\n this.tasks = [];\n return pendingTasksInfo;\n }\n onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec) {\n if (this._delegateSpec && this._delegateSpec.onFork) {\n return this._delegateSpec.onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec);\n }\n else {\n return parentZoneDelegate.fork(targetZone, zoneSpec);\n }\n }\n onIntercept(parentZoneDelegate, currentZone, targetZone, delegate, source) {\n if (this._delegateSpec && this._delegateSpec.onIntercept) {\n return this._delegateSpec.onIntercept(parentZoneDelegate, currentZone, targetZone, delegate, source);\n }\n else {\n return parentZoneDelegate.intercept(targetZone, delegate, source);\n }\n }\n onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {\n this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);\n if (this._delegateSpec && this._delegateSpec.onInvoke) {\n return this._delegateSpec.onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source);\n }\n else {\n return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);\n }\n }\n onHandleError(parentZoneDelegate, currentZone, targetZone, error) {\n if (this._delegateSpec && this._delegateSpec.onHandleError) {\n return this._delegateSpec.onHandleError(parentZoneDelegate, currentZone, targetZone, error);\n }\n else {\n return parentZoneDelegate.handleError(targetZone, error);\n }\n }\n onScheduleTask(parentZoneDelegate, currentZone, targetZone, task) {\n if (task.type !== 'eventTask') {\n this.tasks.push(task);\n }\n if (this._delegateSpec && this._delegateSpec.onScheduleTask) {\n return this._delegateSpec.onScheduleTask(parentZoneDelegate, currentZone, targetZone, task);\n }\n else {\n return parentZoneDelegate.scheduleTask(targetZone, task);\n }\n }\n onInvokeTask(parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {\n if (task.type !== 'eventTask') {\n this.removeFromTasks(task);\n }\n this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);\n if (this._delegateSpec && this._delegateSpec.onInvokeTask) {\n return this._delegateSpec.onInvokeTask(parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs);\n }\n else {\n return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);\n }\n }\n onCancelTask(parentZoneDelegate, currentZone, targetZone, task) {\n if (task.type !== 'eventTask') {\n this.removeFromTasks(task);\n }\n this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);\n if (this._delegateSpec && this._delegateSpec.onCancelTask) {\n return this._delegateSpec.onCancelTask(parentZoneDelegate, currentZone, targetZone, task);\n }\n else {\n return parentZoneDelegate.cancelTask(targetZone, task);\n }\n }\n onHasTask(delegate, current, target, hasTaskState) {\n this.lastTaskState = hasTaskState;\n if (this._delegateSpec && this._delegateSpec.onHasTask) {\n this._delegateSpec.onHasTask(delegate, current, target, hasTaskState);\n }\n else {\n delegate.hasTask(target, hasTaskState);\n }\n }\n}\nfunction patchProxyZoneSpec(Zone) {\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['ProxyZoneSpec'] = ProxyZoneSpec;\n}\n\nfunction patchSyncTest(Zone) {\n class SyncTestZoneSpec {\n runZone = Zone.current;\n constructor(namePrefix) {\n this.name = 'syncTestZone for ' + namePrefix;\n }\n // ZoneSpec implementation below.\n name;\n onScheduleTask(delegate, current, target, task) {\n switch (task.type) {\n case 'microTask':\n case 'macroTask':\n throw new Error(`Cannot call ${task.source} from within a sync test (${this.name}).`);\n case 'eventTask':\n task = delegate.scheduleTask(target, task);\n break;\n }\n return task;\n }\n }\n // Export the class so that new instances can be created with proper\n // constructor params.\n Zone['SyncTestZoneSpec'] = SyncTestZoneSpec;\n}\n\nfunction patchPromiseTesting(Zone) {\n /**\n * Promise for async/fakeAsync zoneSpec test\n * can support async operation which not supported by zone.js\n * such as\n * it ('test jsonp in AsyncZone', async() => {\n * new Promise(res => {\n * jsonp(url, (data) => {\n * // success callback\n * res(data);\n * });\n * }).then((jsonpResult) => {\n * // get jsonp result.\n *\n * // user will expect AsyncZoneSpec wait for\n * // then, but because jsonp is not zone aware\n * // AsyncZone will finish before then is called.\n * });\n * });\n */\n Zone.__load_patch('promisefortest', (global, Zone, api) => {\n const symbolState = api.symbol('state');\n const UNRESOLVED = null;\n const symbolParentUnresolved = api.symbol('parentUnresolved');\n // patch Promise.prototype.then to keep an internal\n // number for tracking unresolved chained promise\n // we will decrease this number when the parent promise\n // being resolved/rejected and chained promise was\n // scheduled as a microTask.\n // so we can know such kind of chained promise still\n // not resolved in AsyncTestZone\n Promise[api.symbol('patchPromiseForTest')] = function patchPromiseForTest() {\n let oriThen = Promise[Zone.__symbol__('ZonePromiseThen')];\n if (oriThen) {\n return;\n }\n oriThen = Promise[Zone.__symbol__('ZonePromiseThen')] = Promise.prototype.then;\n Promise.prototype.then = function () {\n const chained = oriThen.apply(this, arguments);\n if (this[symbolState] === UNRESOLVED) {\n // parent promise is unresolved.\n const asyncTestZoneSpec = Zone.current.get('AsyncTestZoneSpec');\n if (asyncTestZoneSpec) {\n asyncTestZoneSpec.unresolvedChainedPromiseCount++;\n chained[symbolParentUnresolved] = true;\n }\n }\n return chained;\n };\n };\n Promise[api.symbol('unPatchPromiseForTest')] = function unpatchPromiseForTest() {\n // restore origin then\n const oriThen = Promise[Zone.__symbol__('ZonePromiseThen')];\n if (oriThen) {\n Promise.prototype.then = oriThen;\n Promise[Zone.__symbol__('ZonePromiseThen')] = undefined;\n }\n };\n });\n}\n\nfunction rollupTesting(Zone) {\n patchLongStackTrace(Zone);\n patchProxyZoneSpec(Zone);\n patchSyncTest(Zone);\n patchJasmine(Zone);\n patchJest(Zone);\n patchMocha(Zone);\n patchAsyncTest(Zone);\n patchFakeAsyncTest(Zone);\n patchPromiseTesting(Zone);\n}\n\nrollupTesting(Zone);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}