diff --git a/tests/donut-ava3/tsconfig.json b/tests/donut-ava3/tsconfig.json
index 3e90bf364..6f9b68d09 100644
--- a/tests/donut-ava3/tsconfig.json
+++ b/tests/donut-ava3/tsconfig.json
@@ -1,15 +1,15 @@
{
"compileOnSave": false,
"compilerOptions": {
+ "importHelpers": true,
+ "module": "esnext",
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
- "downlevelIteration": true,
- "experimentalDecorators": true,
- "module": "esnext",
"moduleResolution": "node",
- "importHelpers": true,
+ "experimentalDecorators": true,
+ "downlevelIteration": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
diff --git a/tests/donut-ava4/tsconfig.json b/tests/donut-ava4/tsconfig.json
index 547b10bb5..22d546ab3 100644
--- a/tests/donut-ava4/tsconfig.json
+++ b/tests/donut-ava4/tsconfig.json
@@ -2,7 +2,7 @@
"compileOnSave": false,
"compilerOptions": {
"importHelpers": true,
- "module": "ES2022",
+ "module": "esnext",
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": false,
@@ -12,12 +12,12 @@
"resolveJsonModule": true,
"esModuleInterop": true,
"downlevelIteration": true,
- "target": "ES2022",
+ "target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
- "ES2022",
+ "es2018",
"dom"
]
},
diff --git a/tests/donut-mod/.codesandbox/Dockerfile b/tests/donut-mod/.codesandbox/Dockerfile
new file mode 100644
index 000000000..adf04bd95
--- /dev/null
+++ b/tests/donut-mod/.codesandbox/Dockerfile
@@ -0,0 +1 @@
+FROM node:18
\ No newline at end of file
diff --git a/tests/donut-mod/.codesandbox/tasks.json b/tests/donut-mod/.codesandbox/tasks.json
new file mode 100644
index 000000000..8d92a54cd
--- /dev/null
+++ b/tests/donut-mod/.codesandbox/tasks.json
@@ -0,0 +1,17 @@
+{
+ // These tasks will run in order when initializing your CodeSandbox project.
+ "setupTasks": [
+ {
+ "name": "Install Dependencies",
+ "command": "yarn install"
+ }
+ ],
+ // These tasks can be run from CodeSandbox. Running one will open a log in the app.
+ "tasks": {
+ "node node_modules/@angular/cli/bin/ng serve -o --disable-host-check": {
+ "name": "Start Project",
+ "command": "node node_modules/@angular/cli/bin/ng serve -o --disable-host-check",
+ "runAtStart": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/donut-mod/.stackblitzrc b/tests/donut-mod/.stackblitzrc
new file mode 100644
index 000000000..65efbb4fd
--- /dev/null
+++ b/tests/donut-mod/.stackblitzrc
@@ -0,0 +1 @@
+{"installDependencies":true,"startCommand":"turbo start","env":{"ENABLE_CJS_IMPORTS":true}}
\ No newline at end of file
diff --git a/tests/donut-mod/ReadMe.md b/tests/donut-mod/ReadMe.md
new file mode 100644
index 000000000..88e6723a3
--- /dev/null
+++ b/tests/donut-mod/ReadMe.md
@@ -0,0 +1,58 @@
+
+
+
+This folder contains Angular application with example of Legend feature using [DoughnutChart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/general-getting-started.html) component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Branches
+
+> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-angular-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-angular-examples/tree/vnext) branch only when you want to contribute new samples to this repository.
+
+## Instructions
+
+Follow these instructions to run this example:
+
+
+- clone and navigate to this sample in terminal window
+
+```
+git clone https://github.com/IgniteUI/igniteui-angular-examples.git
+git checkout master
+cd ../samples/charts/doughnut-chart/legend
+```
+
+
+- open above folder in VS Code or type:
+```
+code .
+```
+
+- In terminal window, run:
+```
+npm install --legacy-peer-deps
+npm run-script start
+```
+
+- open http://localhost:4200/ in your browser
+
+
+## Learn More
+
+To learn more about **Ignite UI for Angular** components, check out the [Angular documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/general-getting-started.html).
diff --git a/tests/donut-mod/angular.json b/tests/donut-mod/angular.json
new file mode 100644
index 000000000..11ffb8c9c
--- /dev/null
+++ b/tests/donut-mod/angular.json
@@ -0,0 +1,106 @@
+{
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "version": 1,
+ "newProjectRoot": "projects",
+ "projects": {
+ "demo": {
+ "root": "",
+ "sourceRoot": "src",
+ "projectType": "application",
+ "architect": {
+ "build": {
+ "builder": "@angular-devkit/build-angular:browser",
+ "options": {
+ "outputPath": "dist/demo",
+ "index": "src/index.html",
+ "main": "src/main.ts",
+ "polyfills": [
+ "zone.js",
+ "hammerjs"
+ ],
+ "tsConfig": "src/config/tsconfig.app.json",
+ "assets": [
+ "src/assets"
+ ],
+ "styles": [
+ "src/styles.scss"
+ ],
+ "scripts": []
+ },
+ "configurations": {
+ "production": {
+ "fileReplacements": [
+ {
+ "replace": "src/environments/environment.ts",
+ "with": "src/environments/environment.prod.ts"
+ }
+ ],
+ "optimization": true,
+ "outputHashing": "all",
+ "sourceMap": false,
+ "namedChunks": false,
+ "aot": true,
+ "extractLicenses": true,
+ "vendorChunk": false,
+ "buildOptimizer": true
+ }
+ }
+ },
+ "serve": {
+ "builder": "@angular-devkit/build-angular:dev-server",
+ "options": {
+ "buildTarget": "demo:build"
+ },
+ "configurations": {
+ "production": {
+ "buildTarget": "demo:build:production"
+ }
+ }
+ },
+ "extract-i18n": {
+ "builder": "@angular-devkit/build-angular:extract-i18n",
+ "options": {
+ "buildTarget": "demo:build"
+ }
+ },
+ "test": {
+ "builder": "@angular-devkit/build-angular:karma",
+ "options": {
+ "main": "src/test.ts",
+ "polyfills": "src/polyfills.ts",
+ "tsConfig": "src/config/tsconfig.spec.json",
+ "karmaConfig": "src/config/karma.conf.js",
+ "styles": [
+ "styles.css"
+ ],
+ "scripts": [],
+ "assets": [
+ "src/assets"
+ ]
+ }
+ },
+ "lint": {
+ "builder": "@angular-devkit/build-angular:tslint",
+ "options": {
+ "tsConfig": [
+ "src/config/tsconfig.app.json",
+ "src/config/tsconfig.spec.json"
+ ],
+ "exclude": [
+ "**/node_modules/**"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "schematics": {
+ "@schematics/angular:component": {
+ "prefix": "app",
+ "style": "scss"
+ },
+ "@schematics/angular:directive": {
+ "prefix": "app"
+ }
+ }
+}
diff --git a/tests/donut-mod/package.json b/tests/donut-mod/package.json
new file mode 100644
index 000000000..fabb9adc1
--- /dev/null
+++ b/tests/donut-mod/package.json
@@ -0,0 +1,44 @@
+{
+ "scripts": {
+ "ng": "ng",
+ "update": "ng update",
+ "start": "node --max_old_space_size=12192 node_modules/@angular/cli/bin/ng serve -o",
+ "build": "node --max_old_space_size=12192 node_modules/@angular/cli/bin/ng build --configuration production",
+ "lint": "ng lint"
+ },
+ "dependencies": {
+ "@angular/animations": "17.0.0",
+ "@angular/common": "17.0.0",
+ "@angular/compiler": "17.0.0",
+ "@angular/core": "17.0.0",
+ "@angular/forms": "17.0.0",
+ "@angular/platform-browser": "17.0.0",
+ "@angular/platform-browser-dynamic": "17.0.0",
+ "@types/hammerjs": "2.0.39",
+ "classlist.js": "1.1.20150312",
+ "core-js": "3.21.0",
+ "hammerjs": "2.0.8",
+ "igniteui-angular-charts": "17.3.1-alpha.0",
+ "igniteui-angular-core": "17.3.1-alpha.0",
+ "intl": "1.2.5",
+ "jszip": "3.8.0",
+ "rxjs": "6.6.7",
+ "tslib": "2.3.1",
+ "web-animations-js": "2.3.2",
+ "zone.js": "~0.14.1"
+ },
+ "devDependencies": {
+ "@angular-devkit/build-angular": "17.0.0",
+ "@angular/cli": "17.0.0",
+ "@angular/compiler-cli": "17.0.0",
+ "@angular/language-service": "17.0.0",
+ "@types/node": "14.14.28",
+ "codelyzer": "6.0.2",
+ "jasmine-core": "3.7.1",
+ "jasmine-spec-reporter": "~4.2.1",
+ "sass.js": "0.11.1",
+ "ts-node": "9.1.1",
+ "tslint": "~6.1.3",
+ "typescript": "5.2.2"
+ }
+}
diff --git a/tests/donut-mod/src/EnergyGlobalDemand.ts b/tests/donut-mod/src/EnergyGlobalDemand.ts
new file mode 100644
index 000000000..922fcf7a9
--- /dev/null
+++ b/tests/donut-mod/src/EnergyGlobalDemand.ts
@@ -0,0 +1,51 @@
+export class EnergyGlobalDemandItem {
+ public constructor(init: Partial) {
+ Object.assign(this, init);
+ }
+
+ public value: number;
+ public category: string;
+ public summary: string;
+
+}
+export class EnergyGlobalDemand extends Array {
+ public constructor(items: Array | number = -1) {
+ if (Array.isArray(items)) {
+ super(...items);
+ } else {
+ const newItems = [
+ new EnergyGlobalDemandItem(
+ {
+ value: 37,
+ category: `Cooling`,
+ summary: `Cooling 37%`
+ }),
+ new EnergyGlobalDemandItem(
+ {
+ value: 25,
+ category: `Residential`,
+ summary: `Residential 25%`
+ }),
+ new EnergyGlobalDemandItem(
+ {
+ value: 12,
+ category: `Heating`,
+ summary: `Heating 12%`
+ }),
+ new EnergyGlobalDemandItem(
+ {
+ value: 11,
+ category: `Lighting`,
+ summary: `Lighting 11%`
+ }),
+ new EnergyGlobalDemandItem(
+ {
+ value: 15,
+ category: `Other`,
+ summary: `Other 15%`
+ }),
+ ];
+ super(...(newItems.slice(0, items)));
+ }
+ }
+}
diff --git a/tests/donut-mod/src/app.component.html b/tests/donut-mod/src/app.component.html
new file mode 100644
index 000000000..3c78e15c6
--- /dev/null
+++ b/tests/donut-mod/src/app.component.html
@@ -0,0 +1,33 @@
+
+
+ Global Electricity Demand by Energy Use
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/donut-mod/src/app.component.scss b/tests/donut-mod/src/app.component.scss
new file mode 100644
index 000000000..cbff781da
--- /dev/null
+++ b/tests/donut-mod/src/app.component.scss
@@ -0,0 +1,3 @@
+/* styles are loaded the Shared CSS file located at:
+https://static.infragistics.com/xplatform/css/samples/
+*/
diff --git a/tests/donut-mod/src/app.component.ts b/tests/donut-mod/src/app.component.ts
new file mode 100644
index 000000000..d7720aa4b
--- /dev/null
+++ b/tests/donut-mod/src/app.component.ts
@@ -0,0 +1,39 @@
+import { AfterViewInit, Component, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
+import { EnergyGlobalDemandItem, EnergyGlobalDemand } from './EnergyGlobalDemand';
+import { IgxItemLegendComponent, IgxDoughnutChartComponent, IgxRingSeriesComponent } from 'igniteui-angular-charts';
+
+@Component({
+ selector: "app-root",
+ styleUrls: ["./app.component.scss"],
+ templateUrl: "./app.component.html",
+ changeDetection: ChangeDetectionStrategy.OnPush
+})
+
+export class AppComponent implements AfterViewInit
+{
+
+ @ViewChild("legend", { static: true } )
+ private legend: IgxItemLegendComponent
+ @ViewChild("chart", { static: true } )
+ private chart: IgxDoughnutChartComponent
+ @ViewChild("series", { static: true } )
+ private series: IgxRingSeriesComponent
+ private _energyGlobalDemand: EnergyGlobalDemand = null;
+ public get energyGlobalDemand(): EnergyGlobalDemand {
+ if (this._energyGlobalDemand == null)
+ {
+ this._energyGlobalDemand = new EnergyGlobalDemand();
+ }
+ return this._energyGlobalDemand;
+ }
+
+ public constructor(private _detector: ChangeDetectorRef)
+ {
+ }
+
+ public ngAfterViewInit(): void
+ {
+ }
+
+}
+
diff --git a/tests/donut-mod/src/app.module.ts b/tests/donut-mod/src/app.module.ts
new file mode 100644
index 000000000..7d4332c43
--- /dev/null
+++ b/tests/donut-mod/src/app.module.ts
@@ -0,0 +1,26 @@
+import { NgModule } from "@angular/core";
+import { FormsModule } from "@angular/forms";
+import { CommonModule } from "@angular/common";
+import { BrowserModule } from "@angular/platform-browser";
+import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
+import { AppComponent } from "./app.component";
+
+import { IgxItemLegendModule, IgxDoughnutChartModule } from 'igniteui-angular-charts';
+
+@NgModule({
+ bootstrap: [AppComponent],
+ declarations: [
+ AppComponent
+],
+ imports: [
+ BrowserModule,
+ BrowserAnimationsModule,
+ CommonModule,
+ FormsModule,
+ IgxItemLegendModule,
+ IgxDoughnutChartModule
+],
+ providers: [],
+ schemas: []
+})
+export class AppModule {}
diff --git a/tests/donut-mod/src/config/tsconfig-es5.app.json b/tests/donut-mod/src/config/tsconfig-es5.app.json
new file mode 100644
index 000000000..7e8983eb4
--- /dev/null
+++ b/tests/donut-mod/src/config/tsconfig-es5.app.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig.app.json",
+ "compilerOptions": {
+ "target": "ES2022"
+ }
+ }
diff --git a/tests/donut-mod/src/config/tsconfig.app.json b/tests/donut-mod/src/config/tsconfig.app.json
new file mode 100644
index 000000000..f722e3fe4
--- /dev/null
+++ b/tests/donut-mod/src/config/tsconfig.app.json
@@ -0,0 +1,12 @@
+{
+ "extends": "./tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "../../out-tsc/app",
+ "baseUrl": "./",
+ "types": []
+ },
+ "files": [
+ "../main.ts",
+ "../polyfills.ts"
+ ]
+}
diff --git a/tests/donut-mod/src/config/tsconfig.base.json b/tests/donut-mod/src/config/tsconfig.base.json
new file mode 100644
index 000000000..cee300867
--- /dev/null
+++ b/tests/donut-mod/src/config/tsconfig.base.json
@@ -0,0 +1,24 @@
+{
+ "compileOnSave": false,
+ "compilerOptions": {
+ "importHelpers": true,
+ "module": "esnext",
+ "outDir": "../../dist/out-tsc",
+ "sourceMap": false,
+ "declaration": false,
+ "moduleResolution": "node",
+ "experimentalDecorators": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "downlevelIteration": true, // required for excel library
+ "target": "es2015",
+ "typeRoots": [
+ "../../node_modules/@types"
+ ],
+ "lib": [
+ "es2018",
+ "dom"
+ ],
+ "useDefineForClassFields": false
+ }
+}
diff --git a/tests/donut-mod/src/config/tsconfig.spec.json b/tests/donut-mod/src/config/tsconfig.spec.json
new file mode 100644
index 000000000..6eb8c055c
--- /dev/null
+++ b/tests/donut-mod/src/config/tsconfig.spec.json
@@ -0,0 +1,19 @@
+{
+ "extends": "./tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "../../out-tsc/spec",
+ "baseUrl": "./",
+ "types": [
+ "jasmine",
+ "node"
+ ]
+ },
+ "files": [
+ "../test.ts",
+ "../polyfills.ts"
+ ],
+ "include": [
+ "../**/*.spec.ts",
+ "../**/*.d.ts"
+ ]
+}
diff --git a/tests/donut-mod/src/config/tsconfig.worker.json b/tests/donut-mod/src/config/tsconfig.worker.json
new file mode 100644
index 000000000..4867b1275
--- /dev/null
+++ b/tests/donut-mod/src/config/tsconfig.worker.json
@@ -0,0 +1,14 @@
+{
+ "extends": "./tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "../../out-tsc/worker",
+ "lib": [
+ "ES2022",
+ "DOM"
+ ],
+ "types": []
+ },
+ "include": [
+ "../**/*Worker.ts"
+ ]
+}
diff --git a/tests/donut-mod/src/environments/environment.prod.ts b/tests/donut-mod/src/environments/environment.prod.ts
new file mode 100644
index 000000000..3612073bc
--- /dev/null
+++ b/tests/donut-mod/src/environments/environment.prod.ts
@@ -0,0 +1,3 @@
+export const environment = {
+ production: true
+};
diff --git a/tests/donut-mod/src/environments/environment.ts b/tests/donut-mod/src/environments/environment.ts
new file mode 100644
index 000000000..7b4f817ad
--- /dev/null
+++ b/tests/donut-mod/src/environments/environment.ts
@@ -0,0 +1,16 @@
+// This file can be replaced during build by using the `fileReplacements` array.
+// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
+// The list of file replacements can be found in `angular.json`.
+
+export const environment = {
+ production: false
+};
+
+/*
+ * For easier debugging in development mode, you can import the following file
+ * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
+ *
+ * This import should be commented out in production mode because it will have a negative impact
+ * on performance if an error is thrown.
+ */
+// import 'zone.js/dist/zone-error'; // Included with Angular CLI.
diff --git a/tests/donut-mod/src/index.html b/tests/donut-mod/src/index.html
new file mode 100644
index 000000000..7650dfb64
--- /dev/null
+++ b/tests/donut-mod/src/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ IgniteUI for Angular | Example | infragistics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/donut-mod/src/main.ts b/tests/donut-mod/src/main.ts
new file mode 100644
index 000000000..ec9adcd4a
--- /dev/null
+++ b/tests/donut-mod/src/main.ts
@@ -0,0 +1,15 @@
+// tslint:disable:no-string-literal
+import "./polyfills";
+import { enableProdMode } from "@angular/core";
+import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
+import { AppModule } from "./app.module";
+
+platformBrowserDynamic().bootstrapModule(AppModule).then(ref => {
+ // ensure Angular destroys itself on hot reloads.
+ if (window["ngRef"]) {
+ window["ngRef"].destroy();
+ }
+ window["ngRef"] = ref;
+
+ // otherwise, log the boot error
+}).catch(err => console.error(err));
diff --git a/tests/donut-mod/src/polyfills.ts b/tests/donut-mod/src/polyfills.ts
new file mode 100644
index 000000000..d583cff9c
--- /dev/null
+++ b/tests/donut-mod/src/polyfills.ts
@@ -0,0 +1,65 @@
+/**
+ * This file includes polyfills needed by Angular and is loaded before the app.
+ * You can add your own extra polyfills to this file.
+ *
+ * This file is divided into 2 sections:
+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
+ * file.
+ *
+ * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
+ *
+ * Learn more in https://angular.io/guide/browser-support
+ */
+
+/***************************************************************************************************
+* BROWSER POLYFILLS
+*/
+
+// import "core-js/es7/object";
+
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
+//import "classlist.js"; // run `npm install --save classlist.js`.
+
+/** IE10 and IE11 requires the following for the Reflect API. */
+// import "core-js/es6/reflect";
+
+/* Evergreen browsers require these. */
+// used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
+// import "core-js/es7/reflect";
+
+/*
+ * Required to support Web Animations `@angular/platform-browser/animations`.
+ * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
+ */
+//import "web-animations-js"; // run `npm install --save web-animations-js`.
+
+/***************************************************************************************************
+ * Zone JS is required by Angular itself.
+ */
+import "hammerjs/hammer";
+import "zone.js"; // included with Angular CLI.
+
+/***************************************************************************************************
+ * @angular/animations polyfill
+ */
+// if (!Element.prototype.matches) {
+// Element.prototype.matches = (Element.prototype as any).msMatchesSelector;
+// }
+
+/***************************************************************************************************
+ * APPLICATION IMPORTS
+ */
+
+/**
+ * Date, currency, decimal and percent pipes.
+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
+ */
+// import "intl"; // Run `npm install --save intl`.
+// import "intl/locale-data/jsonp/de";
+/**
+ * Need to import at least one locale-data with intl.
+ */
+// import "intl/locale-data/jsonp/en";
diff --git a/tests/donut-mod/src/styles.scss b/tests/donut-mod/src/styles.scss
new file mode 100644
index 000000000..9b431e92d
--- /dev/null
+++ b/tests/donut-mod/src/styles.scss
@@ -0,0 +1,9 @@
+/* autoprefixer grid: on */
+html,
+body {
+ height: 100%;
+ width: 100%;
+ overflow: hidden;
+ margin: 0;
+ box-sizing: border-box;
+}
diff --git a/tests/donut-mod/src/typings.d.ts b/tests/donut-mod/src/typings.d.ts
new file mode 100644
index 000000000..ef5c7bd62
--- /dev/null
+++ b/tests/donut-mod/src/typings.d.ts
@@ -0,0 +1,5 @@
+/* SystemJS module definition */
+declare var module: NodeModule;
+interface NodeModule {
+ id: string;
+}
diff --git a/tests/donut-mod/tsconfig.json b/tests/donut-mod/tsconfig.json
new file mode 100644
index 000000000..1aaac63d3
--- /dev/null
+++ b/tests/donut-mod/tsconfig.json
@@ -0,0 +1,21 @@
+/*
+ This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience.
+ It is not intended to be used to perform a compilation.
+
+ To learn more about this file see: https://angular.io/config/solution-tsconfig.
+*/
+{
+ "useDefineForClassFields": false,
+ "files": [],
+ "references": [
+ {
+ "path": "./src/config/tsconfig.app.json"
+ },
+ {
+ "path": "./src/config/tsconfig.worker.json"
+ },
+ {
+ "path": "./src/config/tsconfig.spec.json"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/donut-mod/tslint.json b/tests/donut-mod/tslint.json
new file mode 100644
index 000000000..777c777d9
--- /dev/null
+++ b/tests/donut-mod/tslint.json
@@ -0,0 +1,31 @@
+{
+ "extends": "tslint:latest",
+ "rules": {
+ "deprecation": {
+ "severity": "warning"
+ },
+ "arrow-parens": false,
+ "indent": [true, "spaces"],
+ "interface-name": [true, "always-prefix"],
+ "max-classes-per-file": false,
+ "no-bitwise": false,
+ "no-console": false,
+ "no-empty": false,
+ "no-duplicate-imports": false,
+ "no-implicit-dependencies": false,
+ "no-object-literal-type-assertion": false,
+ "no-submodule-imports": [false],
+ "no-string-literal": false,
+ "no-trailing-whitespace": false,
+ "no-var-keyword": false,
+ "object-literal-sort-keys": false,
+ "only-arrow-functions": false,
+ "prefer-conditional-expression": false,
+ "prefer-const": false,
+ "prefer-for-of": false,
+ "prefer-object-spread": false,
+ "space-within-parens": false,
+ "trailing-comma": [true, {"multiline": "never", "singleline": "never"}],
+ "variable-name": [true, "allow-leading-underscore"]
+ }
+}