From f5b030a001af06fb5a62c86bf9fdf785cc7b04b3 Mon Sep 17 00:00:00 2001 From: sumeyyeKurtulus Date: Mon, 1 Jul 2024 16:05:07 +0300 Subject: [PATCH] fix: ts-toolbelt build errors for ng-packs --- npm/ng-packs/package.json | 2 +- .../extensible-form.component.ts | 4 +- .../src/lib/utils/form-props.util.ts | 14 ++++-- .../extensible/src/lib/utils/props.util.ts | 47 ++++++++++--------- .../src/lib/utils/typeahead.util.ts | 2 +- .../packages/components/tsconfig.json | 4 +- .../core/src/lib/models/environment.ts | 9 ++-- 7 files changed, 46 insertions(+), 36 deletions(-) diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 4b34ba425f..f47c982cb7 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -124,7 +124,7 @@ "should-quote": "^1.0.0", "ts-jest": "29.1.0", "ts-node": "10.9.1", - "ts-toolbelt": "6.15.4", + "ts-toolbelt": "^9.0.0", "tslib": "^2.0.0", "tslint": "~6.1.0", "typescript": "~5.3.0", diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts index 455f8cdd99..ae725c1563 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts @@ -55,7 +55,7 @@ export class ExtensibleFormComponent { extraPropertiesKey = EXTRA_PROPERTIES_KEY; groupedPropList!: GroupedFormPropList; - groupedPropListOfArray: FormProp[][]; + groupedPropListOfArray!: FormProp[][]; record!: R; get form(): UntypedFormGroup { @@ -76,7 +76,7 @@ export class ExtensibleFormComponent { } //TODO: Reactor this method - isAnyGroupMemberVisible(index: number, data) { + isAnyGroupMemberVisible(index: number, data: any) { const { items } = this.groupedPropList; const formPropList = items[index].formPropList.toArray(); return formPropList.some(prop => prop.visible(data)); diff --git a/npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts index ab7c669d47..aacc6fe597 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts @@ -1,10 +1,10 @@ import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; -import { DateTimeAdapter,DateAdapter,TimeAdapter } from '@abp/ng.theme.shared'; +import { DateTimeAdapter, DateAdapter, TimeAdapter } from '@abp/ng.theme.shared'; import { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties'; import { ePropType } from '../enums/props.enum'; -import { FormPropList } from "../models/form-props"; -import { PropData } from "../models/props"; +import { FormPropList } from '../models/form-props'; +import { PropData } from '../models/props'; import { ExtensionsService } from '../services/extensions.service'; import { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token'; @@ -16,7 +16,7 @@ export function generateFormFromProps(data: PropData) { const extraForm = new UntypedFormGroup({}); form.addControl(EXTRA_PROPERTIES_KEY, extraForm); - const record = data.record || {}; + const record: any = data.record || {}; const type = JSON.stringify(record) === '{}' ? 'create' : 'edit'; const props: FormPropList = extensions[`${type}FormProps`].get(identifier).props; const extraProperties = record[EXTRA_PROPERTIES_KEY] || {}; @@ -24,7 +24,11 @@ export function generateFormFromProps(data: PropData) { props.forEach(({ value: prop }) => { const name = prop.name; const isExtraProperty = prop.isExtra || name in extraProperties; - let value = isExtraProperty ? extraProperties[name] : name in record ? record[name] : undefined; + let value = isExtraProperty + ? extraProperties[name as string] + : name in record + ? record[name] + : undefined; if (typeof value === 'undefined') value = prop.defaultValue; diff --git a/npm/ng-packs/packages/components/extensible/src/lib/utils/props.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/props.util.ts index 24360dccc1..ccd00d3862 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/utils/props.util.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/utils/props.util.ts @@ -26,7 +26,7 @@ import { export function createExtraPropertyValueResolver( name: string, ): PropCallback> { - return (data?) => of((data.record as { [key: string]: any })[EXTRA_PROPERTIES_KEY][name]); + return (data?) => of((data?.record as { [key: string]: any })[EXTRA_PROPERTIES_KEY][name]); } export function mergeWithDefaultProps>( @@ -47,26 +47,29 @@ export function mergeWithDefaultProps>( ); }); } -type InferredPropDefaults = F extends EntityPropsFactory - ? EntityPropDefaults - : F extends CreateFormPropsFactory - ? CreateFormPropDefaults - : F extends EditFormPropsFactory - ? EditFormPropDefaults - : never; +type InferredPropDefaults = + F extends EntityPropsFactory + ? EntityPropDefaults + : F extends CreateFormPropsFactory + ? CreateFormPropDefaults + : F extends EditFormPropsFactory + ? EditFormPropDefaults + : never; -type InferredPropContributorCallbacks = F extends EntityPropsFactory - ? EntityPropContributorCallbacks - : F extends CreateFormPropsFactory - ? CreateFormPropContributorCallbacks - : F extends EditFormPropsFactory - ? EditFormPropContributorCallbacks - : never; +type InferredPropContributorCallbacks = + F extends EntityPropsFactory + ? EntityPropContributorCallbacks + : F extends CreateFormPropsFactory + ? CreateFormPropContributorCallbacks + : F extends EditFormPropsFactory + ? EditFormPropContributorCallbacks + : never; -type InferredProps = F extends EntityPropsFactory - ? EntityProps - : F extends CreateFormPropsFactory - ? FormProps - : F extends EditFormPropsFactory - ? FormProps - : never; +type InferredProps = + F extends EntityPropsFactory + ? EntityProps + : F extends CreateFormPropsFactory + ? FormProps + : F extends EditFormPropsFactory + ? FormProps + : never; diff --git a/npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts index eec592ad0c..565aed66dc 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts @@ -39,7 +39,7 @@ export function createTypeaheadOptions( } export function getTypeaheadType(lookup: ExtensionPropertyUiLookupDto, name: string) { - if (!!lookup.url) { + if (!lookup.url) { return ePropType.Typeahead; } else { return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined; diff --git a/npm/ng-packs/packages/components/tsconfig.json b/npm/ng-packs/packages/components/tsconfig.json index 03261df5a4..e810769905 100644 --- a/npm/ng-packs/packages/components/tsconfig.json +++ b/npm/ng-packs/packages/components/tsconfig.json @@ -11,6 +11,8 @@ } ], "compilerOptions": { - "target": "es2020" + "target": "es2020", + "strict": true, + "strictNullChecks": true } } diff --git a/npm/ng-packs/packages/core/src/lib/models/environment.ts b/npm/ng-packs/packages/core/src/lib/models/environment.ts index 78a9294525..a397918631 100644 --- a/npm/ng-packs/packages/core/src/lib/models/environment.ts +++ b/npm/ng-packs/packages/core/src/lib/models/environment.ts @@ -1,5 +1,6 @@ import { AuthConfig } from 'angular-oauth2-oidc'; import { ABP } from './common'; +import { O } from 'ts-toolbelt'; export interface Environment { apis: Apis; @@ -20,17 +21,17 @@ export interface ApplicationInfo { export interface HasAdditional { [key: string]: string; } -export interface ApiConfig extends Partial{ +export interface ApiConfig extends O.Partial { url: string; - rootNamespace?: string; + rootNamespace: string; } export interface Apis { - [key: string]: Partial; + [key: string]: O.Partial; default: ApiConfig; } -export type customMergeFn = (localEnv: Partial, remoteEnv: any) => Environment; +export type customMergeFn = (localEnv: O.Partial, remoteEnv: any) => Environment; export interface RemoteEnv { url: string;