Browse Source

Merge pull request #6432 from abpframework/fix/6431

Fixed object extensions errors
pull/6437/head
Levent Arman Özak 6 years ago
committed by GitHub
parent
commit
754253f5ec
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 48
      npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts
  2. 2
      npm/ng-packs/packages/core/src/lib/validators/age.validator.ts
  3. 2
      npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts
  4. 2
      npm/ng-packs/packages/core/src/lib/validators/range.validator.ts
  5. 4
      npm/ng-packs/packages/core/src/lib/validators/required.validator.ts
  6. 2
      npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts
  7. 2
      npm/ng-packs/packages/core/src/lib/validators/url.validator.ts
  8. 9
      npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts
  9. 37
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/case.util.ts
  10. 3
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts
  11. 18
      npm/ng-packs/packages/theme-shared/extensions/src/tests/case.util.spec.ts
  12. 24
      npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts
  13. 107
      npm/ng-packs/yarn.lock

48
npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts

@ -37,14 +37,6 @@ describe('Validators', () => {
expect(control.errors).toEqual(expected); expect(control.errors).toEqual(expected);
}); });
it('should return null when control is pristine', () => {
const invalidNumber = '5105105105105101';
const control = new FormControl(invalidNumber, [validateCreditCard()]);
// control is not dirty
expect(control.valid).toBe(true);
});
}); });
describe('Email Validator', () => { describe('Email Validator', () => {
@ -81,14 +73,6 @@ describe('Validators', () => {
expect(control.errors).toEqual(expected); expect(control.errors).toEqual(expected);
}, },
); );
it('should return null when control is pristine', () => {
const invalidDate = '';
const control = new FormControl(invalidDate, [validateMinAge({ age: Infinity })]);
// control is not dirty
expect(control.valid).toBe(true);
});
}); });
describe('Range Validator', () => { describe('Range Validator', () => {
@ -115,14 +99,6 @@ describe('Validators', () => {
expect(control.errors).toEqual(expected); expect(control.errors).toEqual(expected);
}, },
); );
it('should return null when control is pristine', () => {
const invalidUrl = '';
const control = new FormControl(invalidUrl, [validateRange({ minimum: 3 })]);
// control is not dirty
expect(control.valid).toBe(true);
});
}); });
describe('Required Validator', () => { describe('Required Validator', () => {
@ -148,14 +124,6 @@ describe('Validators', () => {
expect(control.errors).toEqual(expected); expect(control.errors).toEqual(expected);
}, },
); );
it('should return null when control is pristine', () => {
const invalidUrl = '';
const control = new FormControl(invalidUrl, [validateRequired()]);
// control is not dirty
expect(control.valid).toBe(true);
});
}); });
describe('String Length Validator', () => { describe('String Length Validator', () => {
@ -178,14 +146,6 @@ describe('Validators', () => {
expect(control.errors).toEqual(expected); expect(control.errors).toEqual(expected);
}, },
); );
it('should return null when control is pristine', () => {
const invalidUrl = '';
const control = new FormControl(invalidUrl, [validateStringLength({ minimumLength: 3 })]);
// control is not dirty
expect(control.valid).toBe(true);
});
}); });
describe('Url Validator', () => { describe('Url Validator', () => {
@ -217,13 +177,5 @@ describe('Validators', () => {
expect(control.errors).toEqual(expected); expect(control.errors).toEqual(expected);
}); });
it('should return null when control is pristine', () => {
const invalidUrl = 'x';
const control = new FormControl(invalidUrl, [validateUrl()]);
// control is not dirty
expect(control.valid).toBe(true);
});
}); });
}); });

2
npm/ng-packs/packages/core/src/lib/validators/age.validator.ts

