mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-04-23 22:30:37 +00:00
[ACS-11213] Reverted ngx translate upgrade (#11702)
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
"@angular/platform-browser-dynamic": ">=14.1.3",
|
"@angular/platform-browser-dynamic": ">=14.1.3",
|
||||||
"@angular/router": ">=14.1.3",
|
"@angular/router": ">=14.1.3",
|
||||||
"@alfresco/js-api": ">=9.2.1",
|
"@alfresco/js-api": ">=9.2.1",
|
||||||
"@ngx-translate/core": ">=17.0.0",
|
"@ngx-translate/core": ">=16.0.0",
|
||||||
"@alfresco/adf-core": ">=8.2.1"
|
"@alfresco/adf-core": ">=8.2.1"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
"@angular/platform-browser": ">=16.0.0",
|
"@angular/platform-browser": ">=16.0.0",
|
||||||
"@angular/router": ">=16.0.0",
|
"@angular/router": ">=16.0.0",
|
||||||
"@mat-datetimepicker/core": ">=12.0.1",
|
"@mat-datetimepicker/core": ">=12.0.1",
|
||||||
"@ngx-translate/core": ">=17.0.0",
|
"@ngx-translate/core": ">=16.0.0",
|
||||||
"@alfresco/js-api": ">=9.2.1",
|
"@alfresco/js-api": ">=9.2.1",
|
||||||
"@alfresco/adf-extensions": ">=8.2.1",
|
"@alfresco/adf-extensions": ">=8.2.1",
|
||||||
"minimatch": ">=10.0.0",
|
"minimatch": ">=10.0.0",
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { NgModule, ModuleWithProviders } from '@angular/core';
|
import { NgModule, ModuleWithProviders } from '@angular/core';
|
||||||
import { provideTranslateService, provideTranslateLoader } from '@ngx-translate/core';
|
import { TranslateLoader, provideTranslateService } from '@ngx-translate/core';
|
||||||
import { ABOUT_DIRECTIVES } from './about/about.module';
|
import { ABOUT_DIRECTIVES } from './about/about.module';
|
||||||
import { CARD_VIEW_DIRECTIVES } from './card-view/card-view.module';
|
import { CARD_VIEW_DIRECTIVES } from './card-view/card-view.module';
|
||||||
import { CONTEXT_MENU_DIRECTIVES } from './context-menu/context-menu.module';
|
import { CONTEXT_MENU_DIRECTIVES } from './context-menu/context-menu.module';
|
||||||
@@ -38,6 +38,7 @@ import { CORE_DIRECTIVES } from './directives/directive.module';
|
|||||||
import { CORE_PIPES } from './pipes/pipe.module';
|
import { CORE_PIPES } from './pipes/pipe.module';
|
||||||
import { TranslateLoaderService } from './translation/translate-loader.service';
|
import { TranslateLoaderService } from './translation/translate-loader.service';
|
||||||
import { SEARCH_TEXT_INPUT_DIRECTIVES } from './search-text/search-text-input.module';
|
import { SEARCH_TEXT_INPUT_DIRECTIVES } from './search-text/search-text-input.module';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { AppConfigPipe } from './app-config';
|
import { AppConfigPipe } from './app-config';
|
||||||
import { IconComponent } from './icon';
|
import { IconComponent } from './icon';
|
||||||
import { DynamicChipListComponent } from './dynamic-chip-list';
|
import { DynamicChipListComponent } from './dynamic-chip-list';
|
||||||
@@ -122,8 +123,12 @@ export class CoreModule {
|
|||||||
ngModule: CoreModule,
|
ngModule: CoreModule,
|
||||||
providers: [
|
providers: [
|
||||||
provideTranslateService({
|
provideTranslateService({
|
||||||
loader: provideTranslateLoader(TranslateLoaderService),
|
loader: {
|
||||||
fallbackLang: 'en'
|
provide: TranslateLoader,
|
||||||
|
useClass: TranslateLoaderService,
|
||||||
|
deps: [HttpClient]
|
||||||
|
},
|
||||||
|
defaultLanguage: 'en'
|
||||||
}),
|
}),
|
||||||
provideAppConfig()
|
provideAppConfig()
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -18,13 +18,13 @@
|
|||||||
import { EventEmitter, Injectable, NgModule } from '@angular/core';
|
import { EventEmitter, Injectable, NgModule } from '@angular/core';
|
||||||
import { provideHttpClient } from '@angular/common/http';
|
import { provideHttpClient } from '@angular/common/http';
|
||||||
import { provideHttpClientTesting } from '@angular/common/http/testing';
|
import { provideHttpClientTesting } from '@angular/common/http/testing';
|
||||||
import { provideTranslateLoader, provideTranslateService, TranslateLoader, TranslationObject } from '@ngx-translate/core';
|
import { provideTranslateService, TranslateLoader } from '@ngx-translate/core';
|
||||||
import { TranslationService } from '../translation/translation.service';
|
import { TranslationService } from '../translation/translation.service';
|
||||||
import { LangChangeEvent } from '../mock';
|
import { LangChangeEvent } from '../mock';
|
||||||
import { Observable, of } from 'rxjs';
|
import { Observable, of } from 'rxjs';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class NoopTranslationService implements TranslateLoader {
|
export class NoopTranslationService {
|
||||||
defaultLang: string = 'en';
|
defaultLang: string = 'en';
|
||||||
userLang: string;
|
userLang: string;
|
||||||
customLoader: any;
|
customLoader: any;
|
||||||
@@ -47,10 +47,6 @@ export class NoopTranslationService implements TranslateLoader {
|
|||||||
instant(key: string | Array<string>): string | any {
|
instant(key: string | Array<string>): string | any {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
getTranslation(): Observable<TranslationObject> {
|
|
||||||
return of({});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@@ -59,7 +55,10 @@ export class NoopTranslationService implements TranslateLoader {
|
|||||||
provideHttpClientTesting(),
|
provideHttpClientTesting(),
|
||||||
{ provide: TranslationService, useClass: NoopTranslationService },
|
{ provide: TranslationService, useClass: NoopTranslationService },
|
||||||
provideTranslateService({
|
provideTranslateService({
|
||||||
loader: provideTranslateLoader(NoopTranslationService)
|
loader: {
|
||||||
|
provide: TranslateLoader,
|
||||||
|
useClass: NoopTranslationService
|
||||||
|
}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ describe('provideI18N', () => {
|
|||||||
|
|
||||||
it('should set default language to "en" when not specified', () => {
|
it('should set default language to "en" when not specified', () => {
|
||||||
const translateService = TestBed.inject(TranslateService);
|
const translateService = TestBed.inject(TranslateService);
|
||||||
expect(translateService.getFallbackLang()).toBe('en');
|
expect(translateService.defaultLang).toBe('en');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ describe('provideI18N', () => {
|
|||||||
|
|
||||||
it('should set custom default language', () => {
|
it('should set custom default language', () => {
|
||||||
const translateService = TestBed.inject(TranslateService);
|
const translateService = TestBed.inject(TranslateService);
|
||||||
expect(translateService.getFallbackLang()).toBe('fr');
|
expect(translateService.defaultLang).toBe('fr');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ describe('provideI18N', () => {
|
|||||||
// Services should be properly configured
|
// Services should be properly configured
|
||||||
expect(translateService).toBeDefined();
|
expect(translateService).toBeDefined();
|
||||||
expect(translationService).toBeDefined();
|
expect(translationService).toBeDefined();
|
||||||
expect(translateService.getFallbackLang()).toBe('en');
|
expect(translateService.defaultLang).toBe('en');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ describe('provideI18N', () => {
|
|||||||
|
|
||||||
it('should set translations for custom default language', () => {
|
it('should set translations for custom default language', () => {
|
||||||
const translateService = TestBed.inject(TranslateService);
|
const translateService = TestBed.inject(TranslateService);
|
||||||
expect(translateService.getFallbackLang()).toBe('fr');
|
expect(translateService.defaultLang).toBe('fr');
|
||||||
expect(translateService.instant('HELLO')).toBe('Bonjour!');
|
expect(translateService.instant('HELLO')).toBe('Bonjour!');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -184,7 +184,7 @@ describe('provideI18N', () => {
|
|||||||
const translateService = TestBed.inject(TranslateService);
|
const translateService = TestBed.inject(TranslateService);
|
||||||
const loader = translateService.currentLoader as TranslateLoaderService;
|
const loader = translateService.currentLoader as TranslateLoaderService;
|
||||||
|
|
||||||
expect(translateService.getFallbackLang()).toBe('en');
|
expect(translateService.defaultLang).toBe('en');
|
||||||
expect(loader).toBeDefined();
|
expect(loader).toBeDefined();
|
||||||
expect(loader.providerRegistered).toBeDefined();
|
expect(loader.providerRegistered).toBeDefined();
|
||||||
expect(loader.providerRegistered('adf-core')).toBeTruthy();
|
expect(loader.providerRegistered('adf-core')).toBeTruthy();
|
||||||
@@ -211,7 +211,7 @@ describe('provideI18N', () => {
|
|||||||
it('should handle empty translations object', () => {
|
it('should handle empty translations object', () => {
|
||||||
const translateService = TestBed.inject(TranslateService);
|
const translateService = TestBed.inject(TranslateService);
|
||||||
expect(translateService).toBeDefined();
|
expect(translateService).toBeDefined();
|
||||||
expect(translateService.getFallbackLang()).toBe('en');
|
expect(translateService.defaultLang).toBe('en');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -16,8 +16,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { EnvironmentProviders, inject, provideAppInitializer, Provider } from '@angular/core';
|
import { EnvironmentProviders, inject, provideAppInitializer, Provider } from '@angular/core';
|
||||||
import { provideTranslateLoader, provideTranslateService, TranslateService } from '@ngx-translate/core';
|
import { provideTranslateService, TranslateLoader, TranslateService } from '@ngx-translate/core';
|
||||||
import { TranslateLoaderService } from './translate-loader.service';
|
import { TranslateLoaderService } from './translate-loader.service';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { provideTranslations } from './translation.service';
|
import { provideTranslations } from './translation.service';
|
||||||
|
|
||||||
export interface ProvideI18NConfig {
|
export interface ProvideI18NConfig {
|
||||||
@@ -53,8 +54,12 @@ export function provideI18N(config?: ProvideI18NConfig): (Provider | Environment
|
|||||||
|
|
||||||
const result: (Provider | EnvironmentProviders)[] = [
|
const result: (Provider | EnvironmentProviders)[] = [
|
||||||
provideTranslateService({
|
provideTranslateService({
|
||||||
loader: provideTranslateLoader(TranslateLoaderService),
|
loader: {
|
||||||
fallbackLang: defaultLanguage
|
provide: TranslateLoader,
|
||||||
|
useExisting: TranslateLoaderService,
|
||||||
|
deps: [HttpClient]
|
||||||
|
},
|
||||||
|
defaultLanguage
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,8 @@
|
|||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { TranslateLoaderService } from './translate-loader.service';
|
import { TranslateLoaderService } from './translate-loader.service';
|
||||||
import { TranslationService } from './translation.service';
|
import { TranslationService } from './translation.service';
|
||||||
import { provideTranslateLoader, provideTranslateService } from '@ngx-translate/core';
|
import { provideTranslateService, TranslateLoader } from '@ngx-translate/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
|
||||||
describe('TranslateLoader', () => {
|
describe('TranslateLoader', () => {
|
||||||
let translationService: TranslationService;
|
let translationService: TranslationService;
|
||||||
@@ -28,8 +29,12 @@ describe('TranslateLoader', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
providers: [
|
providers: [
|
||||||
provideTranslateService({
|
provideTranslateService({
|
||||||
loader: provideTranslateLoader(TranslateLoaderService),
|
loader: {
|
||||||
fallbackLang: 'en'
|
provide: TranslateLoader,
|
||||||
|
useClass: TranslateLoaderService,
|
||||||
|
deps: [HttpClient]
|
||||||
|
},
|
||||||
|
defaultLanguage: 'en'
|
||||||
}),
|
}),
|
||||||
TranslationService
|
TranslationService
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { provideTranslateLoader, provideTranslateService, TranslateLoader } from '@ngx-translate/core';
|
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||||
import { TranslationService } from './translation.service';
|
import { TranslationService } from './translation.service';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { provideAppConfigTesting } from '../testing';
|
import { provideAppConfigTesting } from '../testing';
|
||||||
@@ -51,13 +51,15 @@ describe('TranslationService', () => {
|
|||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
providers: [
|
imports: [
|
||||||
TranslationService,
|
TranslateModule.forRoot({
|
||||||
provideAppConfigTesting(),
|
loader: {
|
||||||
provideTranslateService({
|
provide: TranslateLoader,
|
||||||
loader: provideTranslateLoader(FakeLoader)
|
useClass: FakeLoader
|
||||||
|
}
|
||||||
})
|
})
|
||||||
]
|
],
|
||||||
|
providers: [TranslationService, provideAppConfigTesting()]
|
||||||
});
|
});
|
||||||
|
|
||||||
translationService = TestBed.inject(TranslationService);
|
translationService = TestBed.inject(TranslationService);
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export class TranslationService {
|
|||||||
this.customLoader = this.translate.currentLoader as TranslateLoaderService;
|
this.customLoader = this.translate.currentLoader as TranslateLoaderService;
|
||||||
|
|
||||||
this.defaultLang = 'en';
|
this.defaultLang = 'en';
|
||||||
this.translate.setFallbackLang(this.defaultLang);
|
this.translate.setDefaultLang(this.defaultLang);
|
||||||
this.customLoader.setDefaultLang(this.defaultLang);
|
this.customLoader.setDefaultLang(this.defaultLang);
|
||||||
|
|
||||||
if (this.providers && this.providers.length > 0) {
|
if (this.providers && this.providers.length > 0) {
|
||||||
@@ -115,7 +115,7 @@ export class TranslationService {
|
|||||||
* @param fallback Language code to fall back to if the first one was unavailable
|
* @param fallback Language code to fall back to if the first one was unavailable
|
||||||
*/
|
*/
|
||||||
loadTranslation(lang: string, fallback?: string) {
|
loadTranslation(lang: string, fallback?: string) {
|
||||||
this.translate.currentLoader.getTranslation(lang).subscribe(
|
this.translate.getTranslation(lang).subscribe(
|
||||||
() => {
|
() => {
|
||||||
this.translate.use(lang);
|
this.translate.use(lang);
|
||||||
this.onTranslationChanged(lang);
|
this.onTranslationChanged(lang);
|
||||||
@@ -134,8 +134,10 @@ export class TranslationService {
|
|||||||
* @param lang The new language code
|
* @param lang The new language code
|
||||||
*/
|
*/
|
||||||
onTranslationChanged(lang: string): void {
|
onTranslationChanged(lang: string): void {
|
||||||
const translations = this.customLoader.getFullTranslationJSON?.(lang) ?? {};
|
this.translate.onTranslationChange.next({
|
||||||
this.translate.setTranslation(lang, translations, true);
|
lang,
|
||||||
|
translations: this.customLoader.getFullTranslationJSON?.(lang) ?? {}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alfresco/adf-core": ">=8.2.1",
|
"@alfresco/adf-core": ">=8.2.1",
|
||||||
"@alfresco/adf-content-services": ">=8.2.1",
|
"@alfresco/adf-content-services": ">=8.2.1",
|
||||||
"@ngx-translate/core": ">=17.0.0",
|
"@ngx-translate/core": ">=14.0.0",
|
||||||
"chart.js": "^4.3.0",
|
"chart.js": "^4.3.0",
|
||||||
"ng2-charts": "^4.1.1",
|
"ng2-charts": "^4.1.1",
|
||||||
"raphael": ">=2.3.0"
|
"raphael": ">=2.3.0"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
"@alfresco/adf-core": ">=8.2.1",
|
"@alfresco/adf-core": ">=8.2.1",
|
||||||
"@alfresco/adf-content-services": ">=8.2.1",
|
"@alfresco/adf-content-services": ">=8.2.1",
|
||||||
"@apollo/client": ">=3.7.2",
|
"@apollo/client": ">=3.7.2",
|
||||||
"@ngx-translate/core": ">=17.0.0",
|
"@ngx-translate/core": ">=14.0.0",
|
||||||
"apollo-angular": ">=4.0.1",
|
"apollo-angular": ">=4.0.1",
|
||||||
"editorjs-html": "^4.0.5"
|
"editorjs-html": "^4.0.5"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { MatDialogHarness } from '@angular/material/dialog/testing';
|
import { MatDialogHarness } from '@angular/material/dialog/testing';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { TranslateLoader, TranslateService, provideTranslateService, provideTranslateLoader } from '@ngx-translate/core';
|
import { TranslateLoader, TranslateService, provideTranslateService } from '@ngx-translate/core';
|
||||||
import { firstValueFrom, Observable, of, throwError } from 'rxjs';
|
import { firstValueFrom, Observable, of, throwError } from 'rxjs';
|
||||||
import {
|
import {
|
||||||
cloudFormMock,
|
cloudFormMock,
|
||||||
@@ -1746,7 +1746,10 @@ describe('Multilingual Form', () => {
|
|||||||
imports: [NoopAuthModule],
|
imports: [NoopAuthModule],
|
||||||
providers: [
|
providers: [
|
||||||
provideTranslateService({
|
provideTranslateService({
|
||||||
loader: provideTranslateLoader(FakeLoader)
|
loader: {
|
||||||
|
provide: TranslateLoader,
|
||||||
|
useClass: FakeLoader
|
||||||
|
}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
"@alfresco/js-api": ">=9.2.1",
|
"@alfresco/js-api": ">=9.2.1",
|
||||||
"@alfresco/adf-core": ">=8.2.1",
|
"@alfresco/adf-core": ">=8.2.1",
|
||||||
"@alfresco/adf-content-services": ">=8.2.1",
|
"@alfresco/adf-content-services": ">=8.2.1",
|
||||||
"@ngx-translate/core": ">=17.0.0"
|
"@ngx-translate/core": ">=14.0.0"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"process-services",
|
"process-services",
|
||||||
|
|||||||
8
package-lock.json
generated
8
package-lock.json
generated
@@ -23,7 +23,7 @@
|
|||||||
"@apollo/client": "3.13.1",
|
"@apollo/client": "3.13.1",
|
||||||
"@cspell/eslint-plugin": "9.4.0",
|
"@cspell/eslint-plugin": "9.4.0",
|
||||||
"@mat-datetimepicker/core": "15.0.2",
|
"@mat-datetimepicker/core": "15.0.2",
|
||||||
"@ngx-translate/core": "^17.0.0",
|
"@ngx-translate/core": "^16.0.4",
|
||||||
"angular-oauth2-oidc": "17.0.2",
|
"angular-oauth2-oidc": "17.0.2",
|
||||||
"angular-oauth2-oidc-jwks": "^17.0.2",
|
"angular-oauth2-oidc-jwks": "^17.0.2",
|
||||||
"apollo-angular": "10.0.3",
|
"apollo-angular": "10.0.3",
|
||||||
@@ -8953,9 +8953,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@ngx-translate/core": {
|
"node_modules/@ngx-translate/core": {
|
||||||
"version": "17.0.0",
|
"version": "16.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-17.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-16.0.4.tgz",
|
||||||
"integrity": "sha512-Rft2D5ns2pq4orLZjEtx1uhNuEBerUdpFUG1IcqtGuipj6SavgB8SkxtNQALNDA+EVlvsNCCjC2ewZVtUeN6rg==",
|
"integrity": "sha512-s8llTL2SJvROhqttxvEs7Cg+6qSf4kvZPFYO+cTOY1d8DWTjlutRkWAleZcPPoeX927Dm7ALfL07G7oYDJ7z6w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.3.0"
|
"tslib": "^2.3.0"
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
"@apollo/client": "3.13.1",
|
"@apollo/client": "3.13.1",
|
||||||
"@cspell/eslint-plugin": "9.4.0",
|
"@cspell/eslint-plugin": "9.4.0",
|
||||||
"@mat-datetimepicker/core": "15.0.2",
|
"@mat-datetimepicker/core": "15.0.2",
|
||||||
"@ngx-translate/core": "^17.0.0",
|
"@ngx-translate/core": "^16.0.4",
|
||||||
"angular-oauth2-oidc": "17.0.2",
|
"angular-oauth2-oidc": "17.0.2",
|
||||||
"angular-oauth2-oidc-jwks": "^17.0.2",
|
"angular-oauth2-oidc-jwks": "^17.0.2",
|
||||||
"apollo-angular": "10.0.3",
|
"apollo-angular": "10.0.3",
|
||||||
|
|||||||
Reference in New Issue
Block a user