kibana/tsconfig.base.json
Frank Hassanabad fcf86628a0
Adds missing DOM.Iterable (#115218)
## Summary

It was brought to our attention from security solutions that developers found we are missing the iterators and entries and others from TypeScript that are available when you include within `lib` `DOM.iterable`.

For example without it you cannot use `entries` like this:

<img width="985" alt="Screen Shot 2021-10-15 at 9 10 17 AM" src="https://user-images.githubusercontent.com/1151048/137512234-d14dc43c-129a-49d4-bc6c-410baf2d46f7.png">

Until you add it within he base config. Developers are indicating they noticed that workarounds such as lodash or casting is possible but I think this is the wrong direction to go and it's just an oversight that we missed adding the `DOM.iterable` unless someone tells us otherwise. If it is intentional to omit I would like to add docs to the `tsconfig.base.json` about why we omit it for programmers to understand the intention and why we should discourage use or recommend a library such as lodash instead.
2021-10-18 13:22:49 -04:00

76 lines
3 KiB
JSON

{
"compilerOptions": {
"baseUrl": ".",
"paths": {
// Setup @kbn paths for Bazel compilations
"@kbn/*": [
"node_modules/@kbn/*",
"bazel-out/darwin-fastbuild/bin/packages/kbn-*",
"bazel-out/k8-fastbuild/bin/packages/kbn-*",
"bazel-out/x64_windows-fastbuild/bin/packages/kbn-*",
],
// Allows for importing from `kibana` package for the exported types.
"kibana": ["./kibana"],
"kibana/public": ["src/core/public"],
"kibana/server": ["src/core/server"],
"@emotion/core": [
"typings/@emotion"
],
},
// Support .tsx files and transform JSX into calls to React.createElement
"jsx": "react",
// Enables all strict type checking options.
"strict": true,
// All TS projects should be composite and only include the files they select, and ref the files outside of the project
"composite": true,
// save information about the project graph on disk
"incremental": true,
// Do not check d.ts files by default
"skipLibCheck": true,
// enables "core language features"
"lib": [
"esnext",
// includes support for browser APIs
"dom",
"DOM.Iterable"
],
// Node 8 should support everything output by esnext, we override this
// in webpack with loader-level compiler options
"target": "esnext",
// Use commonjs for node, overridden in webpack to keep import statements
// to maintain support for things like `await import()`
"module": "commonjs",
// Allows default imports from modules with no default export. This does not affect code emit, just type checking.
// We have to enable this option explicitly since `esModuleInterop` doesn't enable it automatically when ES2015 or
// ESNext module format is used.
"allowSyntheticDefaultImports": true,
// Emits __importStar and __importDefault helpers for runtime babel ecosystem compatibility.
"esModuleInterop": true,
// Resolve modules in the same way as Node.js. Aka make `require` works the
// same in TypeScript as it does in Node.js.
"moduleResolution": "node",
// "resolveJsonModule" allows for importing, extracting types from and generating .json files.
"resolveJsonModule": true,
// Do not resolve symlinks to their real path; treat a symlinked file like a real one.
"preserveSymlinks": true,
// Disallow inconsistently-cased references to the same file.
"forceConsistentCasingInFileNames": false,
// Forbid unused local variables as the rule was deprecated by ts-lint
"noUnusedLocals": true,
// Provide full support for iterables in for..of, spread and destructuring when targeting ES5 or ES3.
"downlevelIteration": true,
// import tslib helpers rather than inlining helpers for iteration or spreading, for instance
"importHelpers": true,
// adding global typings
"types": [
"node",
"jest",
"flot",
"jest-styled-components",
"@testing-library/jest-dom",
"resize-observer-polyfill",
"@emotion/react/types/css-prop"
]
}
}