├── .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 |
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 |
--------------------------------------------------------------------------------