first commit
This commit is contained in:
		
							
								
								
									
										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. */ | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user