Remove TbInject decorator.

This commit is contained in:
Igor Kulikov 2024-11-01 13:52:09 +02:00
parent cac6233e52
commit d91ebeb1e9
8 changed files with 14 additions and 43 deletions

View File

@ -42,8 +42,9 @@ const resolveJQueryPlugin: Plugin = {
name: 'tb-resolve-jquery-plugin',
setup(build: PluginBuild) {
if (isProduction()) {
build.onResolve({filter: /^(jquery|\$)$/}, (args) => {
return {path: require.resolve('jquery')};
const jQueryPath = require.resolve('jquery');
build.onResolve({filter: /^(jquery|\$)$/}, () => {
return {path: jQueryPath};
})
}
}
@ -63,7 +64,7 @@ const compressorPlugin: Plugin = {
if (!compressFileTypes.some((ext) => ext === path.extname(file.path))) continue;
if (file.contents.byteLength <= compressThreshold) continue;
const compressedContent = await gzipContent(file.contents);
const compressedFilePath = `${file.path}${outputExt}`; //path.join(outputDir, `${path.basename(file.path)}${outputExt}`);
const compressedFilePath = `${file.path}${outputExt}`;
gzippedFiles.push(
{
path: compressedFilePath,

View File

@ -3,9 +3,9 @@
"version": "3.9.0",
"scripts": {
"ng": "ng",
"start": "ng serve --configuration development --host 0.0.0.0 --open",
"start": "node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve --configuration development --host 0.0.0.0 --open",
"build": "ng build",
"build:prod": "ng build --configuration production",
"build:prod": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --configuration production",
"build:types": "node generate-types.js",
"build:icon-metadata": "node generate-icon-metadata.js",
"lint": "ng lint",

View File

@ -100,7 +100,6 @@ import * as TruncateWithTooltipDirective from '@shared/directives/truncate-with-
import * as coercion from '@shared/decorators/coercion';
import * as enumerable from '@shared/decorators/enumerable';
import * as TbInject from '@shared/decorators/tb-inject';
import * as FooterComponent from '@shared/components/footer.component';
import * as LogoComponent from '@shared/components/logo.component';
@ -432,7 +431,6 @@ class ModulesMap implements IModulesMap {
'@shared/decorators/coercion': coercion,
'@shared/decorators/enumerable': enumerable,
'@shared/decorators/tb-inject': TbInject,
'@shared/import-export/import-export.service': ImportExportService,
'@shared/import-export/import-dialog.component': ImportDialogComponent,

View File

@ -16,13 +16,10 @@
import { MatDialogRef } from '@angular/material/dialog';
import { Directive, inject, InjectionToken } from '@angular/core';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { Router } from '@angular/router';
import { PageComponent } from '@shared/components/page.component';
import { CustomDialogContainerComponent } from './custom-dialog-container.component';
import { UntypedFormBuilder, Validators } from '@angular/forms';
import { TbInject } from '@shared/decorators/tb-inject';
export const CUSTOM_DIALOG_DATA = new InjectionToken<CustomDialogData>('ConfigDialogData');
@ -42,8 +39,8 @@ export class CustomDialogComponent extends PageComponent {
public data = inject(CUSTOM_DIALOG_DATA);
public fb = inject(UntypedFormBuilder);
constructor(@TbInject(Store) protected store: Store<AppState>) {
super(store);
constructor() {
super();
// @ts-ignore
this.validators = Validators;
this.data.controller(this);

View File

@ -16,8 +16,6 @@
import { PageComponent } from '@shared/components/page.component';
import { Directive, inject, Injector, OnDestroy, OnInit } from '@angular/core';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import {
IDynamicWidgetComponent,
widgetContextToken,
@ -50,7 +48,6 @@ import { DatePipe } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';
import { DomSanitizer } from '@angular/platform-browser';
import { Router } from '@angular/router';
import { TbInject } from '@shared/decorators/tb-inject';
import { MillisecondsToTimeStringPipe } from '@shared/pipe/milliseconds-to-time-string.pipe';
import { UserSettingsService } from '@core/http/user-settings.service';
import { ImagePipe } from '@shared/pipe/image.pipe';
@ -76,8 +73,8 @@ export class DynamicWidgetComponent extends PageComponent implements IDynamicWid
public readonly errorMessages = inject(widgetErrorMessagesToken);
public readonly widgetTitlePanel = inject(widgetTitlePanelToken);
constructor(@TbInject(Store) protected store: Store<AppState>) {
super(store);
constructor() {
super();
this.ctx.$injector = this.$injector;
this.ctx.deviceService = this.$injector.get(DeviceService);
this.ctx.assetService = this.$injector.get(AssetService);

View File

@ -14,7 +14,7 @@
/// limitations under the License.
///
import { Directive, OnDestroy } from '@angular/core';
import { Directive, inject, OnDestroy } from '@angular/core';
import { select, Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { Observable, Subscription } from 'rxjs';
@ -25,13 +25,15 @@ import { AbstractControl } from '@angular/forms';
@Directive()
export abstract class PageComponent implements OnDestroy {
protected store: Store<AppState> = inject(Store<AppState>);
isLoading$: Observable<boolean>;
loadingSubscription: Subscription;
disabledOnLoadFormControls: Array<AbstractControl> = [];
showMainLoadingBar = true;
protected constructor(protected store: Store<AppState>) {
protected constructor(...args: unknown[]) {
this.isLoading$ = this.store.pipe(delay(0), select(selectIsLoading), share());
}

View File

@ -16,4 +16,3 @@
export * from './coercion';
export * from './enumerable';
export * from './tb-inject';

View File

@ -1,23 +0,0 @@
///
/// Copyright © 2016-2024 The Thingsboard Authors
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
import { Inject, Type } from '@angular/core';
export function TbInject<T>(token: any): (target: Type<T>, key: any, paramIndex: number) => void {
return (target: Type<T>, key: any, paramIndex: number) => {
Inject(token)(target, key, paramIndex);
};
}