Merge pull request #2910 from crazyserver/MOBILE-3792-2

Mobile 3792 2
main
Dani Palou 2021-08-06 09:44:01 +02:00 committed by GitHub
commit 95394de364
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 39996 additions and 8782 deletions

View File

@ -12,9 +12,11 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
node-version: '12'
- name: Install npm packages
run: npm ci
run: |
npm install -g npm@7
npm ci --no-audit
- name: Check langindex
run: |
result=$(cat scripts/langindex.json | grep \"TBD\" | wc -l); test $result -eq 0
@ -56,4 +58,4 @@ jobs:
- name: Production builds
run: npm run build:prod
- name: JavaScript code compatibility
run: result=$(npx check-es-compat www/*.js 2> /dev/null | grep -v -E "Array\.prototype\.includes|Promise\.prototype\.finally|String\.prototype\.(matchAll|trimRight)|globalThis" | grep -Po "(?<=error).*?(?=\s+ecmascript)" | wc -l); test $result -eq 0
run: result=$(npx check-es-compat www/*.js 2> /dev/null | grep -v -E "Array\.prototype\.includes|Promise\.prototype\.finally|String\.prototype\.(matchAll|trimRight)|globalThis" | grep -Po "(?<=error).*?(?=\s+ecmascript)" | wc -l); test $result -eq 1

1
.gitignore vendored
View File

@ -22,6 +22,7 @@ npm-debug.log*
/.sass-cache
/.sourcemaps
/.versions
/.vscode
/coverage
/dist
/node_modules

View File

@ -13,10 +13,3 @@ License
-------
[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
Big Thanks
-----------
Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs](https://saucelabs.com)
![Sauce Labs Logo](https://user-images.githubusercontent.com/557037/43443976-d88d5a78-94a2-11e8-8915-9f06521423dd.png)

View File

@ -14,6 +14,9 @@
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"allowedCommonJsDependencies":[
"chart.js"
],
"outputPath": "www",
"index": "src/index.html",
"main": "src/main.ts",
@ -46,7 +49,6 @@
},
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="39501" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.5.1" version="3.9.5" versionCode="39501" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget android-versionCode="39600" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.6.0" version="3.9.6-dev" versionCode="39600" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Moodle</name>
<description>Moodle official app</description>
<author email="mobile@moodle.com" href="http://moodle.com">Moodle Mobile team</author>

View File

@ -16,7 +16,7 @@ module.exports = {
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/src/' }),
globals: {
'ts-jest': {
tsConfig: './tsconfig.test.json',
tsconfig: './tsconfig.test.json',
},
},
};

View File

@ -1,8 +1,8 @@
{
"app_id": "com.moodle.moodlemobile",
"appname": "Moodle Mobile",
"versioncode": 3950,
"versionname": "3.9.5",
"versioncode": 3960,
"versionname": "3.9.6-dev",
"cache_update_frequency_usually": 420000,
"cache_update_frequency_often": 1200000,
"cache_update_frequency_sometimes": 3600000,

48428
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "moodlemobile",
"version": "3.9.5",
"version": "3.9.6-dev",
"description": "The official app for Moodle.",
"author": {
"name": "Moodle Pty Ltd.",
@ -37,141 +37,141 @@
"ionic:build:before": "gulp"
},
"dependencies": {
"@angular/animations": "10.0.14",
"@angular/common": "10.0.14",
"@angular/core": "10.0.14",
"@angular/forms": "10.0.14",
"@angular/platform-browser": "10.0.14",
"@angular/platform-browser-dynamic": "10.0.14",
"@angular/router": "10.0.14",
"@ionic-native/badge": "5.33.0",
"@ionic-native/camera": "5.33.0",
"@ionic-native/chooser": "5.33.0",
"@ionic-native/clipboard": "5.33.0",
"@ionic-native/core": "5.33.0",
"@ionic-native/device": "5.33.0",
"@ionic-native/diagnostic": "5.33.0",
"@ionic-native/file": "5.33.0",
"@ionic-native/file-opener": "5.33.0",
"@ionic-native/file-transfer": "5.33.0",
"@ionic-native/geolocation": "5.33.0",
"@ionic-native/http": "5.33.0",
"@ionic-native/in-app-browser": "5.33.0",
"@ionic-native/ionic-webview": "5.33.0",
"@ionic-native/keyboard": "5.33.0",
"@ionic-native/local-notifications": "5.33.0",
"@ionic-native/media": "5.33.0",
"@ionic-native/media-capture": "5.33.0",
"@ionic-native/network": "5.33.0",
"@ionic-native/push": "5.33.0",
"@ionic-native/qr-scanner": "5.33.0",
"@ionic-native/splash-screen": "5.33.0",
"@ionic-native/sqlite": "5.33.0",
"@ionic-native/status-bar": "5.33.0",
"@ionic-native/web-intent": "5.33.0",
"@ionic-native/zip": "5.33.0",
"@ionic/angular": "5.6.6",
"@angular/animations": "~11.2.14",
"@angular/common": "~11.2.14",
"@angular/core": "~11.2.14",
"@angular/forms": "~11.2.14",
"@angular/platform-browser": "~11.2.14",
"@angular/platform-browser-dynamic": "~11.2.14",
"@angular/router": "~11.2.14",
"@ionic-native/badge": "^5.34.0",
"@ionic-native/camera": "^5.34.0",
"@ionic-native/chooser": "^5.34.0",
"@ionic-native/clipboard": "^5.34.0",
"@ionic-native/core": "^5.34.0",
"@ionic-native/device": "^5.34.0",
"@ionic-native/diagnostic": "^5.34.0",
"@ionic-native/file": "^5.34.0",
"@ionic-native/file-opener": "^5.34.0",
"@ionic-native/file-transfer": "^5.34.0",
"@ionic-native/geolocation": "^5.34.0",
"@ionic-native/http": "^5.34.0",
"@ionic-native/in-app-browser": "^5.34.0",
"@ionic-native/ionic-webview": "^5.34.0",
"@ionic-native/keyboard": "^5.34.0",
"@ionic-native/local-notifications": "^5.34.0",
"@ionic-native/media": "^5.34.0",
"@ionic-native/media-capture": "^5.34.0",
"@ionic-native/network": "^5.34.0",
"@ionic-native/push": "^5.34.0",
"@ionic-native/qr-scanner": "^5.34.0",
"@ionic-native/splash-screen": "^5.34.0",
"@ionic-native/sqlite": "^5.34.0",
"@ionic-native/status-bar": "^5.34.0",
"@ionic-native/web-intent": "^5.34.0",
"@ionic-native/zip": "^5.34.0",
"@ionic/angular": "^5.6.13",
"@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.2",
"@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.2",
"@moodlehq/cordova-plugin-local-notification": "0.9.0-moodle.2",
"@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2",
"@moodlehq/phonegap-plugin-push": "2.2.3-moodle.1",
"@ngx-translate/core": "13.0.0",
"@ngx-translate/http-loader": "6.0.0",
"@types/chart.js": "2.9.31",
"@ngx-translate/core": "^13.0.0",
"@ngx-translate/http-loader": "^6.0.0",
"@types/chart.js": "^2.9.31",
"@types/cordova": "0.0.34",
"@types/dom-mediacapture-record": "1.0.7",
"chart.js": "2.9.4",
"com-darryncampbell-cordova-plugin-intent": "1.3.0",
"cordova": "10.0.0",
"cordova-android": "9.1.0",
"cordova-android-support-gradle-release": "3.0.1",
"cordova-clipboard": "1.3.0",
"cordova-ios": "6.2.0",
"cordova-plugin-add-swift-support": "2.0.2",
"cordova-plugin-advanced-http": "3.1.0",
"cordova-plugin-badge": "0.8.8",
"cordova-plugin-camera": "5.0.1",
"cordova-plugin-chooser": "1.3.2",
"cordova-plugin-customurlscheme": "5.0.2",
"cordova-plugin-device": "2.0.3",
"cordova-plugin-file": "6.0.2",
"cordova-plugin-file-opener2": "3.0.5",
"cordova-plugin-geolocation": "4.1.0",
"cordova-plugin-globalization": "1.11.0",
"cordova-plugin-ionic-keyboard": "2.2.0",
"cordova-plugin-ionic-webview": "5.0.0",
"cordova-plugin-media": "5.0.3",
"cordova-plugin-media-capture": "3.0.3",
"cordova-plugin-network-information": "2.0.2",
"cordova-plugin-prevent-override": "1.0.0",
"cordova-plugin-screen-orientation": "3.0.2",
"cordova-plugin-splashscreen": "6.0.0",
"cordova-plugin-statusbar": "2.4.3",
"cordova-plugin-whitelist": "1.3.4",
"cordova-plugin-wkuserscript": "1.0.0",
"cordova-plugin-wkwebview-cookies": "1.0.0",
"cordova-plugin-zip": "3.1.0",
"cordova-sqlite-storage": "6.0.0",
"cordova-support-google-services": "1.2.1",
"cordova.plugins.diagnostic": "5.0.2",
"core-js": "3.9.1",
"es6-promise-plugin": "4.2.2",
"jszip": "3.5.0",
"@types/dom-mediacapture-record": "^1.0.10",
"chart.js": "^2.9.4",
"com-darryncampbell-cordova-plugin-intent": "^1.3.0",
"cordova": "^10.0.0",
"cordova-android": "^10.0.1",
"cordova-android-support-gradle-release": "^3.0.1",
"cordova-clipboard": "^1.3.0",
"cordova-ios": "^6.2.0",
"cordova-plugin-add-swift-support": "^2.0.2",
"cordova-plugin-advanced-http": "^3.1.0",
"cordova-plugin-badge": "^0.8.8",
"cordova-plugin-camera": "^5.0.1",
"cordova-plugin-chooser": "^1.3.2",
"cordova-plugin-customurlscheme": "^5.0.2",
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-file-opener2": "^3.0.5",
"cordova-plugin-geolocation": "^4.1.0",
"cordova-plugin-globalization": "^1.11.0",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^5.0.0",
"cordova-plugin-media": "^5.0.3",
"cordova-plugin-media-capture": "^3.0.3",
"cordova-plugin-network-information": "^2.0.2",
"cordova-plugin-prevent-override": "^1.0.0",
"cordova-plugin-screen-orientation": "^3.0.2",
"cordova-plugin-splashscreen": "^6.0.0",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4",
"cordova-plugin-wkuserscript": "^1.0.0",
"cordova-plugin-wkwebview-cookies": "^1.0.0",
"cordova-plugin-zip": "^3.1.0",
"cordova-sqlite-storage": "^6.0.0",
"cordova-support-google-services": "^1.2.1",
"cordova.plugins.diagnostic": "^5.0.2",
"core-js": "^3.9.1",
"es6-promise-plugin": "^4.2.2",
"jszip": "^3.5.0",
"mathjax": "2.7.7",
"moment": "2.29.0",
"nl.kingsquare.cordova.background-audio": "1.0.1",
"phonegap-plugin-multidex": "1.0.0",
"rxjs": "6.5.5",
"ts-md5": "1.2.7",
"tslib": "2.0.1",
"zone.js": "0.10.3"
"moment": "^2.29.0",
"nl.kingsquare.cordova.background-audio": "^1.0.1",
"phonegap-plugin-multidex": "^1.0.0",
"rxjs": "~6.5.5",
"ts-md5": "^1.2.7",
"tslib": "^2.0.1",
"zone.js": "~0.10.3"
},
"devDependencies": {
"@angular-devkit/architect": "0.1101.2",
"@angular-devkit/build-angular": "0.1000.8",
"@angular-eslint/builder": "4.2.0",
"@angular-eslint/eslint-plugin": "4.2.0",
"@angular-eslint/eslint-plugin-template": "4.2.0",
"@angular-eslint/schematics": "4.2.0",
"@angular-eslint/template-parser": "4.2.0",
"@angular/cli": "10.0.8",
"@angular/compiler": "10.0.14",
"@angular/compiler-cli": "10.0.14",
"@angular/language-service": "10.0.14",
"@ionic/angular-toolkit": "2.3.3",
"@ionic/cli": "6.14.1",
"@types/faker": "5.1.3",
"@types/node": "12.12.64",
"@types/resize-observer-browser": "0.1.5",
"@types/webpack-env": "1.16.0",
"@typescript-eslint/eslint-plugin": "4.22.0",
"@typescript-eslint/parser": "4.22.0",
"check-es-compat": "1.1.1",
"eslint": "7.25.0",
"eslint-config-prettier": "8.3.0",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jest": "24.3.6",
"eslint-plugin-jsdoc": "32.3.3",
"eslint-plugin-prefer-arrow": "1.2.3",
"eslint-plugin-promise": "5.1.0",
"faker": "5.1.0",
"fs-extra": "9.1.0",
"@angular-devkit/build-angular": "~0.1102.14",
"@angular-eslint/builder": "^4.2.0",
"@angular-eslint/eslint-plugin": "^4.2.0",
"@angular-eslint/eslint-plugin-template": "^4.2.0",
"@angular-eslint/schematics": "^4.2.0",
"@angular-eslint/template-parser": "^4.2.0",
"@angular/cli": "~11.2.14",
"@angular/compiler": "~11.2.14",
"@angular/compiler-cli": "~11.2.14",
"@angular/language-service": "~11.2.14",
"@ionic/angular-toolkit": "^4.0.0",
"@ionic/cli": "^6.14.1",
"@types/faker": "^5.1.3",
"@types/jest": "^26.0.24",
"@types/node": "^12.12.64",
"@types/resize-observer-browser": "^0.1.5",
"@types/webpack-env": "^1.16.0",
"@typescript-eslint/eslint-plugin": "^4.22.0",
"@typescript-eslint/parser": "^4.22.0",
"check-es-compat": "^1.1.1",
"eslint": "^7.31.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-header": "^3.1.1",
"eslint-plugin-import": "^2.23.4",
"eslint-plugin-jest": "^24.4.0",
"eslint-plugin-jsdoc": "^36.0.3",
"eslint-plugin-prefer-arrow": "^1.2.3",
"eslint-plugin-promise": "^5.1.0",
"faker": "^5.1.0",
"fs-extra": "^9.1.0",
"gulp": "4.0.2",
"gulp-clip-empty-files": "0.1.2",
"gulp-concat": "2.6.1",
"gulp-flatten": "0.4.0",
"gulp-htmlmin": "5.0.1",
"gulp-rename": "2.0.0",
"gulp-slash": "1.1.3",
"jest": "26.5.2",
"jest-preset-angular": "8.3.1",
"jsonc-parser": "2.3.1",
"gulp-clip-empty-files": "^0.1.2",
"gulp-concat": "^2.6.1",
"gulp-flatten": "^0.4.0",
"gulp-htmlmin": "^5.0.1",
"gulp-rename": "^2.0.0",
"gulp-slash": "^1.1.3",
"jest": "^26.5.2",
"jest-preset-angular": "^8.3.1",
"jsonc-parser": "^2.3.1",
"native-run": "^1.4.0",
"ts-jest": "26.4.1",
"ts-node": "8.3.0",
"typescript": "3.9.9"
"ts-jest": "^26.4.1",
"ts-node": "~8.3.0",
"typescript": "^4.1.6"
},
"engines": {
"node": ">=12.x"
@ -240,6 +240,6 @@
}
},
"optionalDependencies": {
"keytar": "7.2.0"
"keytar": "^7.2.0"
}
}

View File

@ -34,7 +34,7 @@ export class AddonModBookTocComponent implements OnInit {
addPadding = true;
showBullets = false;
@Input() protected book?: AddonModBookBookWSData;
@Input() book?: AddonModBookBookWSData;
/**
* Component loaded.

View File

@ -40,8 +40,8 @@ export class AddonModWorkshopAssessmentComponent implements OnInit {
@Input() courseId!: number;
@Input() workshop!: AddonModWorkshopData;
@Input() access!: AddonModWorkshopGetWorkshopAccessInformationWSResponse;
@Input() protected submission!: AddonModWorkshopSubmissionDataWithOfflineData;
@Input() protected module!: CoreCourseModule;
@Input() submission!: AddonModWorkshopSubmissionDataWithOfflineData;
@Input() module!: CoreCourseModule;
canViewAssessment = false;
canSelfAssess = false;

View File

@ -28,7 +28,7 @@ export class AddonModWorkshopPhaseInfoComponent implements OnInit {
@Input() phases!: AddonModWorkshopPhaseDataWithSwitch[];
@Input() workshopPhase!: AddonModWorkshopPhase;
@Input() showSubmit = false;
@Input() protected externalUrl!: string;
@Input() externalUrl!: string;
ngOnInit(): void {

View File

@ -30,8 +30,8 @@ export class AddonNotesAddComponent {
@ViewChild('itemEdit') formElement?: ElementRef;
@Input() protected courseId!: number;
@Input() protected userId?: number;
@Input() courseId!: number;
@Input() userId?: number;
@Input() type: AddonNotesPublishState = 'personal';
text = '';
processing = false;

View File

@ -46,7 +46,7 @@ export class CoreTabsBaseComponent<T extends CoreTabBase> implements OnInit, Aft
// Max height that allows tab hiding.
protected static readonly MAX_HEIGHT_TO_HIDE_TABS = 768;
@Input() protected selectedIndex = 0; // Index of the tab to select.
@Input() selectedIndex = 0; // Index of the tab to select.
@Input() hideUntil = false; // Determine when should the contents be shown.
@Output() protected ionChange = new EventEmitter<T>(); // Emitted when the tab changes.

View File

@ -51,7 +51,7 @@ export class CoreComboboxComponent {
// Additional options when interface modal is selected.
@Input() icon?: string; // Icon for modal interface.
@Input() protected modalOptions?: ModalOptions; // Will emit an event the value changed.
@Input() modalOptions?: ModalOptions; // Will emit an event the value changed.
@Input() listboxId = '';
expanded = false;

View File

@ -49,7 +49,7 @@ export class CoreLoadingComponent implements OnInit, OnChanges, AfterViewInit {
@Input() hideUntil: unknown; // Determine when should the contents be shown.
@Input() message?: string; // Message to show while loading.
@Input() protected fullscreen = true; // Use the whole screen.
@Input() fullscreen = true; // Use the whole screen.
@ViewChild('content') content?: ElementRef;

View File

@ -38,8 +38,8 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy {
@Input() profileUrl?: string;
@Input() linkProfile = true; // Avoid linking to the profile if wanted.
@Input() fullname?: string;
@Input() protected userId?: number; // If provided or found it will be used to link the image to the profile.
@Input() protected courseId?: number;
@Input() userId?: number; // If provided or found it will be used to link the image to the profile.
@Input() courseId?: number;
@Input() checkOnline = false; // If want to check and show online status.
@Input() extraIcon?: string; // Extra icon to show near the avatar.

View File

@ -1261,7 +1261,7 @@ export class CoreCourseModulePrefetchDelegateService extends CoreDelegate<CoreCo
previousTime?: number,
): CourseUpdates {
// Format the response to index it by module ID.
CoreUtils.arrayToObject(response.instances, 'id', result);
CoreUtils.arrayToObject<false | CheckUpdatesWSInstance>(response.instances, 'id', result);
// Treat warnings, adding the not supported modules.
response.warnings?.forEach((warning) => {

View File

@ -60,7 +60,7 @@ export class SQLiteDBMock extends SQLiteDB {
tx.executeSql(query, args, (tx, result) => {
if (result.rows.length <= 0) {
// No tables to delete, stop.
resolve();
resolve(null);
return;
}

View File

@ -36,15 +36,15 @@ import { CoreEventObserver, CoreEvents } from '@singletons/events';
})
export class CoreRatingRateComponent implements OnChanges, OnDestroy {
@Input() protected ratingInfo!: CoreRatingInfo;
@Input() protected contextLevel!: ContextLevel; // Context level: course, module, user, etc.
@Input() protected instanceId!: number; // Context instance id.
@Input() protected itemId!: number; // Item id. Example: forum post id.
@Input() protected itemSetId!: number; // Item set id. Example: forum discussion id.
@Input() protected courseId!: number;
@Input() protected aggregateMethod!: number;
@Input() protected scaleId!: number;
@Input() protected userId!: number;
@Input() ratingInfo!: CoreRatingInfo;
@Input() contextLevel!: ContextLevel; // Context level: course, module, user, etc.
@Input() instanceId!: number; // Context instance id.
@Input() itemId!: number; // Item id. Example: forum post id.
@Input() itemSetId!: number; // Item set id. Example: forum discussion id.
@Input() courseId!: number;
@Input() aggregateMethod!: number;
@Input() scaleId!: number;
@Input() userId!: number;
@Output() protected onLoading: EventEmitter<boolean>; // Eevent that indicates whether the component is loading data.
@Output() protected onUpdate: EventEmitter<void>; // Event emitted when the rating is updated online.

View File

@ -26,13 +26,13 @@ import { ModalController } from '@singletons';
})
export class CoreRatingRatingsComponent implements OnInit {
@Input() protected contextLevel!: ContextLevel;
@Input() protected instanceId!: number;
@Input() protected ratingComponent!: string;
@Input() protected ratingArea!: string;
@Input() protected aggregateMethod!: number;
@Input() protected itemId!: number;
@Input() protected scaleId!: number;
@Input() contextLevel!: ContextLevel;
@Input() instanceId!: number;
@Input() ratingComponent!: string;
@Input() ratingArea!: string;
@Input() aggregateMethod!: number;
@Input() itemId!: number;
@Input() scaleId!: number;
@Input() courseId!: number;
loaded = false;

View File

@ -46,12 +46,12 @@ export class CoreSearchBoxComponent implements OnInit {
@Input() lengthCheck = 3; // Check value length before submit. If 0, any string will be submitted.
@Input() showClear = true; // Show/hide clear button.
@Input() disabled = false; // Disables the input text.
@Input() protected initialSearch = ''; // Initial search text.
@Input() initialSearch = ''; // Initial search text.
/* If provided. It will save and display a history of searches for this particular Id.
* To use different history lists, place different Id.
* I.e. AddonMessagesContacts or CoreUserParticipants-6 (using the course Id).*/
@Input() protected searchArea = '';
@Input() searchArea = '';
@Output() onSubmit: EventEmitter<string>; // Send data when submitting the search form.
@Output() onClear: EventEmitter<void>; // Send event when clearing the search form.

View File

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
import 'jest-preset-angular';
import 'jest-preset-angular/setup-jest';
import { setCreateSingletonMethodProxy } from '@singletons';

View File

@ -9,7 +9,7 @@
"experimentalDecorators": true,
"strictNullChecks": true,
"strictPropertyInitialization": true,
"module": "esnext",
"module": "es2020",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
@ -46,6 +46,8 @@
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true
}
}