[BUG] adding taiga-ui to nx application throws error

🐞 Bug report
Description
I generated a new nx a new workspace with brand new Angular application (version 11.2.0). I'm trying to get started with taiga-ui but I get an error when starting ng application.
Reproduction
Steps:

Generate workspace and angular app with nx
Install taiga dependencies:

npm install @taiga-ui/cdk
npm install @taiga-ui/core
npm install @taiga-ui/kit
npm install @taiga-ui/icons

Add styles in anglular.json

<EMAIL_ADDRESS><EMAIL_ADDRESS>

Import TuiRootModule in the app.module.ts
Wrap html with  (app.component.html)
Start the app and you see the errors

[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc7 from 'rxjs';
[1] |
[1] > import * as ɵngcc0 from '@angular/core';
[1] | const _c0 = ["tuiButton", ""];
[1] | function TuiButtonComponent_span_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
[1]
[1] Error<EMAIL_ADDRESS>27:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (27:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc4 from '@tinkoff/ng-polymorpheus';
[1] |
[1] > import * as ɵngcc0 from '@angular/core';
[1] |
[1] | const _c0 = ["content"];
[1]
Error<EMAIL_ADDRESS>33:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (33:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc12 from '@taiga-ui/core/directives/hint-controller';
[1] |
[1] > import * as ɵngcc0 from '@angular/core';
[1] |
[1] | const _c0 = ["focusableElement"];
[1]
[1] Error<EMAIL_ADDRESS>5:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (5:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiCheckedDirective = class TuiCheckedDirective {
[1] |     constructor(element, renderer) {
[1]
[1] Error<EMAIL_ADDRESS>6:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | function nonNegativeFiniteAssertion(value) {
[1] |     return isFinite(value) && value >= 0;
[1]
[1] Error<EMAIL_ADDRESS>6:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiModeDirective = class TuiModeDirective extends TuiController {
[1] |     constructor() {
[1]
[1] Error<EMAIL_ADDRESS>6:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiPressedDirective = class TuiPressedDirective {
[1] |     constructor(elementRef) {
[1]
[1] Error<EMAIL_ADDRESS>6:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc0 from '@angular/core';
[1] |
[1] > import * as ɵngcc0 from '@angular/core';
[1] |
[1] | const _c0 = ["positionFixedOffset"];
[1]
[1] Error<EMAIL_ADDRESS>7:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | const MAX_VALUE = 0x10000;
[1] | class TuiRepeatTimesContext {
[1]
[1] Error<EMAIL_ADDRESS>7:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | const TUI_HINT_CONTROLLER = new InjectionToken('Controls configuration of hints', {
[1] |     factory: () => new TuiHintControllerDirective(),
[1]
[1] Error<EMAIL_ADDRESS>7:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiDragDirective = class TuiDragDirective {
[1] |     constructor(elementRef) {
[1]
[1] Error<EMAIL_ADDRESS>7:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc0 from '@angular/core';
[1] | import * as ɵngcc1 from '@taiga-ui/cdk/services';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiHoveredDirective = class TuiHoveredDirective {
|     constructor({ nativeElement }, hoveredService) {
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | class TuiTextfieldController {
[1] |     constructor(change$, autocompleteDirective, cleanerDirective, customContentDirective, exampleTextDirective, inputModeDirective, labelOutsideDirective, maxLengthDirective, sizeDirective, typeDirective) {
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | const TUI_DROPDOWN_CONTROLLER = new InjectionToken('Controls configuration of hints', {
[1] |     factory: () => new TuiDropdownControllerDirective(),
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | var TuiValidatorDirective_1;
[1] | let TuiValidatorDirective = TuiValidatorDirective_1 = class TuiValidatorDirective {
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |  */
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | class TuiLetContext {
[1] |     constructor(internalDirectiveInstance) {
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |  */
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiFocusableDirective = class TuiFocusableDirective {
[1] |     constructor() {
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc0 from '@angular/core';
[1] |
[1] > import * as ɵngcc0 from '@angular/core';
[1] | const _c0 = ["*"];
[1] | let TuiGroupDirective = class TuiGroupDirective {
[1]
[1] Error<EMAIL_ADDRESS>8:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc0 from '@angular/core';
[1] | import * as ɵngcc1 from '@taiga-ui/cdk';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | const COLOR = `[data-tui-background='primary'] {
[1] |     background-color: var(--tui-primary);
[1]
[1] Error<EMAIL_ADDRESS>9:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (9:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] |  */
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiInputModeDirective = class TuiInputModeDirective {
[1] |     constructor(pattern, isIOS) {
[1]
[1] Error<EMAIL_ADDRESS>9:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (9:12)
[1] File was processed with these loaders:
[1]  *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | // @dynamic
[1] | import * as ɵngcc0 from '@angular/core';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiFocusTrapDirective = class TuiFocusTrapDirective {
[1] |     constructor(documentRef, elementRef, renderer) {
[1]
[1] Error<EMAIL_ADDRESS>9:12
[1] Module parse failed: Identifier 'ɵngcc0' has already been declared (9:12)
[1] File was processed with these loaders:
 *<EMAIL_ADDRESS>[1]  *<EMAIL_ADDRESS>[1] You may need an additional loader to handle the result of these loaders.
[1] | import * as ɵngcc0 from '@angular/core';
[1] | import * as ɵngcc1 from '@taiga-ui/core/services';
[1] > import * as ɵngcc0 from '@angular/core';
[1] | let TuiManualHintDirective = class TuiManualHintDirective extends AbstractTuiHint {
[1] |     constructor(elementRef, hintService) {
[1]
[1]
^C[0] npm run serve:api exited with code 0
[1] npm run serve:client exited with code 0
➜  dodowork git:(ui_components) ✗ npm start

><EMAIL_ADDRESS>start /Users/ograbek/Documents/projects/dodowork
> ng serve

> nx run client:serve
✔ Browser application bundle generation complete.

Initial Chunk Files | Names         |    Size
main.js             | main          | 0 bytes
polyfills.js        | polyfills     | 0 bytes
runtime.js          | runtime       | 0 bytes
styles.css          | styles        | 0 bytes
vendor.js           | vendor        | 0 bytes

                    | Initial Total | 0 bytes

Build at: 2021-03-17T09:27:46.525Z - Hash: c4f33f56a5b006d705b0 - Time: 5633ms

Error<EMAIL_ADDRESS>10:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (10:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from '@taiga-ui/cdk';
> import * as ɵngcc0 from '@angular/core';
| var TuiDropdownDirective_1;
| let TuiDropdownDirective = TuiDropdownDirective_1 = class TuiDropdownDirective extends AbstractTuiDropdown {

Error<EMAIL_ADDRESS>10:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (10:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc2 from '@taiga-ui/core/directives/scroll-into-view';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiPrimitiveYearPickerComponent_div_0_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {
|     const _r7 = ɵngcc0.ɵɵgetCurrentView();

Error<EMAIL_ADDRESS>11:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (11:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| const IOS_TIMEOUT = 1000;
| const NG_ANIMATION_SELECTOR = '.ng-animating';

Error<EMAIL_ADDRESS>11:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (11:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@taiga-ui/cdk/services';
| import * as ɵngcc2 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| const ON = 'tuiAutofillOn';
| const OFF = 'tuiAutofillOff';

Error<EMAIL_ADDRESS>11:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (11:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@taiga-ui/core/services';
| import * as ɵngcc2 from '@taiga-ui/cdk';
> import * as ɵngcc0 from '@angular/core';
| let TuiPointerHintDirective = class TuiPointerHintDirective extends AbstractTuiHint {
|     constructor(elementRef, hintService, destroy$, hoveredService) {

Error<EMAIL_ADDRESS>11:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (11:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@taiga-ui/core/services';
| import * as ɵngcc2 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| const DELAY = 1000;
| const TUI_DESCRIBED_BY_SHOW = new InjectionToken('Accessible tooltip visibility stream');

Error<EMAIL_ADDRESS>11:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (11:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["*"];
| let TuiWrapperComponent = class TuiWrapperComponent {

Error<EMAIL_ADDRESS>12:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (12:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| let TuiDroppableDirective = class TuiDroppableDirective {
|     constructor({ nativeElement }, destroy$) {

Error<EMAIL_ADDRESS>13:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (13:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| var TuiActiveZoneDirective_1;
| // @dynamic

Error<EMAIL_ADDRESS>13:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (13:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@taiga-ui/cdk';
| import * as ɵngcc2 from '@taiga-ui/core/services';
> import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from '@taiga-ui/cdk';
| import * as ɵngcc2 from '@taiga-ui/core/services';

Error<EMAIL_ADDRESS>13:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (13:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@taiga-ui/core/services';
| import * as ɵngcc2 from '@taiga-ui/cdk';
> import * as ɵngcc0 from '@angular/core';
| const HINT_HOVERED_CLASS = '_hint_hovered';
| const SHOW_DELAY = 500;

Error<EMAIL_ADDRESS>13:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (13:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc3 from '@taiga-ui/core/components/svg';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiPrimitiveCheckboxComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelement(0, "tui-svg", 2);

Error<EMAIL_ADDRESS>14:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (14:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|  */
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiFocusedDirective = class TuiFocusedDirective {
|     constructor({ nativeElement }, ngZone) {

Error<EMAIL_ADDRESS>14:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (14:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc2 from '@taiga-ui/core/components/scroll-controls';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiScrollbarComponent_tui_scroll_controls_0_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelement(0, "tui-scroll-controls");

Error<EMAIL_ADDRESS>14:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (14:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc2 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["tuiLabel", ""];
| function TuiLabelComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {

Error<EMAIL_ADDRESS>15:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (15:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| let TuiOverscrollDirective = class TuiOverscrollDirective {
|     constructor({ nativeElement }, ngZone, destroy$) {

Error<EMAIL_ADDRESS>15:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (15:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| let TuiScrollIntoViewDirective = class TuiScrollIntoViewDirective {
|     constructor(elementRef, documentRef, destroy$) {

Error<EMAIL_ADDRESS>15:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (15:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@angular/forms';
| import * as ɵngcc2 from '@taiga-ui/cdk/services';
> import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from '@angular/forms';
| var AbstractTuiInteractive_1;

Error<EMAIL_ADDRESS>15:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (15:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@taiga-ui/cdk/directives/active-zone';
| import * as ɵngcc2 from '@taiga-ui/cdk/services';
> import * as ɵngcc0 from '@angular/core';
| let TuiObscuredDirective = class TuiObscuredDirective {
|     constructor(activeZone, obscured$) {

Error<EMAIL_ADDRESS>15:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (15:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc3 from '@taiga-ui/cdk';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiSvgDefsHostComponent__svg_ng_container_1__svg_defs_1_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵnamespaceSVG();

Error<EMAIL_ADDRESS>15:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (15:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc3 from '@tinkoff/ng-polymorpheus';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["wrapper"];

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc1 from '@angular/common';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["polymorpheus-outlet", ""];
| function PolymorpheusOutletComponent_ng_container_0_ng_template_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc2 from '@taiga-ui/core/directives/hint';
| import * as ɵngcc3 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| let TuiTooltipComponent = class TuiTooltipComponent {
|     constructor(destroy$, mode$) {

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc3 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = function () { return {}; };
| function TuiErrorComponent_div_0_Template(rf, ctx) { if (rf & 1) {

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from '@taiga-ui/core/directives/dropdown-controller';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["wrapper"];

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:[0m
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["wrapper"];

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiNotificationComponent_tui_svg_0_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelement(0, "tui-svg", 3);

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiPrimitiveCalendarComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelementStart(0, "div", 3);

Error<EMAIL_ADDRESS>16:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (16:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc5 from '@taiga-ui/core/pipes';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiPrimitiveYearMonthPaginationComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelementContainerStart(0);

Error<EMAIL_ADDRESS>17:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (17:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc3 from '@taiga-ui/cdk';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiScrollControlsComponent_ng_container_0_div_1_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelementStart(0, "div", 3);

91mError<EMAIL_ADDRESS>17:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (17:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc3 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiLoaderComponent_div_2_div_3_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵnamespaceSVG();

Error<EMAIL_ADDRESS>17:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (17:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from '@taiga-ui/cdk';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiNotificationAlertComponent_tui_notification_0_label_1_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelementStart(0, "label", 5);

Error<EMAIL_ADDRESS>18:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (18:12)
File was processed with these loaders:[0m
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc5 from '@taiga-ui/cdk';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["tuiLink", ""];
| function TuiLinkComponent_tui_svg_0_Template(rf, ctx) { if (rf & 1) {

Error<EMAIL_ADDRESS>20:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (20:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from '@angular/platform-browser';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiSvgComponent_ng_container_0_div_1_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelement(0, "div", 3);

Error<EMAIL_ADDRESS>20:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (20:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc5 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["tuiOption", ""];
| const _c1 = function (a0) { return { $implicit: a0 }; };

Error<EMAIL_ADDRESS>20:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (20:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc6 from '@taiga-ui/cdk';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiCalendarComponent_tui_scrollbar_0_Template(rf, ctx) { if (rf & 1) {
|     const _r4 = ɵngcc0.ɵɵgetCurrentView();

Error<EMAIL_ADDRESS>21:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (21:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from 'rxjs';
> import * as ɵngcc0 from '@angular/core';
| let TuiDestroyService = class TuiDestroyService extends Subject {
|     ngOnDestroy() {

Error<EMAIL_ADDRESS>21:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (21:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc5 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["arrow"];

Error<EMAIL_ADDRESS>21:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (21:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc5 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| function TuiDialogComponent_header_0_Template(rf, ctx) { if (rf & 1) {
|     ɵngcc0.ɵɵelement(0, "header", 5);

Error<EMAIL_ADDRESS>21:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (21:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc7 from 'rxjs';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["tuiButton", ""];
| function TuiButtonComponent_span_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {

Error<EMAIL_ADDRESS>27:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (27:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc4 from '@tinkoff/ng-polymorpheus';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["content"];

Error<EMAIL_ADDRESS>33:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (33:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc12 from '@taiga-ui/core/directives/hint-controller';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["focusableElement"];[39m

Error<EMAIL_ADDRESS>5:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (5:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiCheckedDirective = class TuiCheckedDirective {
|     constructor(element, renderer) {

Error<EMAIL_ADDRESS>6:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| function nonNegativeFiniteAssertion(value) {
|     return isFinite(value) && value >= 0;

Error<EMAIL_ADDRESS>6:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiModeDirective = class TuiModeDirective extends TuiController {
|     constructor() {

Error<EMAIL_ADDRESS>6:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiPressedDirective = class TuiPressedDirective {
|     constructor(elementRef) {

Error<EMAIL_ADDRESS>6:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (6:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
|
> import * as ɵngcc0 from '@angular/core';
|
| const _c0 = ["positionFixedOffset"];

Error<EMAIL_ADDRESS>7:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| const MAX_VALUE = 0x10000;
| class TuiRepeatTimesContext {

Error<EMAIL_ADDRESS>7:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| const TUI_HINT_CONTROLLER = new InjectionToken('Controls configuration of hints', {
|     factory: () => new TuiHintControllerDirective(),

Error<EMAIL_ADDRESS>7:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiDragDirective = class TuiDragDirective {
|     constructor(elementRef) {

Error<EMAIL_ADDRESS>7:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (7:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from '@taiga-ui/cdk/services';
> import * as ɵngcc0 from '@angular/core';
| let TuiHoveredDirective = class TuiHoveredDirective {
|     constructor({ nativeElement }, hoveredService) {

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| class TuiTextfieldController {
|     constructor(change$, autocompleteDirective, cleanerDirective, customContentDirective, exampleTextDirective, inputModeDirective, labelOutsideDirective, maxLengthDirective, sizeDirective, typeDirective) {

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| const TUI_DROPDOWN_CONTROLLER = new InjectionToken('Controls configuration of hints', {
|     factory: () => new TuiDropdownControllerDirective(),

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| var TuiValidatorDirective_1;
| let TuiValidatorDirective = TuiValidatorDirective_1 = class TuiValidatorDirective {

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|  */
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| class TuiLetContext {
|     constructor(internalDirectiveInstance) {

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|  */
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiFocusableDirective = class TuiFocusableDirective {
|     constructor() {

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
|
> import * as ɵngcc0 from '@angular/core';
| const _c0 = ["*"];
| let TuiGroupDirective = class TuiGroupDirective {

Error<EMAIL_ADDRESS>8:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (8:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from '@taiga-ui/cdk';
> import * as ɵngcc0 from '@angular/core';
| const COLOR = `[data-tui-background='primary'] {
|     background-color: var(--tui-primary);

Error<EMAIL_ADDRESS>9:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (9:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
|  */
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiInputModeDirective = class TuiInputModeDirective {
|     constructor(pattern, isIOS) {

Error<EMAIL_ADDRESS>9:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (9:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| // @dynamic
| import * as ɵngcc0 from '@angular/core';
> import * as ɵngcc0 from '@angular/core';
| let TuiFocusTrapDirective = class TuiFocusTrapDirective {
|     constructor(documentRef, elementRef, renderer) {

Error<EMAIL_ADDRESS>9:12
Module parse failed: Identifier 'ɵngcc0' has already been declared (9:12)
File was processed with these loaders:
 *<EMAIL_ADDRESS> *<EMAIL_ADDRESS>You may need an additional loader to handle the result of these loaders.
| import * as ɵngcc0 from '@angular/core';
| import * as ɵngcc1 from '@taiga-ui/core/services';
> import * as ɵngcc0 from '@angular/core';
| let TuiManualHintDirective = class TuiManualHintDirective extends AbstractTuiHint {
|     constructor(elementRef, hintService) {

Expected behavior
I can use taiga-ui with nx.
Versions

OS: iOS 10.15.7
Browser not applicable
Angular 11.2.0
Package 2.6.2

Additional context
This is my angular.json file
{
  "version": 1,
  "cli": {
    "defaultCollection": "@nrwl/angular"
  },
  "defaultProject": "client",
  "schematics": {
    "@nrwl/angular": {
      "application": {
        "linter": "eslint"
      },
      "library": {
        "linter": "eslint"
      },
      "storybook-configuration": {
        "linter": "eslint"
      }
    },
    "@nrwl/angular:application": {
      "style": "scss",
      "linter": "eslint",
      "unitTestRunner": "jest",
      "e2eTestRunner": "cypress"
    },
    "@nrwl/angular:library": {
      "style": "scss",
      "linter": "eslint",
      "unitTestRunner": "jest"
    },
    "@nrwl/angular:component": {
      "style": "scss"
    }
  },
  "projects": {
    "client": {
      "projectType": "application",
      "root": "apps/client",
      "sourceRoot": "apps/client/src",
      "prefix": "dodowork",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/apps/client",
            "index": "apps/client/src/index.html",
            "main": "apps/client/src/main.ts",
            "polyfills": "apps/client/src/polyfills.ts",
            "tsConfig": "apps/client/tsconfig.app.json",
            "aot": true,
            "assets": ["apps/client/src/favicon.ico", "apps/client/src/assets"],
            "styles": [
              "apps/client/src/styles.scss",
<EMAIL_ADDRESS><EMAIL_ADDRESS>            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "apps/client/src/environments/environment.ts",
                  "with": "apps/client/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "namedChunks": false,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "2mb",
                  "maximumError": "5mb"
                },
                {
                  "type": "anyComponentStyle",
                  "maximumWarning": "6kb",
                  "maximumError": "10kb"
                }
              ]
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "client:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "client:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "client:build"
          }
        },
        "lint": {
          "builder": "@nrwl/linter:eslint",
          "options": {
            "lintFilePatterns": [
              "apps/client/src/**/*.ts",
              "apps/client/src/**/*.html"
            ]
          }
        },
        "test": {
          "builder": "@nrwl/jest:jest",
          "outputs": ["coverage/apps/client"],
          "options": {
            "jestConfig": "apps/client/jest.config.js",
            "passWithNoTests": true
          }
        }
      }
    },
    "client-e2e": {
      "root": "apps/client-e2e",
      "sourceRoot": "apps/client-e2e/src",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@nrwl/cypress:cypress",
          "options": {
            "cypressConfig": "apps/client-e2e/cypress.json",
            "tsConfig": "apps/client-e2e/tsconfig.e2e.json",
            "devServerTarget": "client:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "client:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@nrwl/linter:eslint",
          "options": {
            "lintFilePatterns": ["apps/client-e2e/**/*.{js,ts}"]
          }
        }
      }
    },
    "api": {
      "root": "apps/api",
      "sourceRoot": "apps/api/src",
      "projectType": "application",
      "prefix": "api",
      "architect": {
        "build": {
          "builder": "@nrwl/node:build",
          "outputs": ["{options.outputPath}"],
          "options": {
            "outputPath": "dist/apps/api",
            "main": "apps/api/src/main.ts",
            "tsConfig": "apps/api/tsconfig.app.json",
            "assets": ["apps/api/src/assets"]
          },
          "configurations": {
            "production": {
              "optimization": true,
              "extractLicenses": true,
              "inspect": false,
              "fileReplacements": [
                {
                  "replace": "apps/api/src/environments/environment.ts",
                  "with": "apps/api/src/environments/environment.prod.ts"
                }
              ]
            }
          }
        },
        "serve": {
          "builder": "@nrwl/node:execute",
          "options": {
            "buildTarget": "api:build"
          }
        },
        "lint": {
          "builder": "@nrwl/linter:eslint",
          "options": {
            "lintFilePatterns": ["apps/api/**/*.ts"]
          }
        },
        "test": {
          "builder": "@nrwl/jest:jest",
          "outputs": ["coverage/apps/api"],
          "options": {
            "jestConfig": "apps/api/jest.config.js",
            "passWithNoTests": true
          }
        }
      }
    }
  }
}

I think it was some Ivy issue (?). Anyway, I did npm ci and it works now.


Steam Trade Bot Error

https://cloud.githubusercontent.com/assets/9691428/9287371/e8abbb0e-4354-11e5-8aff-a181575603cd.png
Do somebody know what does this problem mean?

npm install...


Server does not accept our key

When following the guide referenced at Login with SSH keys I ran into the issue that my admin's private key was rejected. When I followed through with the guide disregarding that fact until the next chapter, I had shut my admin out of SSH. My root however could still connect.
This happened two times at two different setups now from which I draw that the referenced guide must have some kind of mistake in it. If I made the attempt pin it down to one it would be this:
In Step 2 we are supposed to
$ pwd
$ mkdir .ssh
$ nano .ssh/authorized_keys
So far so good. Then we shall
$ chmod -R 700 .ssh/
Either the last line is wrong and should rather be
$ chmod -R 700 /home/admin/.ssh/
Or we need to
$ sudo chown -R admin:admin home/admin/.ssh/
I come to that conclusion because I did this when I locked my admin out of ssh:

login with root

Key accepted

Then copied root onto admin
$ sudo cp /root/.ssh/authorized_keys /home/admin/.ssh/
and set chown and chmod
$ sudo chown -R admin:admin home/admin/.ssh/
$ sudo chmod -R 700 home/admin/.ssh/
which worked and I could login with admin again.

Hm, interesting. I just went through the steps and I think it should work.

you need to be logged in with "admin"
create the "authorized_keys" file with $ nano .ssh/authorized_keys
change authorization to "owner only" (see details here). You are supposed to already be in /home/admin/ therefore the following two commands are identical:

$ chmod -R 700 .ssh/
$ chmod -R 700 /home/admin/.ssh/

As we are logged in as user "admin" and we created the new file, it should already be its owner. This is what $ sudo chown -R admin:admin home/admin/.ssh/ does, so in my opinion it's not needed.

Can you pinpoint where you ran into the problem? The directory (and the permissions for the file especially) should look like this:

Oh I think I know why this happened and its just because I barely know what I am doing 😄
You nailed it with your first line. Because of the changes to ufw I must have still been registered as "root" when I proceeded with SSH keys. Most likely I forgot to exit after finishing the changes. So it makes sense that I had to $ sudo chown -R admin:admin home/admin/.ssh/ to make it work.
Thank you for all the help!


Really slow shell (fish)

Hello. Here's my nix setup:
https://github.com/Industrial/nixos-dotfiles/blob/main/flake.nix#L82
When I enable Stylix, loading my shell (fish) takes around 5 seconds. When I disable it, it's instant. Is there something I can do about this?

my guess is that its in issue of the base16-fish switcher that we use for the module which doesnt look like it still gets updates, in the meantime i would suggest setting stylix.targets.fish.enable to false.

id imagine its an issue with the base16 repo its using, ill give it a shot once the wallpaper refactor is done

This is unusual, I used to use Fish and this wasn't an issue. I would also expect the issue to come from the upstream repo, or the way it's installed by Stylix.

I'm now using a different setup with Zellij instead of Tmux and the problem is gone..

Had the same issue for a while now and only tmux + fish is affected. Possibly related: https://github.com/danth/stylix/issues/488

Same, tmux + fish.

See #488

Fixed in https://github.com/danth/stylix/pull/503


Order of before_destroy and acts_as_paranoid should not really matter

Given
class Episode < ApplicationRecord
   acts_as_paranoid
   before_destroy do
      puts self.authors.count
   end
   has_many :authors, dependent: :destroy

and
class Episode < ApplicationRecord
   before_destroy do
      puts self.authors.count
   end
   acts_as_paranoid
   has_many :authors, dependent: :destroy

This for me outputs different size of authors. In the first case authors are already destroyed. Because of this I can not do anything with them in the before_destroy.
In the second case the authors are there.
Looking at the code like this I think it should not matter which comes first.

Hi @thebravoman, I dug into this a bit and indeed, it is surprising that this happens, even when looking at ActsAsParanoid's code.


crackmapexec: Fails to run with python 3.12 due to missing imp module

Describe the bug
crackmapexec fails to run on the unstable branch.
Full backtrace :
/nix/store/p599ivpsxjcg0rmipnf9xb8yx640vw18-crackmapexec-5.4.0/lib/python3.12/site-packages/cme/cli.py:35: SyntaxWarning: invalid escape sequence '\ '
  """,
Traceback (most recent call last):
  File "/nix/store/p599ivpsxjcg0rmipnf9xb8yx640vw18-crackmapexec-5.4.0/bin/.cme-wrapped", line 6, in <module>
    from cme.crackmapexec import main
  File "/nix/store/p599ivpsxjcg0rmipnf9xb8yx640vw18-crackmapexec-5.4.0/lib/python3.12/site-packages/cme/crackmapexec.py", line 10, in <module>
    from cme.cli import gen_cli_args
  File "/nix/store/p599ivpsxjcg0rmipnf9xb8yx640vw18-crackmapexec-5.4.0/lib/python3.12/site-packages/cme/cli.py", line 7, in <module>
    from cme.loaders.protocol_loader import protocol_loader
  File "/nix/store/p599ivpsxjcg0rmipnf9xb8yx640vw18-crackmapexec-5.4.0/lib/python3.12/site-packages/cme/loaders/protocol_loader.py", line 4, in <module>
    import imp
ModuleNotFoundError: No module named 'imp'

Steps To Reproduce
Steps to reproduce the behavior:

run cme

Expected behavior
Should be marked as broken for python 3.12 and above due to not being maintained anymore, it should be recommended to use the maintained fork netexec.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
I may PR a proper fix later if I find time to do so
Notify maintainers
@fabaff

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.8.11-amd64, Kali GNU/Linux, 2024.2, nobuild`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.23.3`
 - channels(root): `"home-manager, nixpkgs"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixpkgs`

Add a :+1: reaction to issues you find important.

I don't know if removal was the best choice for this tool but maybe netexec has all the features that crackmapexec had so it's alright.
It's just that I'm not aware if there are any bugs that are not in crackmapexec that are in netexec but I understand why removal makes sense since later we'll move onto later version of Python such as 3.13 and further more

I don't know if removal was the best choice for this tool but maybe netexec has all the features that crackmapexec had so it's alright.

As netexec is a fork, I guess that the feature set is comparable or even bigger in the meantime. crackmapexec is still available for 24.05 and could still be used after 24.11 with some magic.

I ran into this issue where cme didn't have it, it is just a minor issue so it's alright on my side, but not sure if there will be any more issues I'll ran into later :
https://github.com/Pennyw0rth/NetExec/issues/395


remove windows kitchen tests

What does this PR do?

remove Windows kitchen tests that have been replaced by E2E tests
Replacement E2E tests were added in multiple PRs, see PRs linked to cards

kitchen_windows_installer_agent - https://datadoghq.atlassian.net/browse/WINA-507
kitchen_windows_installer_cws - https://datadoghq.atlassian.net/browse/WINA-684
kitchen_windows_installer_npm_install_scenarios - https://datadoghq.atlassian.net/browse/WINA-509

Motivation

https://datadoghq.atlassian.net/browse/WINA-637
Additional Notes

CWS/WKIT - Please ensure you have relevant functional tests for CWS on Windows. See https://datadoghq.atlassian.net/browse/WINA-684 for more information.
upgrade 5 -> 6 -> 7 test still TODO
Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Allow for GC to be enabled/configured via a config file providing an interval between runs, and amount to GC.

there are configuration options available for this that are parsed by hoarder, however for the time being nothing is actually done with them.
All it needs is if these options are detected, is to start a goroutine that runs at the specified interval, and cleans out the specified number of records.


more features for calculation

Description of the new feature / enhancement
the powertoys run should support keywords like sqrt for square root, curt for cube root,  fact for factorial, and more such keywords
Scenario when this would be used?
this can be used whenever required, it can help in doing calculations on the same window without opening/changing a window
Supporting information
No response

PowerToys Run already supports the sqrt function

We can use '^' power key for finding square and cube roots
Square root:  n^(1/2)
Cube root:  n^(1/3)


npm install fails with upstream dependency conflict (workaround: npm install --force)

npm install currently fails due to incompatibilities in transitive dependencies. This is harmless at the moment and can be worked around with npm install --force. However, that command is somewhat dangerous so it would be better to not rely on it.
The problems are that:

<EMAIL_ADDRESS>note declare compatibility with versions of typescript above 4 (I'm currently on 5.0.4). Tracked here: https://github.com/facebook/create-react-app/issues/13080 . Unfortunately, it seems react-scripts might be abandoned so the solution might be to move to vite.
<EMAIL_ADDRESS>uses<EMAIL_ADDRESS>which does not declare compatibility with versions of react and react-dom above 16.14.0 (I'm currently on 18.2.0). Unfortunately it seems react-virtualized is deprecated and unlikely to get updates, so we'd need react-timeline-editor to switch to react-window. I have raised this here: https://github.com/xzdarcy/react-timeline-editor/issues/33

The error output is:
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/typescript
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!   peer typescript@">= 2.7" from<EMAIL_ADDRESS>npm ERR!   node_modules/fork-ts-checker-webpack-plugin
npm ERR<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!     node_modules/react-dev-utils
npm ERR<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!       node_modules/react-scripts
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!   2 more (ts-jest, tsutils)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peerOptional<EMAIL_ADDRESS>|| ^4" from<EMAIL_ADDRESS>npm ERR! node_modules/react-scripts
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Conflicting peer dependency<EMAIL_ADDRESS>npm ERR! node_modules/typescript
npm ERR!   peerOptional<EMAIL_ADDRESS>|| ^4" from<EMAIL_ADDRESS>npm ERR!   node_modules/react-scripts
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

Once again, the workaround is simply npm install --force.

Turns out adding the following is enough to mute the error for react-scripts, and<EMAIL_ADDRESS>only flags a warning:
  "overrides": {
    "react-scripts": {
      "typescript": "^5"
    }

So we can now run without --force with the only downside being a warning. The importance of this issue is therefore much lower.

Just to add a tip - you can also use the $ approach like this to make it match the version of the package from your main deps 👍🏼
"overrides": {
    "react-scripts": {
      "typescript": "$typescript"
    }
}


Upgrade torch version & remove rikai dataloader

See the details in issue https://github.com/eto-ai/rikai/issues/342

Rikai 0.0.12 can only work with Databricks Runtime 8.3.x (with Pytorch 1.8.x installed)
I think this PR can be merged along with the Spark 3.2.x pr.


generate data from non-proprietary nfldb (2009+ only) module.

update requirements and data_prep/analysis scripts to be compatible.

Sorry, as it stands, I'm not comfortable with this PR. We're trying as much as possible to keep the repo matching what's in production for the bot. I recommend you fork the project instead.

That's an excellent point and I agree that this code doesn't belong in with the actual 4th-down-bot code. I think you'd get a lot more people interested in analyzing and improving the model if there were a free-data option. How about a testing branch that includes the nfldb data? Or maybe a link to my fork in the Readme?
I don't know how familiar you are with the nfldb project, but it's worth pointing out that the author does use a heuristic to try and correct the XP-missing-from-JSON issue.

@bdilday These are good ideas -- I'm doing some repo maintenance today and will figure out the best way to incorporate your ideas, be it a testing branch or a link to your fork. I lean toward the latter as I think it may be easier for those new to GitHub to understand cloning a new fork than checking out a branch.
Thanks for your help!


ATX handler rejects invalid ATXs on pubsub lvl

Motivation
In order to drop peers sending invalid ATXs, the handler must return pubsub.ErrValidationReject
Description
Test Plan
updated tests
TODO

[x] Explain motivation or link existing issue(s)
[x] Test changes and document test plan
[ ] Update documentation as needed
[ ] Update changelog as needed

Bors merge


Program crashes when using AI player search depth >= 8

Describe the bug
Game with search-depth > 8 crashes, apparently due to high system memory usage.
To Reproduce
Steps to reproduce the behavior:

Install using procedure at  https://github.com/duanegoodner/xiangqigame.
From command line, run play_xiangqi -rst 8 -bst 8
Eventually (usually after ~30 moves) program crashes, with terminal message similar to:

[1]    1839133 killed

Expected behavior
Game runs to completion (either RED WINS, BLACK WINS, or DRAW), and program terminates without crashing.
Desktop (please complete the following information):

OS: Debian 12 Docker container on Debian 12 host with 64 GB system memory
Browser [e.g. chrome, safari]
Version [e.g. 22]

Additional context
Based on memory usage output by running top in another terminal while game is running, appears OS is killing process because of high memory usage. Likely due to TranspositionTable becoming very large.
Potential Solution
Implement TranspositionTable pruning to remove old / un-useful entries.

Most likely due to very large TranspositionTable. Currently, have no limit on TranspositionTable size, and do not perform any pruning.
Plan to implement a pruning scheme, and add option to specify max size of table.


Chore/use brand colors and logos

Coverage remained the same at 89.091% when pulling b1735a470a53278fcddd3a49a62b7c6bebbf1e5c on chore/use-brand-colors into 09381c3803307186e0b0742ed31b2995252785bc on master.


Twitter errors on posts with multiple videos

https://x.com/MJTruthUltra/status/1851408978544132410
https://x.com/emmagcawood/status/1850522383863390392

Also video + image combination
https://x.com/halimatsadiya1/status/1853453083583401990
#3bf9465a-d6b8-4ada-88c0-7181e58f93f6

This seems to be mostly working but can still sometimes run into issues.
For example, the video on this tweet didn't pull in properly (no playback)
in MediaVault: https://mvau.lt/media/2529b30e-26b9-4174-8e36-f33783c68d12
original: https://x.com/MJTruthUltra/status/1851408978544132410


Added functionality to record Audio which is stored in storage

Added functionality to record Audio which is stored in storage and also added the chronometer.
https://user-images.githubusercontent.com/81848677/195998678-49322b63-e971-46d5-8c72-78ed2a258fd7.mp4
Recording in the storage.

Nice work @RohitLakra299
Congratulations and Kudos for contributing to KeepIt! 🎊
I hope you learned something. If yes, then do leave KeepIt a star 🌟.

Nice work @neil0504
Congratulations and Kudos for contributing to KeepIt! 🎊
I hope you learned something. If yes, then do leave KeepIt a star 🌟. Thank you 👍

Nice work @neil0504
Congratulations and Kudos for contributing to KeepIt! 🎊
I hope you learned something. If yes, then do leave KeepIt a star 🌟.

Yes, actually i did. I never worked on audio b4 n it was great working on this issue. For sure I'll leave a 🌟. Thank you 👍


Fix the Jmeter master and slave image names

with the current config the default installation will failed unless we fixed the images name like below

Thanks. This will fix some of the errors people are facing while pulling the images.


Logo Change

Logo change
The logo doesn't look appealing, so I need to redesign it with a more modern and attractive look.

this is a duplicate issue same as #1152


ci: debug why asset is not added to release

#819  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Highlight Kephri Dung strike swarm indicator

just before Kephri does a dung strike a scarab swarm surrond the targets, if this could be outlined with a custom colour it would really help

This would be disallowed by the Third Party Client Guidelines.

Indicates the time where a boss mechanic may start or end

and

Adds additional visual or audio indicators of a boss mechanic except in cases where this is a manually triggered external helper.


imguiDrawText not working after imguiEndScrollArea

Seems that area stack is not right after imguiEndSchrollArea.
how to reproduce:
imguiBeginScrollArea("", 10, 10, 200, 200, 0);
...
imguiEndScrollArea();

imguiDrawText(400, 10, ImguiTextAlign::Center, "test", RGB(255,0,0));

imguiDrawText will only be shown if you set x position from 400 to smaller than 200(last width set by imguiBeginSchrollArea), it is effected by the last area call.

add 'm_areaId.pop();' call in the function Imgui::endArea solved this problem.

It seems to be fine with the change you mentioned. Also, notice, it's better to use imguiRgba() call when specifying color for imgui calls.
https://github.com/bkaradzic/bgfx/pull/289


Split out addresses table from tx_out

Versions
The db-sync version (eg cardano-db-sync --version): 13.0.5
PostgreSQL version: 14.4
Build/Install Method
The method you use to build or install cardano-db-sync: N.A.
Run method
The method you used to run cardano-db-sync (eg Nix/Docker/systemd/none): systemd
Additional context
The background for this request comes from Koios , for an endpoint that allows users to query addresses associated with stake_address causing too long (ones which have millions of transaction entries) - but  this applies to almost all query layers that use dbsync. When not part of Postgres cache , simply querying observations themselves could take a while (at times can take 15-50s):
cexplorer=# select count(1) from tx_out where stake_address_id = 3350960;
  count
---------
 2648923
(1 row)

Time: 23476.114 ms (00:23.476)

Ofcourse - once in cache, this would run in a few milliseconds.
However, the outcome (unique address list) being sought from same query was simply 12 addresses.
This made us think of starting to maintain seperate cache table for stake_address to address mapping, but it makes little sense to only do it on client side rather than dbsync itself, as the advantages will be higher than this scope.
Problem Report
The request here is to move address field to it's own table, alongwith duplicated information that currently resides in tx_out table.
A new table addresses that might contain columns below, that are currently in tx_out:
|id|address | address_raw (optional) | payment_cred (optional) | stake_address_id | address_has_script |

Similarly, the above columns could be removed from tx_out and replaced with addr_id which would link to address.id field.
Advantages:

Space and IOPs:
Currently , size of tx_out table is ~40G and it's indexes is ~20G. A huge chunk of this size is due to repitition of address information across multiple rows every time a transaction references an address. In turn, this also increases index size which could would much larger footprint to process, replacing it with a single address_id field saves on both fronts as well as lookup in tx_out table. The average savings achieved might be ~25-30G atm ( + indexes)
Reduction in duplications:
Columns address, address_raw and payment_cred can all be derived from address itself. While it might have been initially for UX, the duplication of each of these long char fields for tx does more harm than good in tx_out table. They can still be maintained in separate address table.
Transient state of address_hash_script:
My understanding here might be incorrect, but address_has_script seems like a permanent state rather than a transient state - thus, does not seem to be right candidate in tx_out table.
Performance for querying addresses:
For cases like the one mentioned in Additional context section above, the query outcomes will be much faster for such endpoints.
Reduce client-side workarounds:
A seperate cache table was being considered to provide this information based on trigger from tx table (but would not have been an optimal solution given the above)

Considering the size of the tx_out table and the amount of repeated data i currently contains, I think this suggestions makes sense.

I haven't found a case where this query takes more than a few ms

cexplorer=# select count(1) from tx_out where stake_address_id = 3350960;

It also looks strange to me for a query with an indexed search to take so long.

I haven't found a case where this query takes more than a few ms

The query was shared just as an example - as actual ID might vary, the number of records returned is pretty high (~2.7M), you might wanna try below:
select count(1) from tx_out where stake_address_id = (select id from stake_address where view='stake1uxqh9rn76n8nynsnyvf4ulndjv0srcc8jtvumut3989cqmgjt49h6');

I understand the benefits in Space and IOPs by splitting in two tables. However I'm not convinced queries will be faster. Working on two tables requires joins, which can't be faster than working with a single table.

My understanding here might be incorrect, but address_has_script seems like a permanent state rather than a transient state - thus, does not seem to be right candidate in tx_out table.

I'm not following that one. The tx_out table like all db-sync tables are permanent in the sense that there are no updates.
address_has_script shows a permanent property of the address.

However I'm not convinced queries will be faster.

The performance would be much faster to query against address fields purely due to smaller index size lookup against tx_id (eliminated by amount of duplicates as well as size of lookup string). IMO- this is exactly same classification as stake_address, having a seperate lookup table vs having multiple fields with duplicates for encoding. While the query performance increase will not be massive, it is certainly not negligible, specifically for looking up transactions by addresses

The tx_out table like all db-sync tables are permanent in the sense that there are no updates.
address_has_script shows a permanent property of the address.

IMO - a UTxO does not represent address, so address_has_script should be the current state. If the intent is to showcase UTxO property, it could instead be better named.

Sorry of extense comment but this change will help me massively. Hopefully others too.
I'm using cardano-graphql with a custom View PaymentAddress + Hasura schema modifications to simulate what this issue tries to solve:
CREATE OR REPLACE VIEW "PaymentAddress" AS
SELECT
  tx_out.address,
  tx_out.stake_address_id AS "stake_address_id",
  tx_out.address_has_script AS "addressHasScript",
  CASE
      WHEN tx_out.address_has_script IS TRUE THEN tx_out.payment_cred
      ELSE NULL
  END AS "scriptHash",
  CASE
      WHEN tx_out.address_has_script IS NOT TRUE THEN tx_out.payment_cred
      ELSE NULL
  END AS "paymentCredential"
FROM tx_out

The problem comes when you have to use aggregate with hasura or you have to pagginate your results.
Having to use distinct on (address) address every time i want to count results or paginate limit X ofsset Y is extremely slow. Even if i use the distinct on in the View creation (instead of in hasura) it does not improve much.
I'm also doing a "view calculation" to distinguish between scriptHash or paymentCredential. This becomes really bad with hasura, since the way it works is to select * from table and then filter the results, which at the end results in psql calculating the scriptHash and paymentCredential columns for every row even if i only want to extract 10 results (limit 10).
Example count total addresses:
query totalPaymentAddresses {
  paymentAddresses_aggregate(distinct_on: address) {
    aggregate {
      count
    }
  }
}

{
  "data": {
    "paymentAddresses_aggregate": {
      "aggregate": {
        "count": 40969996
      }
    }
  }
}

Time: 754549 ms !!!!

Example listing addresses (smart contracts):
query addressWithScript {
  paymentAddresses(where: {addressHasScript: {_eq: true}}, offset: 0, limit: 2, distinct_on: address) {
    address
    script {
      hash
    }
  }
}

{
  "data": {
    "paymentAddresses": [
      {
        "address": "addr12yqg7sr6pp7ndc6vuq4fj64wgzp9zhh45jv4wngxcf0aqxruzkw47xrh6a0",
        "script": null <-- null because issue #1357
      },
      {
        "address": "addr1w8008846y0s9l6mfvaa7scefkgvwa7cq4mxlx6m4xs8v62g6e5v0f",
        "script": {
          "hash": "\\xdef39eba23e05feb69677be86329b218eefb00aecdf36b75340ecd29"
        }
      }
    ]
  }
}

Time 100292 ms !!!!

IMO separating in two tables will help reducing overall table sizes, index sizes and improve versatility on queries since (just as exposed in a simple example) we will not depend on distinct on when listing addresses.
BTW, this examples are using cardano-graphql hasura method, but using plain psql query is extreme slow too just because of the distinct on over 168.111.506 tx_out reccords, and increasing....

This is something that would help in some things we do greatly.
select
    distinct on (address) address
from
    tx_out
where
    address_raw = '\x016b610dbb760e3c9bb0fccd1ba3b1a767dd263cc39cfa8ab5c88481cea47293b3fe38dc733eb39c592bff9b5f88596684da8a2f13a2b3fb7f'

I try to rely on pulling as my data direct from the db as possible. In the case of a query like this where i want the bech32 address while it's trivial to convert using python/js/cli i like to make some of my larger queries "backendless" and looking up an address from a raw (say one in a datum) can be painfully slow.
With this query a limit 1 could speed it up but it's no good for querying multiple addrs at a time.


Very bad performance of Array#combinations

I was looking at the relative performance of combinatorics in different languages, and noticed what seems to be quite a speed issue with the current Crystal implementation of Array#combinations which takes almost 400 seconds when other languages take less than 30 seconds.
icr:0> t0 = Time.utc;
       print((0...200).to_a.combinations(4).to_a.size);
       Time.utc - t0
64684950 => 00:06:30.513019000

You can compare to Ruby 3.2.2 which takes 27 seconds:
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]

irb(main):001:0> measure
TIME is added.
=> nil
irb(main):002:0> (0...200).to_a.combination(4).to_a.length

processing time: 26.907042s
=> 64684950

And to Python 3.11.4 which takes 3.7 seconds:
Python 3.11.4 (main, Jun 20 2023, 17:23:00) [Clang 14.0.3 (clang-14<IP_ADDRESS>.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from itertools import combinations
>>> from time import time
>>> t0 = time(); print(len(list(combinations(range(200), 4)))); time() - t0
64684950
3.729408025741577

I am using the latest crystal:
$ crystal -v
Crystal 1.9.2 (2023-07-19)

LLVM: 15.0.7
Default target: aarch64-apple-darwin22.6.0

Normally I wouldn't complain about relative performance but it is 15 to 100 times worse.  All tests were run on the same Apple MacBook Pro running Apple Silicon M2. I have replicated this issue on an Apple Mac mini with Intel.

It's possible this is related to the use of crystal i, I've been told the compiled version is much faster, although not the speed of Python.

It is most definitely due to using the interpreter. It's fairly easy to get it faster than Python by optimizing the logic a bit:
elapsed = Time.measure { pp (0...200).to_a.each_combination(4).size }
pp elapsed

Which outputs:
64684950
00:00:02.715608165

In the end tho, I wouldn't base performance benchmarks like this on the interpreter. Compile a binary with --release and use that or the most accuracy.

For the record, the Python example is indeed using an itertools iterator, so it is expected to be faster than the two other examples in the OP which create the entire array first

I attempted to fix that by calling list(itertools.combinations)On Aug 23, 2023, at 4:44 PM, Quinton Miller @.***> wrote:
For the record, the Python example is indeed using an itertools iterator, so it is expected to be faster than the two other examples in the OP which create the entire array first
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>


Fixed error in sample code

XAML snippet did not work due to a missing space.

@QuinnRadich : PR passed checklist review. Okay to merge.


Support waitForFunction as well as explicit --wait durations

The Playwright .wait_for_function() allows you to wait for a certain condition to met before progressing to the next step.
It would be useful to support this sort of conditional delay when there is uncertainty about what an appropriate explicit --wait delay might be.

Interesting idea. It might be possible to support this as:
shot-scraper datasette.io --wait-for-function "document.querySelector('iframe')"

Since it looks like page.waitForFunction(...) can accept a string instead of a function.
There's a default timeout of 30s. Not sure if it's worth having an extra --wait-for-function-timeout option which lets you change that default. I'm inclined to leave that off at first.

I like --wait-for "..." better. It's shorter.

Built a simple test page:

Here it comes...

Used this for a prototype:
shot-scraper div-after-2-seconds.html -o no-wait.png -w 300 -h 200

shot-scraper div-after-2-seconds.html -o wait-for.png -w 300 -h 200 \
  --wait-for "document.querySelector('div')"

Here's the prototype:
diff --git a/shot_scraper/cli.py b/shot_scraper/cli.py
index f2c96c6..3d238ae 100644
--- a/shot_scraper/cli.py
+++ b/shot_scraper/cli.py
@@ -117,6 +117,7 @@ def cli():
 @click.option(
     "--wait", type=int, help="Wait this many milliseconds before taking the screenshot"
 )
+@click.option("--wait-for", help="Wait until this JS expression returns true")
 @click.option(
     "--timeout",
     type=int,
@@ -151,6 +152,7 @@ def shot(
     retina,
     quality,
     wait,
+    wait_for,
     timeout,
     interactive,
     devtools,
@@ -198,6 +200,7 @@ def shot(
         "height": height,
         "quality": quality,
         "wait": wait,
+        "wait_for": wait_for,
         "timeout": timeout,
         "padding": padding,
         "retina": retina,
@@ -637,6 +640,7 @@ def take_shot(
         output = filename_for_url(url, ext="png", file_exists=os.path.exists)
     quality = shot.get("quality")
     wait = shot.get("wait")
+    wait_for = shot.get("wait_for")
     padding = shot.get("padding") or 0

     selectors = shot.get("selectors") or []
@@ -673,10 +677,14 @@ def take_shot(

     if wait:
         time.sleep(wait / 1000)
+
     javascript = shot.get("javascript")
     if javascript:
         _evaluate_js(page, javascript)

+    if wait_for:
+        page.wait_for_function(wait_for)
+
     screenshot_args = {}
     if quality:
         screenshot_args.update({"quality": quality, "type": "jpeg"})

I decided to evaluate any JavaScript from --javascript before the --wait-for code is executed.

Documentation is now live here: https://shot-scraper.datasette.io/en/latest/screenshots.html#waiting-until-a-specific-condition


multi-target-group: support passing in cidr blocks as flag

This effectively passes down the CIDR blocks as a flag and filters out the list of targets that are returned from aws.

The unit tests are failing b/c of some controller-gen issues upstream but a rebase against the latest should fix the issues

We can end up in a situation where we have targets that we never de-register (i.e., if all 3 controllers don't have the flag set correctly to cover the subnet). I think we probably want some check during registration too that the IP address is indeed something that can be de-registered. Otherwise, reject it. I don't know the best way to do this.

This might be pretty scary to guard against in a world where we autoscale and can't add in capacity.

Related to above, what happens if we want to expand/shrink the range of the CIDRs (i.e., add a new subnet/remove one)? How will this work? What's the process to do this safely?

I think this will be much more involved than just updating the flag. In our current world, we're around the subnets into our EKS clusters that are within the CIDR range. If we remove one, we'll need to also take down the EKS cluster and along w/ it, the load balancer controller. I had to do something similar before when we were fixing overlapping CIDRs.

Can you elaborate on?

This might be pretty scary to guard against in a world where we autoscale and can't add in capacity.
It seems odd to me that we have a specific logic in de-registration, but not registration.

Regarding the second question, I agree it's complicated. What's the process? I would like to understand how everything fits together. Hence, was asking. Like, does this make it a lot more complicated? What are the steps to do it safely if/when we need to?

It's because the registration flow registers the set of IPs that are in the endpoint but not in the target group. In the worst case scenario where we pass the wrong set of flags to the controller, we can't de-register the set of IPs but these targets should fail healthchecks and shouldn't receive traffic.
In the registration flow, however, the set of IPs we'll be filtering out will the IPs returned in the endpoint (the pod IPs that are allocated in the EKS subnet) and during a scale up event, we won't be able to register those IPs.
I also don't know if it's necessary to have a filter on the podIPs since these IPs should only be the ones attached to the cluster
There's two different flows in the reconciler here: https://github.com/dlmather/aws-load-balancer-controller/blob/1e8e5d06b9812ef0f2aa3bf25648707e78e095fe/pkg/targetgroupbinding/resource_manager.go#L143-L152

Regarding the second question, I agree it's complicated. What's the process? I would like to understand how everything fits together. Hence, was asking. Like, does this make it a lot more complicated? What are the steps to do it safely if/when we need to?

I don't think it'll be inherently more complicated. We already pass around the CIDRs in our terraform within our codebase so if we were to take down our EKS cluster and adjust the subnets, the controllers should already be stood up with the new ranges from the flags.

@balrawi-figma rebased to upstream 2.8.1: https://github.com/dlmather/aws-load-balancer-controller/pull/3

It's because the registration flow registers the set of IPs that are in the endpoint but not in the target group. In the worst case scenario where we pass the wrong set of flags to the controller, we can't de-register the set of IPs but these targets should fail healthchecks and shouldn't receive traffic.
In the registration flow, however, the set of IPs we'll be filtering out will the IPs returned in the endpoint (the pod IPs that are allocated in the EKS subnet) and during a scale up event, we won't be able to register those IPs.
I also don't know if it's necessary to have a filter on the podIPs since these IPs should only be the ones attached to the cluster
There's two different flows in the reconciler here:
https://github.com/dlmather/aws-load-balancer-controller/blob/1e8e5d06b9812ef0f2aa3bf25648707e78e095fe/pkg/targetgroupbinding/resource_manager.go#L143-L152

I obviously don't understand how the rest of the code works. To me, it seems more correct to have the same filtering logic in both registration and de-registration. Otherwise, you can leak stuff. Even if the target fails the health check, you end up accumulating IPs over time and either run out of IPs or hit the quota per target group. Either way, you won't be able to scale up again.

yup agree! For correctness, I'll need some direction on what we'll be filtering down.
For registration flow, the code is registering the set of IPs from the endpoint which don't exist in the target.
For the de-registration flow, the code is de-registering the set of IPs from the target which don't exist in the endpoint.
For both flows, we're still filtering out the set of IPs that are returned from AWS but a clarification on if we want to filter the list of endpoints that are from kubernetes is something we'll need to figure out.

Pushed an implementation for filtering out endpoints: https://github.com/dlmather/aws-load-balancer-controller/pull/1/commits/522f0a48bab1fc44102aaf589f80972cb8ee52ed

ultimately landed on: https://github.com/dlmather/aws-load-balancer-controller/pull/7


Sometimes I get this error, offsetTop

When I select the top image I get this error:
Cannot read properties of undefined (reading 'offsetTop')
TypeError: Cannot read properties of undefined (reading 'offsetTop')
    at HTMLDivElement.u (webpack-internal:///./node_modules/md-editor-v3/lib/es/MdEditor.mjs:1160:37)

the top image is this:
![](https://<IP_ADDRESS>:8443/photos/6c62596e6376514e4c4376416a472f65646c4d4d6a4870595a722f62)

I seen this error a couple of times.

I got this issue. Thanks

I fixed it in version 4.0.4, have a try.


fix(plaintext): swap strip-markdown for remove-markdown

Fixes #25.

Could we just use the newly added textVersion by first compiling to md and then removing the html? Unless it's a really time consuming feat, we'd avoid having too many libs/deps.

Good point! Will close this and create a new pull request using only textVersion


Rethink the Bridge

With the introduction of the DirectConnection, some refactoring had to be done and some new abstractions were created. Thus the bridge.Listener logic became deprecated.
Up til now the Car-Server connection was initiated by the car while it came online.
Now cars can go idle on the network, waiting to be initialized.

Either rewrite car/tcp_car.idle(), so the server coming online instantly captures the car's attention
Or rewrite host/bridge.py and use the server console to sweep/probe/initiate cars on the network

The latter approach would create a new AbstractConsole class, which could be used by the client DirectConnection as well.

Did the latter aproach. DirectConnection doesn't yet have a console though.


Mapping values are not allowed here in 'string' error

We have followed the instructions in the github repo and have setup our variable to be set by a YAML file. It keeps failing with error code:
Exception during execution: org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here in 'string', line 3, column 17: <head prefix="og: http://ogp.me/ns#"> ^ in <script> at line number 103
We are using Version 9.5.4 of XLR.
testYaml.yaml:
variables:
  - key: listOfVersions
    type: xlrelease.StringVariable
    value: hello

We have setup our variable like so:

Our task is setup like so (I know the authentication works and it seems to find the file):

Hi nessadc, Thank you for contacting us with this issue. Our research shows that this type of problem occurs when the yaml parser attempts to parse invalid yaml. We have tried to reproduce the error you received but have not been able to. Our testing confirms that your yaml file is valid and that the plugin is able to successfully set the release variable. We must consider though that what the plugin actually parses in your environment is the text returned from the https call to the Target URL rather than the actual file. Please confirm that a call to that URL from a browser (of course substitute the actual file name - testYaml.yaml for the place holder :filename:) returns valid yaml. The browser should display plain text that is valid yaml. Yaml is finicky in regard to whitespace and indentation. You can check for validity here: http://www.yamllint.com/. Although this type of test may help find the problem, it does not ensure that the the text string XLR is receiving is the same as you see in the browser since that also assumes that the credentials entered into the Get Vars task are right. Please check those again to confirm they are correct. Let us know how your testing goes and in the meantime, we will continue to try to reproduce your error. The log file for this plugin can be found in your XLR log directory and is named varSetterPlugin.log. You may find some useful information there as well. Let us know how it goes - we look forward to your feedback. Thanks!


[OCPCLOUD-1858]: Update k8s packages to 1.26

To align with the 4.13 release, k8s dependencies need to be updated to 1.26

/approve
/lgtm


Video Tracking volume bug fixed

Fixed the volume bug in video tracking - this bug was fixed by the Tag Manager team when they implemented this template to the product so we are implementing their solution here.
The bug was that basically when we moved the volume "zipper" we would send huge amount of events.

I believe changes are 1:1 with those from Tag team, approached without further check then.


Fix grid spacing for select image type panel

Tiny PR to fix the grid spacing on the create new linode select image type panel

Coverage remained the same at 27.255% when pulling 69e7841b68b64ff68802441ea4105e8c849ccd1a on alioso:create-from-image-grid-spacing-fix into 4d9e80be6a49524fd57a27565b885bdedb66eefb on linode:develop.


custom constraints

add an extra btn to create fully customized constraints.
That's not the first attempt but there were no open issue.
The main difficulty is to find a workaround when reading an layer list that includes custom things

This has been fixed on se.plan v1.0


Windshield Material - Migration of drawoder not carried over

Current Behavior
draw order is set to zero
Expected Behavior
Draw order set to legacy value
Steps To Reproduce
make windhsield material with draw order in order to stop flashing of two windhiled materials side by side , example interior windshield material next to exterior windshield material.
Environment
- OS:10
- Blender:3.1.2
- glTF-Blender-IO-MSFS:1.1.5

Anything else?
No response

error on my part


Use useShallow instead of shallow to construct a single object with multiple state picks

https://joseph-mathew.neetorecord.com/watch/df8f1dc4-3465-457a-b3de-52f2cba0c794
Ref:

https://github.com/pmndrs/zustand/discussions/2203
https://github.com/pmndrs/zustand/discussions/1937

@deepakjosp _a


cargo.lock needs update

Building itm fails if '--frozen' parameter is used:
cargo build --frozen
error: the lock file .../itm/Cargo.lock needs to be updated but --frozen was passed to prevent this

This is the case for v0.3.1 and current master.

Issue solved


Issue 68 helm charts difficult to consume take2

Description
Fix for issue  #68 in ocm-project.   At least as of 0.23.7 there was primary problem and a follow on problem that appeared after the first was fixed.
My setup was like this

With the setup and v0.23.7 the first problem was I would get an error like this
ocm-system   dmi-broker   24m   False   artifact revision 19090 does not match chart version 1.3.0-1085.xeae3fba.14
This because snapshot writer is using the resourceversion of of the kubernetes object that owns the snapshot.   Given my setup, 19090 happened to be the resourceversion of my Configuration.
As I mentioned when I opened #68, at least for helmcharts this is silly as there are several spots that are better sources for a version tag.    So I have fixed this storying the resource version, taken from the component descriptor, in the identity.  I am only doing this if there isn't already a value stored under ResourceVersionKey.
Fixing this revealed a problem when you have more than 1 mutation, in my case a Localization and a Configuration, getting their config a resource.    The mutation objects get their identity from the resource they reference in configRef.    Both of my reference the same config.yaml in my components.    The identity is used to compute the snapshot's OCI repository name.
Prior to my above tag fix being in place, the Localization and Configuration were both sticking their snapshots into the same repository.  Since I was 'lucky' and the two objects never had the same resourceversion the tags were used on the images stored in the repository were different and I never noticed a problem.     However once I put the above fix in place I started seeing sporadic failures.   In fact, due to issue #224, I would see my HelmRelease go back and forth between being unhealthy and healthy ( but mostly unhealthy ).    It would be unhealthy if/when the FluxDeployer grabbed the data from the snapshot image when the Localization was the last one to write the snapshot image.
To fix this added I 'mutation-object-uuid' to the identity of resources that are output from the mutations ( Localization, Configuration ).    This way each will have its own snapshot repo and they will no longer overwrite each other's images when the  same resource is referenced in configRef.
What type of PR is this? (check all applicable)

[ ] 🍕 Feature
[x ] 🐛 Bug Fix
[ ] 📝 Documentation Update
[ ] 🎨 Style
[ ] 🧑💻 Code Refactor
[ ] 🔥 Performance Improvements
[ ] ✅ Test
[ ] 🤖 Build
[ ] 🔁 CI
[ ] 📦 Chore (Release)
[ ] ⏩ Revert

Related Tickets & Documents

Fixes 68

Added tests?

[ ] 👍 yes
[ ] 🙅 no, because they aren't needed
[ ] 🙋 no, because I need help
[ ] Separate ticket for tests # (issue/pr)

As of 2024-07-11 I have just used the fixed build in my POC and confirmed that my components are being deployed.   If/when I get time I'll try to update the test suite.
Added to documentation?

[ ] 📜 README.md
[ ] 🙅 no documentation needed

Checklist:

[x ] My code follows the style guidelines of this project
[ x] I have performed a self-review of my code
[ x] I have commented my code, particularly in hard-to-understand areas
[ x] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ x] Any dependent changes have been merged and published in downstream modules

Hey @Skarlso
Couple of things about this

Haven't had time to run the test suite or to add tests yet
I based this off of v0.23.7 because the latest code had other problems ( See 226 ) But of course now this PR can't be merged because it is out of date.    So maybe issue 226 needs to be fixed before this PR can go in.

The usage of resource version ensures that the image tag is not being overwritten. If the tag is always the same, the cache will just return the existing image tag. Meaning it could return a tag that already exists instead of actually caching the new value. I would be very careful of using a fixed tag.

Prior to my above tag fix being in place, the Localization and Configuration were both sticking their snapshots into the same repository. Since I was 'lucky' and the two objects never had the same resourceversion the tags were used on the images stored in the repository were different and I never noticed a problem. However once I put the above fix in place I started seeing sporadic failures. In fact, due to issue https://github.com/open-component-model/ocm-controller/pull/224, I would see my HelmRelease go back and forth between being unhealthy and healthy ( but mostly unhealthy ). It would be unhealthy if/when the FluxDeployer grabbed the data from the snapshot image when the Localization was the last one to write the snapshot image.

Ah right, you see the problem. :)
The UUID might be a fix here, but I don't see you checking that in other parts of the code. The identity needs to be reconstructable so the cache can reliably find it every time. I'll look this over and try to make it work. :)

I'm on the fence with this solution. Currently, the only thing a helm chart user needs to add is the helmChartVersion extra identity field that defines the version of the helm chart, and everything works as is.
This introduces a lot of complexity, some obscure tricks with UUID, and the need for the RESOURCE to track the version of the HelmChart and not be independent from it.

@Skarlso
"I'm on the fence with this solution. Currently, the only thing a helm chart user needs to add is the helmChartVersion extra identity field that defines the version of the helm chart, and everything works as is."
I have explained before that having to update helmChartVersion on the ocm delivery objects with each new ComponentVersion is unacceptable to us.
Not sure how it is is correct to refer to the use of the UUID as obsecure.   That suggests that these aspects of the code are some how transparent when they are not :)

The default set of identity properties
The relationship between the identity properties and the snapshot repository name
That use of the the mutation object's k8s owner version as a tag

Likewise, I am not sure how calling this complex is justified.   ( Maybe my bar for what is complex is too high :) )  This is just a few lines of code that make sure the version's resource is part of the identity 'out of the box' plus a line of code to make sure that the mutation object's UUID is part of the identity.   And the effect isn't so complex either is it?

No mutation objects will share the same snapshot repository.  This is probably a good thing in general.
Snapshots have tags that can actually map to the resource version as defined within the component version

Regarding the use of the Resource, strictly speaking that isn't what part of this change.    All I am trying to do is to meet these requirements

helm chart is local resource of component version
at deploy time we are both localizing and configuring the values.yaml of the helm chart
there is no requirement for the component version to contain any ocm delivery objects.   i.e.  There is no requirement for any of Resource, FluxDeployer, Configuration, Localization or ComponentVersion to be in the component version
For the above scenario, there is no requirement to update any of Resource, FluxDeployer, Configuration, Localization or ComponentVersion with each new component version that is rolled out.

Fwiw, I only added the use of Resource, many months ago, because it was my only way to work around issue #68.  Believe that is explained at the top of this discussion.
And currently it seems that when using a build of my PR, the Resource isn't actually needed.
Regarding the tracking of the object revision, technically the existing code is broken.   For k8s objects, the resource version is unique for a kind but not across kinds.    So if you are Localizing and Configuring a resource and both mutation objects refer to the same config resource then with the existing code

They would produce snapshots to the same repository as the identity
They possibly could overwrite each other if by bad luck the Localization and Configuration had the same resource version
With change we avoid that possibility because the UID is unique across all objects.

@dee0sap, @Skarlso, @fabianburth would it make sense to schedule a short call where Fabian and Gergely can explain the planned changes and what effect this has on certain scenarios? It would also be good if Dan can lay out (again 😊) the scenario he wants to achieve. And then let's see if and how we can support it.

Hey @morri-son
That would be great.   Will you be setting that up?

@dee0sap I'll be out until 19th Aug, so I propose that you three meet next week. @fabianburth would you be so kind to host such a call? @dee0sap what would be the earliest time in the morning suitable for a call?

@fabianburth could you please schedule something next week? @dee0sap what would be the earliest suitable time in the morning for a call?

Hey @morri-son @Skarlso @fabianburth
The earliest time would be 07:00 Pacific Time.    August 5th, Monday, is a holiday here so we won't be able to meet then.

I did a small adjustment, but I read through this conversation again. I think this is fine for now especially if it fixes this pesky problem of sharing an OCI repo.


Added dotNetify

Web Frameworks/dotNetify - https://github.com/dsuryd/dotNetify
DotNetify is a simple, lightweight, yet powerful way to build modern .NET web applications

@dsuryd , thanks, It's looks great, but I'm not sure about it whetherStable, because it seems just to be created at 4 months ago.
/cc @quozd

It looks pretty nice, but I agree with @Jeffiy that it is pretty new, we should give it some time.

Closed. Please, reopen it or create a new PR when the project will be more mature. Thanks