first commit
This commit is contained in:
commit
b2cd5d7c5c
36
.eslintrc.json
Normal file
36
.eslintrc.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"env": {
|
||||
"es2021": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 12,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
4
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
"single"
|
||||
],
|
||||
"semi": [
|
||||
"error",
|
||||
"always"
|
||||
]
|
||||
}
|
||||
}
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
5663
package-lock.json
generated
Normal file
5663
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
24
package.json
Normal file
24
package.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "greenserver",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.19.0",
|
||||
"express": "^4.17.1",
|
||||
"typescript": "^4.4.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^16.9.6",
|
||||
"@typescript-eslint/eslint-plugin": "^4.31.2",
|
||||
"@typescript-eslint/parser": "^4.31.2",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-airbnb-base": "^14.2.1",
|
||||
"eslint-plugin-import": "^2.24.2"
|
||||
}
|
||||
}
|
12
src/app.ts
Normal file
12
src/app.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import express from 'express';
|
||||
import bodyParser from 'body-parser';
|
||||
|
||||
const app = express();
|
||||
|
||||
app.set('port', process.env.PORT || 3000);
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
import './api';
|
||||
|
||||
export default app;
|
5
src/routes/api/green/controller.ts
Normal file
5
src/routes/api/green/controller.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import { Request, Response } from 'express';
|
||||
|
||||
export const get = (req: Request, res: Response):void => {
|
||||
res.status(200).send({});
|
||||
};
|
16
src/routes/api/green/index.ts
Normal file
16
src/routes/api/green/index.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import { Router } from 'express';
|
||||
import * as exampleMW from './middleware';
|
||||
import * as exampleCtrl from './controller';
|
||||
import { API } from '../index';
|
||||
|
||||
export default class GreenApi implements API {
|
||||
private router: Router;
|
||||
|
||||
constructor(router: Router) {
|
||||
this.router = router;
|
||||
}
|
||||
|
||||
setupApi():void {
|
||||
this.router.get('/example',exampleMW.canGet,exampleCtrl.get);
|
||||
}
|
||||
}
|
6
src/routes/api/green/middleware.ts
Normal file
6
src/routes/api/green/middleware.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import { Request, Response, NextFunction } from 'express';
|
||||
|
||||
export const canGet = (req: Request, res: Response, next: NextFunction):void => {
|
||||
|
||||
return next();
|
||||
};
|
15
src/routes/api/index.ts
Normal file
15
src/routes/api/index.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import GreenApi from './green';
|
||||
import { Router, Express } from 'express';
|
||||
|
||||
export const setupApis = (application: Express):void => {
|
||||
const router = Router();
|
||||
const exampleApi = new GreenApi(router);
|
||||
|
||||
exampleApi.setupApi();
|
||||
|
||||
application.use('/api', router);
|
||||
};
|
||||
|
||||
export interface API {
|
||||
setupApi(): void; //virtual method
|
||||
}
|
14
src/server.ts
Normal file
14
src/server.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import app from './app';
|
||||
|
||||
const server = app.listen(app.get('port'), () => {
|
||||
console.log(
|
||||
'App is running at http://localhost:%d in %s mode',
|
||||
app.get('port'),
|
||||
app.get('env')
|
||||
);
|
||||
|
||||
console.log('Press CTRL-C to stop\n');
|
||||
});
|
||||
|
||||
export default server;
|
||||
|
45
src/utils/dgcVerifier/CertificateDownloader.ts
Normal file
45
src/utils/dgcVerifier/CertificateDownloader.ts
Normal file
@ -0,0 +1,45 @@
|
||||
// import crypto from 'crypto';
|
||||
export class CertificateDownloader{
|
||||
static instance: CertificateDownloader;
|
||||
// private readonly baseUrl = 'https://get.dgc.gov.it';
|
||||
private readonly keyStorage = 'cerificate_collection';
|
||||
private readonly timeSpan = 86400000;
|
||||
// private readonly timeSpan = 1000;
|
||||
private cerficateCollection = {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
private constructor(){}
|
||||
|
||||
public getCertificates(): unknown {
|
||||
const savedData = JSON.parse(localStorage.getItem(this.keyStorage) || '{}');
|
||||
if(savedData.lastupdateDate == null || Date.now() - savedData?.lastupdateDate > this.timeSpan){
|
||||
this.getAllCertificate()
|
||||
.then(() => { console.log('could not read the certificates from the local file'); return this.cerficateCollection })
|
||||
.catch(console.error);
|
||||
}
|
||||
console.log('cerficates collection is valid loading from local source');
|
||||
// console.log(dataRead.certificates);
|
||||
this.cerficateCollection = savedData.certificates;
|
||||
return this.cerficateCollection;
|
||||
}
|
||||
|
||||
public static getCertificateDownloader():CertificateDownloader{
|
||||
if(CertificateDownloader.instance == undefined){
|
||||
CertificateDownloader.instance = new CertificateDownloader();
|
||||
}
|
||||
return CertificateDownloader.instance;
|
||||
}
|
||||
|
||||
async getAllCertificate(): Promise<void> {
|
||||
this.cerficateCollection = {};
|
||||
const response = (await fetch('https://raw.githubusercontent.com/lovasoa/sanipasse/master/src/assets/Digital_Green_Certificate_Signing_Keys.json'));
|
||||
if(response.ok){
|
||||
this.cerficateCollection = await response.json();
|
||||
console.log(response);
|
||||
const lastupdateDate = Date.now();
|
||||
localStorage.setItem(this.keyStorage, JSON.stringify({'certificates':this.cerficateCollection, lastupdateDate}))
|
||||
// fs.writeFile('./cerificate_collection.json', JSON.stringify({'certificates':this.cerficateCollection, lastupdateDate}),'utf8',console.error);
|
||||
}else{
|
||||
throw new Error(response.statusText);
|
||||
}
|
||||
}
|
||||
}
|
41
src/utils/dgcVerifier/RuleDownloader.ts
Normal file
41
src/utils/dgcVerifier/RuleDownloader.ts
Normal file
@ -0,0 +1,41 @@
|
||||
export class RuleDownloader {
|
||||
static instance: RuleDownloader;
|
||||
private readonly baseUrl = 'https://get.dgc.gov.it';
|
||||
private readonly timeSpan = 86400000;
|
||||
private readonly keyStorage = 'rules'
|
||||
// private readonly timeSpan = 1000;
|
||||
public rules:unknown = {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
private constructor(){
|
||||
this.getRules();
|
||||
}
|
||||
|
||||
public getRules(): unknown {
|
||||
const savedData = JSON.parse(localStorage.getItem(this.keyStorage) || '{}');
|
||||
if(savedData.lastupdateDate == null || Date.now() - savedData?.lastupdateDate > this.timeSpan){
|
||||
this.getSettings()
|
||||
.then(() => { console.log('could not read the certificates from the local file'); return this.rules })
|
||||
.catch(console.error);
|
||||
}
|
||||
console.log('cerficates collection is valid loading from local source');
|
||||
// console.log(dataRead.certificates);
|
||||
this.rules = savedData.certificates;
|
||||
return this.rules;
|
||||
}
|
||||
|
||||
static getRuleDownloader(): RuleDownloader{
|
||||
if(this.instance == undefined){
|
||||
RuleDownloader.instance = new RuleDownloader();
|
||||
}
|
||||
return RuleDownloader.instance;
|
||||
}
|
||||
|
||||
private async getSettings(): Promise<unknown>{
|
||||
const response = await fetch(`${this.baseUrl}/v1/dgc/settings`);
|
||||
const jsonData = await response.json();
|
||||
// this.rules = Rule.fromJSON(jsonData,{valueSets, validationClock:new Date().toISOString(),})
|
||||
this.rules = jsonData;
|
||||
localStorage.setItem(this.keyStorage, JSON.stringify({rules:this.rules,lastupdateDate:Date.now()}));
|
||||
return jsonData;
|
||||
}
|
||||
}
|
22
src/utils/dgcVerifier/Verifier.ts
Normal file
22
src/utils/dgcVerifier/Verifier.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { CertificateDownloader } from './CertificateDownloader';
|
||||
import { RuleDownloader } from './RuleDownloader';
|
||||
import {DCC} from 'dcc-utils';
|
||||
import fs from 'fs';
|
||||
|
||||
export default class Verifier {
|
||||
static certDownloader: CertificateDownloader;
|
||||
static ruleDownloader: RuleDownloader;
|
||||
static certificateList: any;
|
||||
|
||||
static async setup():Promise<void> {
|
||||
Verifier.certDownloader = CertificateDownloader.getCertificateDownloader();
|
||||
Verifier.ruleDownloader = RuleDownloader.getRuleDownloader();
|
||||
Verifier.certificateList = await Verifier.certDownloader.getCertificates()
|
||||
}
|
||||
|
||||
static async checkCertificate(certificate:string): Promise<unknown>{
|
||||
const dcc = await DCC.fromRaw(certificate);
|
||||
const certCheck = await dcc.checkSignatureWithKeysList(Verifier.certificateList);
|
||||
return certCheck;
|
||||
}
|
||||
}
|
389
src/utils/dgcVerifier/valueSets.json
Normal file
389
src/utils/dgcVerifier/valueSets.json
Normal file
@ -0,0 +1,389 @@
|
||||
{
|
||||
"country-2-codes": [
|
||||
"AD",
|
||||
"AE",
|
||||
"AF",
|
||||
"AG",
|
||||
"AI",
|
||||
"AL",
|
||||
"AM",
|
||||
"AO",
|
||||
"AQ",
|
||||
"AR",
|
||||
"AS",
|
||||
"AT",
|
||||
"AU",
|
||||
"AW",
|
||||
"AX",
|
||||
"AZ",
|
||||
"BA",
|
||||
"BB",
|
||||
"BD",
|
||||
"BE",
|
||||
"BF",
|
||||
"BG",
|
||||
"BH",
|
||||
"BI",
|
||||
"BJ",
|
||||
"BL",
|
||||
"BM",
|
||||
"BN",
|
||||
"BO",
|
||||
"BQ",
|
||||
"BR",
|
||||
"BS",
|
||||
"BT",
|
||||
"BV",
|
||||
"BW",
|
||||
"BY",
|
||||
"BZ",
|
||||
"CA",
|
||||
"CC",
|
||||
"CD",
|
||||
"CF",
|
||||
"CG",
|
||||
"CH",
|
||||
"CI",
|
||||
"CK",
|
||||
"CL",
|
||||
"CM",
|
||||
"CN",
|
||||
"CO",
|
||||
"CR",
|
||||
"CU",
|
||||
"CV",
|
||||
"CW",
|
||||
"CX",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DE",
|
||||
"DJ",
|
||||
"DK",
|
||||
"DM",
|
||||
"DO",
|
||||
"DZ",
|
||||
"EC",
|
||||
"EE",
|
||||
"EG",
|
||||
"EH",
|
||||
"ER",
|
||||
"ES",
|
||||
"ET",
|
||||
"FI",
|
||||
"FJ",
|
||||
"FK",
|
||||
"FM",
|
||||
"FO",
|
||||
"FR",
|
||||
"GA",
|
||||
"GB",
|
||||
"GD",
|
||||
"GE",
|
||||
"GF",
|
||||
"GG",
|
||||
"GH",
|
||||
"GI",
|
||||
"GL",
|
||||
"GM",
|
||||
"GN",
|
||||
"GP",
|
||||
"GQ",
|
||||
"GR",
|
||||
"GS",
|
||||
"GT",
|
||||
"GU",
|
||||
"GW",
|
||||
"GY",
|
||||
"HK",
|
||||
"HM",
|
||||
"HN",
|
||||
"HR",
|
||||
"HT",
|
||||
"HU",
|
||||
"ID",
|
||||
"IE",
|
||||
"IL",
|
||||
"IM",
|
||||
"IN",
|
||||
"IO",
|
||||
"IQ",
|
||||
"IR",
|
||||
"IS",
|
||||
"IT",
|
||||
"JE",
|
||||
"JM",
|
||||
"JO",
|
||||
"JP",
|
||||
"KE",
|
||||
"KG",
|
||||
"KH",
|
||||
"KI",
|
||||
"KM",
|
||||
"KN",
|
||||
"KP",
|
||||
"KR",
|
||||
"KW",
|
||||
"KY",
|
||||
"KZ",
|
||||
"LA",
|
||||
"LB",
|
||||
"LC",
|
||||
"LI",
|
||||
"LK",
|
||||
"LR",
|
||||
"LS",
|
||||
"LT",
|
||||
"LU",
|
||||
"LV",
|
||||
"LY",
|
||||
"MA",
|
||||
"MC",
|
||||
"MD",
|
||||
"ME",
|
||||
"MF",
|
||||
"MG",
|
||||
"MH",
|
||||
"MK",
|
||||
"ML",
|
||||
"MM",
|
||||
"MN",
|
||||
"MO",
|
||||
"MP",
|
||||
"MQ",
|
||||
"MR",
|
||||
"MS",
|
||||
"MT",
|
||||
"MU",
|
||||
"MV",
|
||||
"MW",
|
||||
"MX",
|
||||
"MY",
|
||||
"MZ",
|
||||
"NA",
|
||||
"NC",
|
||||
"NE",
|
||||
"NF",
|
||||
"NG",
|
||||
"NI",
|
||||
"NL",
|
||||
"NO",
|
||||
"NP",
|
||||
"NR",
|
||||
"NU",
|
||||
"NZ",
|
||||
"OM",
|
||||
"PA",
|
||||
"PE",
|
||||
"PF",
|
||||
"PG",
|
||||
"PH",
|
||||
"PK",
|
||||
"PL",
|
||||
"PM",
|
||||
"PN",
|
||||
"PR",
|
||||
"PS",
|
||||
"PT",
|
||||
"PW",
|
||||
"PY",
|
||||
"QA",
|
||||
"RE",
|
||||
"RO",
|
||||
"RS",
|
||||
"RU",
|
||||
"RW",
|
||||
"SA",
|
||||
"SB",
|
||||
"SC",
|
||||
"SD",
|
||||
"SE",
|
||||
"SG",
|
||||
"SH",
|
||||
"SI",
|
||||
"SJ",
|
||||
"SK",
|
||||
"SL",
|
||||
"SM",
|
||||
"SN",
|
||||
"SO",
|
||||
"SR",
|
||||
"SS",
|
||||
"ST",
|
||||
"SV",
|
||||
"SX",
|
||||
"SY",
|
||||
"SZ",
|
||||
"TC",
|
||||
"TD",
|
||||
"TF",
|
||||
"TG",
|
||||
"TH",
|
||||
"TJ",
|
||||
"TK",
|
||||
"TL",
|
||||
"TM",
|
||||
"TN",
|
||||
"TO",
|
||||
"TR",
|
||||
"TT",
|
||||
"TV",
|
||||
"TW",
|
||||
"TZ",
|
||||
"UA",
|
||||
"UG",
|
||||
"UM",
|
||||
"US",
|
||||
"UY",
|
||||
"UZ",
|
||||
"VA",
|
||||
"VC",
|
||||
"VE",
|
||||
"VG",
|
||||
"VI",
|
||||
"VN",
|
||||
"VU",
|
||||
"WF",
|
||||
"WS",
|
||||
"YE",
|
||||
"YT",
|
||||
"ZA",
|
||||
"ZM",
|
||||
"ZW"
|
||||
],
|
||||
"disease-agent-targeted": [
|
||||
"840539006"
|
||||
],
|
||||
"covid-19-lab-test-manufacturer-and-name": [
|
||||
"1065",
|
||||
"1097",
|
||||
"1114",
|
||||
"1144",
|
||||
"1162",
|
||||
"1173",
|
||||
"1180",
|
||||
"1190",
|
||||
"1199",
|
||||
"1201",
|
||||
"1215",
|
||||
"1218",
|
||||
"1223",
|
||||
"1225",
|
||||
"1232",
|
||||
"1236",
|
||||
"1242",
|
||||
"1244",
|
||||
"1253",
|
||||
"1257",
|
||||
"1263",
|
||||
"1266",
|
||||
"1267",
|
||||
"1268",
|
||||
"1271",
|
||||
"1278",
|
||||
"1295",
|
||||
"1296",
|
||||
"1304",
|
||||
"1319",
|
||||
"1331",
|
||||
"1333",
|
||||
"1341",
|
||||
"1343",
|
||||
"1360",
|
||||
"1363",
|
||||
"1365",
|
||||
"1375",
|
||||
"1392",
|
||||
"1420",
|
||||
"1437",
|
||||
"1443",
|
||||
"1456",
|
||||
"1466",
|
||||
"1468",
|
||||
"1481",
|
||||
"1484",
|
||||
"1489",
|
||||
"1490",
|
||||
"1501",
|
||||
"1574",
|
||||
"1604",
|
||||
"1606",
|
||||
"1654",
|
||||
"1736",
|
||||
"1747",
|
||||
"1763",
|
||||
"1764",
|
||||
"1767",
|
||||
"1769",
|
||||
"1815",
|
||||
"1822",
|
||||
"1833",
|
||||
"1844",
|
||||
"1870",
|
||||
"1884",
|
||||
"1906",
|
||||
"1919",
|
||||
"1934",
|
||||
"2010",
|
||||
"2017",
|
||||
"2029",
|
||||
"2074",
|
||||
"2098",
|
||||
"2101",
|
||||
"2103",
|
||||
"2104",
|
||||
"2108",
|
||||
"2109",
|
||||
"2116",
|
||||
"2128",
|
||||
"2130",
|
||||
"2139",
|
||||
"2183",
|
||||
"308",
|
||||
"344",
|
||||
"345",
|
||||
"768"
|
||||
],
|
||||
"covid-19-lab-result": [
|
||||
"260373001",
|
||||
"260415000"
|
||||
],
|
||||
"covid-19-lab-test-type": [
|
||||
"LP217198-3",
|
||||
"LP6464-4"
|
||||
],
|
||||
"vaccines-covid-19-auth-holders": [
|
||||
"Bharat-Biotech",
|
||||
"Gamaleya-Research-Institute",
|
||||
"ORG-100001417",
|
||||
"ORG-100001699",
|
||||
"ORG-100006270",
|
||||
"ORG-100010771",
|
||||
"ORG-100013793",
|
||||
"ORG-100020693",
|
||||
"ORG-100024420",
|
||||
"ORG-100030215",
|
||||
"ORG-100031184",
|
||||
"ORG-100032020",
|
||||
"Sinovac-Biotech",
|
||||
"Vector-Institute"
|
||||
],
|
||||
"vaccines-covid-19-names": [
|
||||
"BBIBP-CorV",
|
||||
"CVnCoV",
|
||||
"Convidecia",
|
||||
"CoronaVac",
|
||||
"Covaxin",
|
||||
"EU/1/20/1507",
|
||||
"EU/1/20/1525",
|
||||
"EU/1/20/1528",
|
||||
"EU/1/21/1529",
|
||||
"EpiVacCorona",
|
||||
"Inactivated-SARS-CoV-2-Vero-Cell",
|
||||
"Sputnik-V"
|
||||
],
|
||||
"sct-vaccines-covid-19": [
|
||||
"1119305005",
|
||||
"1119349007",
|
||||
"J07BX03"
|
||||
]
|
||||
}
|
100
tsconfig.json
Normal file
100
tsconfig.json
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||
|
||||
/* Projects */
|
||||
// "incremental": true, /* Enable incremental compilation */
|
||||
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
|
||||
// "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
|
||||
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
|
||||
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
|
||||
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
||||
|
||||
/* Language and Environment */
|
||||
"target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
||||
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
||||
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
||||
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
|
||||
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
||||
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
|
||||
// "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
|
||||
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
|
||||
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
||||
|
||||
/* Modules */
|
||||
"module": "commonjs", /* Specify what module code is generated. */
|
||||
// "rootDir": "./", /* Specify the root folder within your source files. */
|
||||
// "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
|
||||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
|
||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
// "resolveJsonModule": true, /* Enable importing .json files */
|
||||
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
|
||||
|
||||
/* JavaScript Support */
|
||||
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
|
||||
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
||||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
||||
|
||||
/* Emit */
|
||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
||||
// "outDir": "./", /* Specify an output folder for all emitted files. */
|
||||
// "removeComments": true, /* Disable emitting comments. */
|
||||
// "noEmit": true, /* Disable emitting files from a compilation. */
|
||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
|
||||
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
||||
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
|
||||
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
|
||||
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
|
||||
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
||||
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
|
||||
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
|
||||
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
|
||||
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
|
||||
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
|
||||
|
||||
/* Interop Constraints */
|
||||
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
|
||||
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
|
||||
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
||||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
|
||||
|
||||
/* Type Checking */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
|
||||
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
|
||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
||||
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
|
||||
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
|
||||
// "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
|
||||
// "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
|
||||
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
||||
// "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
|
||||
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
|
||||
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
|
||||
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
|
||||
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
|
||||
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
|
||||
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
|
||||
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
|
||||
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
||||
|
||||
/* Completeness */
|
||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user