@ -12,8 +12,6 @@ export interface MinAgeOptions {
export function validateMinAge({ age = 18 }: MinAgeOptions = {}): ValidatorFn { export function validateMinAge({ age = 18 }: MinAgeOptions = {}): ValidatorFn {
return (control: AbstractControl): MinAgeError | null => { return (control: AbstractControl): MinAgeError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null; if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidMinAge(control.value, age) ? null : { minAge: { age } }; return isValidMinAge(control.value, age) ? null : { minAge: { age } };

2
npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts

@ -6,8 +6,6 @@ export interface CreditCardError {
export function validateCreditCard(): ValidatorFn { export function validateCreditCard(): ValidatorFn {
return (control: AbstractControl): CreditCardError | null => { return (control: AbstractControl): CreditCardError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null; if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidCreditCard(String(control.value)) ? null : { creditCard: true }; return isValidCreditCard(String(control.value)) ? null : { creditCard: true };

2
npm/ng-packs/packages/core/src/lib/validators/range.validator.ts

@ -14,8 +14,6 @@ export interface RangeOptions {
export function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn { export function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn {
return (control: AbstractControl): RangeError | null => { return (control: AbstractControl): RangeError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null; if (['', null, undefined].indexOf(control.value) > -1) return null;
const value = Number(control.value); const value = Number(control.value);

4
npm/ng-packs/packages/core/src/lib/validators/required.validator.ts

@ -10,9 +10,7 @@ export interface RequiredOptions {
export function validateRequired({ allowEmptyStrings }: RequiredOptions = {}): ValidatorFn { export function validateRequired({ allowEmptyStrings }: RequiredOptions = {}): ValidatorFn {
return (control: AbstractControl): RequiredError | null => { return (control: AbstractControl): RequiredError | null => {
return control.pristine || isValidRequired(control.value, allowEmptyStrings) return isValidRequired(control.value, allowEmptyStrings) ? null : { required: true };
? null
: { required: true };
}; };
} }

2
npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts

@ -19,8 +19,6 @@ export function validateStringLength({
minimumLength = 0, minimumLength = 0,
}: StringLengthOptions = {}): ValidatorFn { }: StringLengthOptions = {}): ValidatorFn {
return (control: AbstractControl): StringLengthError | null => { return (control: AbstractControl): StringLengthError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null; if (['', null, undefined].indexOf(control.value) > -1) return null;
const value = String(control.value); const value = String(control.value);

2
npm/ng-packs/packages/core/src/lib/validators/url.validator.ts

@ -6,8 +6,6 @@ export interface UrlError {
export function validateUrl(): ValidatorFn { export function validateUrl(): ValidatorFn {
return (control: AbstractControl): UrlError | null => { return (control: AbstractControl): UrlError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null; if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidUrl(control.value) ? null : { url: true }; return isValidUrl(control.value) ? null : { url: true };

9
npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts

@ -65,10 +65,9 @@ export class ExtensibleFormPropComponent implements OnChanges {
this.typeaheadModel = selectedOption || { key: null, value: null }; this.typeaheadModel = selectedOption || { key: null, value: null };
const { key, value } = this.typeaheadModel; const { key, value } = this.typeaheadModel;
const [keyControl, valueControl] = this.getTypeaheadControls(); const [keyControl, valueControl] = this.getTypeaheadControls();
if (valueControl.value && !value) valueControl.markAsDirty();
keyControl.setValue(key); keyControl.setValue(key);
valueControl.setValue(value); valueControl.setValue(value);
valueControl.markAsDirty();
valueControl.markAsTouched();
} }
search = (text$: Observable<string>) => search = (text$: Observable<string>) =>
@ -106,7 +105,7 @@ export class ExtensibleFormPropComponent implements OnChanges {
} }
private setAsterisk() { private setAsterisk() {
this.asterisk = this.validators.some(v => v === Validators.required) ? '*' : ''; this.asterisk = this.validators.some(isRequired) ? '*' : '';
} }
getComponent(prop: FormProp): string { getComponent(prop: FormProp): string {
@ -167,3 +166,7 @@ export class ExtensibleFormPropComponent implements OnChanges {
this.typeaheadModel = { key: keyControl.value, value: valueControl.value }; this.typeaheadModel = { key: keyControl.value, value: valueControl.value };
} }
} }
function isRequired(validator: ValidatorFn) {
return validator === Validators.required || validator.toString().includes('required');
}

37
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/case.util.ts

@ -1,37 +0,0 @@
// https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/StringUtils.cs#L155
export function jsonNetCamelCase(str: string) {
if (!str || !isUpperCase(str[0])) return str;
const chars = str.split('');
const { length } = chars;
for (let i = 0; i < length; i++) {
if (i === 1 && !isUpperCase(chars[i])) break;
const hasNext = i + 1 < length;
if (i > 0 && hasNext && !isUpperCase(chars[i + 1])) {
if (isSeparator(chars[i + 1])) {
chars[i] = toLowerCase(chars[i]);
}
break;
}
chars[i] = toLowerCase(chars[i]);
}
return chars.join('');
}
function isSeparator(str = '') {
return /[\s\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]+/.test(str);
}
function isUpperCase(str = '') {
return /[A-Z]+/.test(str);
}
function toLowerCase(str = '') {
return str.toLowerCase();
}

3
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts

@ -11,7 +11,6 @@ import { EntityProp, EntityPropList } from '../models/entity-props';
import { FormProp, FormPropList } from '../models/form-props'; import { FormProp, FormPropList } from '../models/form-props';
import { ObjectExtensions } from '../models/object-extensions'; import { ObjectExtensions } from '../models/object-extensions';
import { PropCallback } from '../models/props'; import { PropCallback } from '../models/props';
import { jsonNetCamelCase } from './case.util';
import { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util'; import { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';
import { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util'; import { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';
import { createExtraPropertyValueResolver } from './props.util'; import { createExtraPropertyValueResolver } from './props.util';
@ -122,7 +121,7 @@ function createPropertiesToContributorsMapper<T = any>(
Object.keys(properties).forEach((name: string) => { Object.keys(properties).forEach((name: string) => {
const property = properties[name]; const property = properties[name];
const propName = jsonNetCamelCase(name); const propName = name;
const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto); const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto);
const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property); const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);
const displayName = generateDisplayName(property.displayName, { name, resource }); const displayName = generateDisplayName(property.displayName, { name, resource });

18
npm/ng-packs/packages/theme-shared/extensions/src/tests/case.util.spec.ts

@ -1,18 +0,0 @@
import { jsonNetCamelCase } from '../lib/utils/case.util';
describe('Case Utils', () => {
describe('#jsonNetCamelCase', () => {
test.each`
input | output
${'Primary'} | ${'primary'}
${'PrimaryRole'} | ${'primaryRole'}
${'Primary Role'} | ${'primary Role'}
${'PrimaryRole_Text'} | ${'primaryRole_Text'}
${'ISBN'} | ${'isbn'}
${''} | ${''}
${'iMDB'} | ${'iMDB'}
`('should return $output when input is $input', ({ input, output }) => {
expect(jsonNetCamelCase(input)).toBe(output);
});
});
});

24
npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts

@ -51,28 +51,28 @@ describe('State Utils', () => {
contributors.prop.Role.forEach(callback => callback(propList)); contributors.prop.Role.forEach(callback => callback(propList));
expect(propList.length).toBe(4); expect(propList.length).toBe(4);
expect(propList.head.value.name).toBe('title'); expect(propList.head.value.name).toBe('Title');
expect(propList.head.next.value.name).toBe('isHero'); expect(propList.head.next.value.name).toBe('IsHero');
expect(propList.head.next.next.value.name).toBe('myEnum'); expect(propList.head.next.next.value.name).toBe('MyEnum');
expect(propList.head.next.next.next.value.name).toBe('foo_Text'); expect(propList.head.next.next.next.value.name).toBe('Foo_Text');
const createFormList = new FormPropList(); const createFormList = new FormPropList();
contributors.createForm.Role.forEach(callback => callback(createFormList)); contributors.createForm.Role.forEach(callback => callback(createFormList));
expect(createFormList.length).toBe(4); expect(createFormList.length).toBe(4);
expect(createFormList.head.value.name).toBe('title'); expect(createFormList.head.value.name).toBe('Title');
expect(createFormList.head.next.value.name).toBe('myEnum'); expect(createFormList.head.next.value.name).toBe('MyEnum');
expect(createFormList.head.next.next.value.name).toBe('foo'); expect(createFormList.head.next.next.value.name).toBe('Foo');
expect(createFormList.head.next.next.next.value.name).toBe('foo_Text'); expect(createFormList.head.next.next.next.value.name).toBe('Foo_Text');
const editFormList = new FormPropList(); const editFormList = new FormPropList();
contributors.editForm.Role.forEach(callback => callback(editFormList)); contributors.editForm.Role.forEach(callback => callback(editFormList));
expect(editFormList.length).toBe(4); expect(editFormList.length).toBe(4);
expect(editFormList.head.value.name).toBe('title'); expect(editFormList.head.value.name).toBe('Title');
expect(editFormList.head.next.value.name).toBe('isHero'); expect(editFormList.head.next.value.name).toBe('IsHero');
expect(editFormList.head.next.next.value.name).toBe('foo'); expect(editFormList.head.next.next.value.name).toBe('Foo');
expect(editFormList.head.next.next.next.value.name).toBe('foo_Text'); expect(editFormList.head.next.next.next.value.name).toBe('Foo_Text');
}); });
}); });
}); });

107
npm/ng-packs/yarn.lock

@ -2,12 +2,12 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/ng.core@~4.0.0-rc.4": "@abp/ng.core@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.0.0-rc.4.tgz#f1cbb7d43662579a7977c9d98bf28f7a6726537f" resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.0.0-rc.5.tgz#30db71708801ea7f04307577d9482d0bb3b386b0"
integrity sha512-EtvoUr52v4+DEn3j2mru4OiLJf9tcg5ptLRjwBg1psftz1t3atnmvP1F8+sIhOwnj/Zm5hlhqSqnedpTzdALPg== integrity sha512-5l7KwxCw21rbYO1dWvpIrUU77EfM68XuNm2s+3bLpckUgsanf2zjdpYPbXgzpeAedsUtjrTjCZLqlRj9n4iwKQ==
dependencies: dependencies:
"@abp/utils" "^4.0.0-rc.3" "@abp/utils" "^4.0.0-rc.4"
"@angular/localize" "~10.0.10" "@angular/localize" "~10.0.10"
"@ngxs/router-plugin" "^3.7.0" "@ngxs/router-plugin" "^3.7.0"
"@ngxs/store" "^3.7.0" "@ngxs/store" "^3.7.0"
@ -18,29 +18,29 @@
ts-toolbelt "6.15.4" ts-toolbelt "6.15.4"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.feature-management@~4.0.0-rc.4": "@abp/ng.feature-management@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.0.0-rc.4.tgz#ab740e4327b8fd10ba4567bfeb24debbd4ffe8a5" resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.0.0-rc.5.tgz#0755c8f0eb69c339cc511f2e599786c8fcb2d369"
integrity sha512-PlWxAA2wECRrBGwqWeaWi+f3YPayIaOJhW4INTvD5JUFMIRJsOJZlxpmcz8x2pU64bUO42/YM26+Xy2TyVKFNg== integrity sha512-owYYnnNqQOCq9MepTVjn8lWTw1Uux+hj83QZ47Mfz3IKP/EuYz2cS3rkqIw5MQ4hPfQZxBwu5qM2vhbFLt0K4w==
dependencies: dependencies:
"@abp/ng.theme.shared" "~4.0.0-rc.4" "@abp/ng.theme.shared" "~4.0.0-rc.5"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.identity@~4.0.0-rc.4": "@abp/ng.identity@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.0.0-rc.4.tgz#5b8694b1d1d6f1a039e1a445add14dcc5d6eb5ad" resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.0.0-rc.5.tgz#f67fc5ed50be150e9229754b27506121817c03a7"
integrity sha512-nqx3ofuTT5kOdJHWAyrZyEmGGp08DZNNC7IIY7L1/NueiAcfjghKrAiGkNnt5SApdk86OzdrLdIvpELnZVCMzg== integrity sha512-NsJ5BJaqLuSt+tutN258FeBLFlfLQvoGI1etn8+1CoBd+uYGEcIYNVkJj/i+8q/ShMU7LoZ9Di/G4NjxU8WFig==
dependencies: dependencies:
"@abp/ng.permission-management" "~4.0.0-rc.4" "@abp/ng.permission-management" "~4.0.0-rc.5"
"@abp/ng.theme.shared" "~4.0.0-rc.4" "@abp/ng.theme.shared" "~4.0.0-rc.5"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.permission-management@~4.0.0-rc.4": "@abp/ng.permission-management@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.0.0-rc.4.tgz#3d838528549860e2a8b6aba2c5f35f6764089322" resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.0.0-rc.5.tgz#04ea4199074ff2689d7a429ba482c8a7b37abb0a"
integrity sha512-2o/1dtfNQOkqHWzdHyI8Ske5E5VseCM+N3erJu4NSLIWrj5G3CG9wwbJm3BqEjHG7hzbcvR6fYxKpDUmqvQR0A== integrity sha512-T+iAhDFXaYW9/JRPPWXqm1lbHv5F0uTR/Ij5yiCpFgrbDu5bPVf/0WR7y8VyMn5lZ+1gWa+o9VievBnlKVRwHg==
dependencies: dependencies:
"@abp/ng.theme.shared" "~4.0.0-rc.4" "@abp/ng.theme.shared" "~4.0.0-rc.5"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.schematics@~3.3.1": "@abp/ng.schematics@~3.3.1":
@ -54,52 +54,45 @@
jsonc-parser "^2.3.0" jsonc-parser "^2.3.0"
typescript "~3.9.2" typescript "~3.9.2"
"@abp/ng.setting-management@~4.0.0-rc.4": "@abp/ng.setting-management@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.0.0-rc.4.tgz#45e7fe04a8069da19d644860617e5b5aeab39281" resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.0.0-rc.5.tgz#32837b5e0b49b1596dc9ebc708a14fb3250eda36"
integrity sha512-L7liYuB+DdWdcdJwG4OkQhBdb1bNqFO08TjfbRdkPARHje/tat+z8jtZ58yQVYOVCs9M2vJt3ydHnvZ+PQWpow== integrity sha512-LSCoXvE22HbKrEAQ92rbvfotCL5pyZSG1wJImJg8zLOkw0i83mT7tycjDeBdixz4FkbYF4nhbuPwaz3GDbxL0Q==
dependencies: dependencies:
"@abp/ng.theme.shared" "~4.0.0-rc.4" "@abp/ng.theme.shared" "~4.0.0-rc.5"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.tenant-management@~4.0.0-rc.4": "@abp/ng.tenant-management@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.0.0-rc.4.tgz#0978a65423b9f56df1fd58eaaa01fd912b2875ab" resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.0.0-rc.5.tgz#7090459579be7ec800990ed8e843e7a2258536d2"
integrity sha512-K7BCZMTs/nPoPrDo/yGu3IWZjXktZHcq0qg2pvjVZRqlfbgk0m+mih01H6WC+/tjKYfdb4PtWQJ36mGR17zvuQ== integrity sha512-axBvi9XroErRTQEVvmkn3bTabH44yAqoFxuTaVjRADuBYO6DG/CREWlfDgeDtMLPQHFxCl705OMh0gU56+AFdw==
dependencies: dependencies:
"@abp/ng.feature-management" "~4.0.0-rc.4" "@abp/ng.feature-management" "~4.0.0-rc.5"
"@abp/ng.theme.shared" "~4.0.0-rc.4" "@abp/ng.theme.shared" "~4.0.0-rc.5"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.theme.basic@~4.0.0-rc.4": "@abp/ng.theme.basic@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.0.0-rc.4.tgz#438d73fed9962dae3d92b0d1f87f36e3601ab720" resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.0.0-rc.5.tgz#01e3dd7ec3d315004860e438bad7ac4459e66cb5"
integrity sha512-Gunzo6N1YoGZ3crLCYqflmvnuayekyV5Aa63dwCikOTloEBmfQy4FylAcUvncNo841BwmWOk7oDGmxQmrx+5bw== integrity sha512-NHrTB5Ck7j5xeVfN3vNiom9HlcwzqF1mQc1bZUc73/wiN8LttrnnMdRuW5vclS6BbJP2p2Ziw/fq8d9hw7GJ1w==
dependencies: dependencies:
"@abp/ng.theme.shared" "~4.0.0-rc.4" "@abp/ng.theme.shared" "~4.0.0-rc.5"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/ng.theme.shared@~4.0.0-rc.4": "@abp/ng.theme.shared@~4.0.0-rc.5":
version "4.0.0-rc.4" version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.0.0-rc.4.tgz#6341acbb647c8606c1147cad4387334a42908a2c" resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.0.0-rc.5.tgz#0493c98cfd378750b5a5ea8d0ea25da0fceec908"
integrity sha512-r3V+PIJC9pCA1OD7xL6I+sJ0AFeF/wcjyUJvn7ZRvevK+eDkHf6AqTXRCNgd+VTfCqtjIpiU5oC7rSOB1gGwPw== integrity sha512-TmgKgt+yo6i3jiO05UlpIWt5nvv3pIsVHsLKaj7qXFWvQXKZxSeGiy1/9fhmdwFyV2Lq7c+FuoihDWCuGukDhw==
dependencies: dependencies:
"@abp/ng.core" "~4.0.0-rc.4" "@abp/ng.core" "~4.0.0-rc.5"
"@fortawesome/fontawesome-free" "^5.14.0" "@fortawesome/fontawesome-free" "^5.14.0"
"@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0"
"@ngx-validate/core" "^0.0.12" "@ngx-validate/core" "^0.0.13"
"@swimlane/ngx-datatable" "^17.1.0" "@swimlane/ngx-datatable" "^17.1.0"
bootstrap "^4.5.0" bootstrap "^4.5.0"
chart.js "^2.9.3" chart.js "^2.9.3"
tslib "^2.0.0" tslib "^2.0.0"
"@abp/utils@^4.0.0-rc.3":
version "4.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.3.tgz#95a67fc0f7c929e0404d33ee2ab8571c30e7f28d"
integrity sha512-6KH7Tddx5vQQ8j3vhDlveAyDw8VSnLlTpEKaNtQmIyJ+yZ025Faa3m+MKb83jXxDE9hPi3v8QGagEOT5TQjNHg==
dependencies:
just-compare "^1.3.0"
"@abp/utils@^4.0.0-rc.4": "@abp/utils@^4.0.0-rc.4":
version "4.0.0-rc.4" version "4.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.4.tgz#99573069c7dac8751e3124e60511a11a169df565" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.4.tgz#99573069c7dac8751e3124e60511a11a169df565"
@ -107,6 +100,13 @@
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"
"@abp/utils@^4.0.0-rc.5":
version "4.0.0-rc.5"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.5.tgz#45b55d6bbf69ad2a052bc2635c039d2cc4aac401"
integrity sha512-pRYUSh30VT4702lfnQCswIwLVqNC6ZFsmydXngwZASJEJVKj30XitSlixnKhocvozG/87H0sYVzvwmUyJiHHQw==
dependencies:
just-compare "^1.3.0"
"@angular-builders/jest@^10.0.0": "@angular-builders/jest@^10.0.0":
version "10.0.1" version "10.0.1"
resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.1.tgz#a1a6fb5d11b5d54c051bdaa2012b5f046371560c" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.1.tgz#a1a6fb5d11b5d54c051bdaa2012b5f046371560c"
@ -2484,13 +2484,6 @@
enhanced-resolve "5.3.1" enhanced-resolve "5.3.1"
webpack-sources "2.0.1" webpack-sources "2.0.1"
"@ngx-validate/core@^0.0.12":
version "0.0.12"
resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.12.tgz#4924247c363e0e876e6d63794215914ac9232e8d"
integrity sha512-AhHfb44M2E2Wc37IX9DxAWjgSIZMNrzzpjnPL+VXMNJQj9GqynBjqw0zQtrGYANsAYeFPFhn7UuX6uqrkRvHtQ==
dependencies:
tslib "^1.9.0"
"@ngx-validate/core@^0.0.13": "@ngx-validate/core@^0.0.13":
version "0.0.13" version "0.0.13"
resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.13.tgz#954c6d247df8107668f23a39db24ca45c274f3d9" resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.13.tgz#954c6d247df8107668f23a39db24ca45c274f3d9"

Loading…
Cancel
Save