├── .gitignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src ├── index.ts ├── questions.ts └── scaffold.ts ├── template ├── .vscode │ ├── launch.json │ └── tasks.json ├── Makefile ├── gitignore ├── include │ └── program.h └── src │ └── main.c └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Abdeljalil Elhachimi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # create-c 2 | 3 | Create C projects ready to run and debug with zero configuration 4 |

5 | Screen Shot 2021-09-30 at 10 03 14 6 |

7 | 8 | ## Installation 9 | 10 | Use the package manager npm (comes already with Node) 11 | 12 | ```bash 13 | npm install -g create-c 14 | ``` 15 | 16 | ## Usage 17 | 18 | Just run it 19 | 20 | ## Features 21 | 22 | - Makefile with all the necessary rules 23 | - Debugging Configuration with a pre-launch task so don't have to recompile manually 24 | - A gitignore pre-made for C/C++ projects (output name and .DS_Store are included too) 25 | 26 | ## Contributing 27 | 28 | Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 29 | 30 | ## License 31 | 32 | [MIT](https://choosealicense.com/licenses/mit/) 33 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "create-c", 3 | "version": "1.0.6", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "create-c", 9 | "version": "1.0.6", 10 | "license": "MIT", 11 | "bin": { 12 | "create-c": "dist/index.js" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^16.9.4", 16 | "typescript": "^4.4.3" 17 | } 18 | }, 19 | "node_modules/@types/node": { 20 | "version": "16.9.4", 21 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.4.tgz", 22 | "integrity": "sha512-KDazLNYAGIuJugdbULwFZULF9qQ13yNWEBFnfVpqlpgAAo6H/qnM9RjBgh0A0kmHf3XxAKLdN5mTIng9iUvVLA==", 23 | "dev": true 24 | }, 25 | "node_modules/typescript": { 26 | "version": "4.4.3", 27 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", 28 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", 29 | "dev": true, 30 | "bin": { 31 | "tsc": "bin/tsc", 32 | "tsserver": "bin/tsserver" 33 | }, 34 | "engines": { 35 | "node": ">=4.2.0" 36 | } 37 | } 38 | }, 39 | "dependencies": { 40 | "@types/node": { 41 | "version": "16.9.4", 42 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.4.tgz", 43 | "integrity": "sha512-KDazLNYAGIuJugdbULwFZULF9qQ13yNWEBFnfVpqlpgAAo6H/qnM9RjBgh0A0kmHf3XxAKLdN5mTIng9iUvVLA==", 44 | "dev": true 45 | }, 46 | "typescript": { 47 | "version": "4.4.3", 48 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", 49 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", 50 | "dev": true 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "create-c", 3 | "version": "1.0.6", 4 | "description": "Create C projects with zero configuration", 5 | "main": "./dist/index.js", 6 | "bin": { 7 | "create-c": "./dist/index.js" 8 | }, 9 | "scripts": { 10 | "start": "npm run build && node dist/index.js", 11 | "test": "echo \"Error: no test specified\" && exit 1", 12 | "build": "./node_modules/.bin/tsc" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/JLL32/create-c.git" 17 | }, 18 | "keywords": [ 19 | "scaffold", 20 | "c", 21 | "project", 22 | "create", 23 | "config" 24 | ], 25 | "author": "JLL32", 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "https://github.com/JLL32/create-c/issues" 29 | }, 30 | "homepage": "https://github.com/JLL32/create-c#readme", 31 | "devDependencies": { 32 | "@types/node": "^16.9.4", 33 | "typescript": "^4.4.3" 34 | }, 35 | "type": "module" 36 | } 37 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import readline from "readline"; 4 | import util from "util"; 5 | import { IQuestions, Question } from "./questions.js"; 6 | import { scaffold } from "./scaffold.js"; 7 | 8 | export const questions: IQuestions = { 9 | projectName: new Question("Project name (c-project): ", "c-project"), 10 | entryPoint: new Question("Entry point (main.c): ", "main.c"), 11 | outputName: new Question("Output name (program): ", "program"), 12 | debugConfig: new Question("Debugging configuration? (yes): ", "yes"), 13 | gitIgnore: new Question(".gitignore? (yes): ", "yes"), 14 | }; 15 | 16 | const collectAnswers = async function ( 17 | questions: Question[], 18 | readlineInterface: readline.Interface 19 | ) { 20 | const qWrapper = ( 21 | question: string, 22 | cb: (err: Error | null, data: string) => void 23 | ) => { 24 | readlineInterface.question(question, (answer) => cb(null, answer)); 25 | }; 26 | const ask = util.promisify(qWrapper); 27 | for (const question of questions) { 28 | const answer = await ask(question.question); 29 | if (answer.length > 0) question.answer = answer; 30 | } 31 | readlineInterface.close(); 32 | }; 33 | 34 | const main = async function () { 35 | const rl = readline.createInterface({ 36 | input: process.stdin, 37 | output: process.stdout, 38 | terminal: false, 39 | }); 40 | await collectAnswers(Object.values(questions), rl); 41 | console.log("Scaffolding your project 🪄"); 42 | try { 43 | scaffold(process.cwd(), questions); 44 | } catch (err) { 45 | console.log((err as Error).message); 46 | return; 47 | } 48 | console.log("Done 🎉"); 49 | }; 50 | 51 | main(); 52 | -------------------------------------------------------------------------------- /src/questions.ts: -------------------------------------------------------------------------------- 1 | export class Question { 2 | constructor(public question: string, public answer: string) {} 3 | } 4 | 5 | export interface IQuestions { 6 | projectName: Question; 7 | entryPoint: Question; 8 | outputName: Question; 9 | debugConfig: Question; 10 | gitIgnore: Question; 11 | } 12 | -------------------------------------------------------------------------------- /src/scaffold.ts: -------------------------------------------------------------------------------- 1 | import { IQuestions } from "./questions"; 2 | import fs from "fs"; 3 | import path from "path"; 4 | import url from "url"; 5 | import { exec } from "child_process"; 6 | 7 | const createFolder = (dir: string, projectName: string): string => { 8 | const fullDir = path.join(dir, projectName); 9 | try { 10 | fs.mkdirSync(fullDir); 11 | } catch (err) { 12 | throw err; 13 | } 14 | return fullDir; 15 | }; 16 | 17 | const scaffoldFile = ( 18 | fileDir: string, 19 | newFileDir: string, 20 | replaced?: string, 21 | replacing?: string 22 | ) => { 23 | try { 24 | let file = fs.readFileSync(fileDir, { encoding: "utf8" }); 25 | if (replaced && replacing) file = file.replace(replaced, replacing); 26 | fs.writeFileSync(newFileDir, file); 27 | } catch (err) { 28 | throw err; 29 | } 30 | }; 31 | 32 | export const scaffold = function (cwd: string, questions: IQuestions) { 33 | try { 34 | const projectDir = createFolder(cwd, questions.projectName.answer); 35 | 36 | const templateDir = 37 | path.dirname(url.fileURLToPath(import.meta.url)) + "/../template"; 38 | 39 | const inProjectDir = (filename: string) => path.join(projectDir, filename); 40 | const inTemplateDir = (filename: string) => 41 | path.join(templateDir, filename); 42 | 43 | scaffoldFile( 44 | inTemplateDir("Makefile"), 45 | inProjectDir("Makefile"), 46 | "NAME=program", 47 | `NAME=${questions.outputName.answer}` 48 | ); 49 | if (questions.gitIgnore.answer.toLowerCase() == "yes") { 50 | exec(`git init ${questions.projectName.answer}`); 51 | scaffoldFile( 52 | inTemplateDir("/gitignore"), 53 | inProjectDir("/.gitignore"), 54 | "program", 55 | `${questions.outputName.answer}` 56 | ); 57 | } 58 | createFolder(projectDir, "src"); 59 | scaffoldFile( 60 | inTemplateDir("src/main.c"), 61 | inProjectDir(`src/${questions.entryPoint.answer}`), 62 | '#include "../include/program.h"', 63 | `#include "../include/${questions.outputName.answer}.h"` 64 | ); 65 | createFolder(projectDir, "include"); 66 | scaffoldFile( 67 | inTemplateDir("include/program.h"), 68 | inProjectDir(`include/${questions.outputName.answer}.h`) 69 | ); 70 | if (questions.debugConfig.answer.toLowerCase() == "yes") { 71 | createFolder(projectDir, ".vscode"); 72 | scaffoldFile( 73 | inTemplateDir(".vscode/launch.json"), 74 | inProjectDir(`.vscode/launch.json`), 75 | '"program": "${workspaceFolder}/program",', 76 | `"program": "\${workspaceFolder}/${questions.outputName.answer}",` 77 | ); 78 | scaffoldFile( 79 | inTemplateDir(".vscode/tasks.json"), 80 | inProjectDir(".vscode/tasks.json") 81 | ); 82 | } 83 | } catch (err) { 84 | throw err; 85 | } 86 | }; 87 | -------------------------------------------------------------------------------- /template/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "(lldb) Launch", 9 | "type": "cppdbg", 10 | "request": "launch", 11 | "program": "${workspaceFolder}/program", 12 | "args": [], 13 | "stopAtEntry": false, 14 | "cwd": "${fileDirname}", 15 | "environment": [], 16 | "externalConsole": false, 17 | "MIMode": "lldb", 18 | "preLaunchTask": "make" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /template/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [{ 4 | "label": "make", 5 | "command": "make", // Could be any other shell command 6 | "args": [], 7 | "type": "shell" 8 | }] 9 | } 10 | -------------------------------------------------------------------------------- /template/Makefile: -------------------------------------------------------------------------------- 1 | CC=gcc 2 | SRC=src/main.c 3 | INCLUDE=include/*.h 4 | DEPS= $(SRC) $(INCLUDE) 5 | CFLAGS=-Wall -Wextra -Werror 6 | DFLAGS=-g -fsanitize=address 7 | NAME=program 8 | 9 | all: $(NAME) 10 | 11 | $(NAME): $(DEPS) 12 | $(CC) $(CFLAGS) $(DFLAGS) $(SRC) -o $(NAME) 13 | 14 | clean: 15 | rm -rf $(NAME) 16 | 17 | fclean: clean 18 | 19 | re: clean all 20 | 21 | test: 22 | echo "no test specified" 23 | 24 | .PHONY: all clean fclean re test 25 | -------------------------------------------------------------------------------- /template/gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Object files 5 | *.o 6 | *.ko 7 | *.obj 8 | *.elf 9 | 10 | # Linker output 11 | *.ilk 12 | *.map 13 | *.exp 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Libraries 20 | *.lib 21 | *.a 22 | *.la 23 | *.lo 24 | 25 | # Shared objects (inc. Windows DLLs) 26 | *.dll 27 | *.so 28 | *.so.* 29 | *.dylib 30 | 31 | # Executables 32 | *.exe 33 | *.out 34 | *.app 35 | *.i*86 36 | *.x86_64 37 | *.hex 38 | program 39 | 40 | # Debug files 41 | *.dSYM/ 42 | *.su 43 | *.idb 44 | *.pdb 45 | 46 | # Kernel Module Compile Results 47 | *.mod* 48 | *.cmd 49 | .tmp_versions/ 50 | modules.order 51 | Module.symvers 52 | Mkfile.old 53 | dkms.conf 54 | 55 | # OS 56 | .DS_Store 57 | -------------------------------------------------------------------------------- /template/include/program.h: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /template/src/main.c: -------------------------------------------------------------------------------- 1 | #include "../include/program.h" 2 | 3 | int main(void) 4 | { 5 | write(1, "Hello", 5); 6 | return (0); 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es3", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "esNext", /* Specify what module code is generated. */ 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 36 | // "resolveJsonModule": true, /* Enable importing .json files */ 37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 38 | 39 | /* JavaScript Support */ 40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 43 | 44 | /* Emit */ 45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 48 | "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 49 | // "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. */ 50 | "outDir": "./dist", /* Specify an output folder for all emitted files. */ 51 | "removeComments": true, /* Disable emitting comments. */ 52 | // "noEmit": true, /* Disable emitting files from a compilation. */ 53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 61 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 67 | 68 | /* Interop Constraints */ 69 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 70 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 71 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 72 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 73 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 74 | 75 | /* Type Checking */ 76 | "strict": true, /* Enable all strict type-checking options. */ 77 | "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 78 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 79 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 80 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 81 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 82 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 83 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 84 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 85 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 86 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 87 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 88 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 89 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 90 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 91 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 92 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 93 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 94 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 95 | 96 | /* Completeness */ 97 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 98 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 99 | } 100 | } 101 | --------------------------------------------------------------------------------