diff --git a/__tests__/baselines/lib.ts b/__tests__/baselines/lib.ts new file mode 100644 index 00000000..dd1fceca --- /dev/null +++ b/__tests__/baselines/lib.ts @@ -0,0 +1,90 @@ +/** + * @file Test Baselines - LIB + * @module tests/baselines/LIB + */ + +export default [ + 'decorators.legacy', + 'decorators', + 'dom.iterable', + 'dom', + 'es5', + 'es6', + 'es7', + 'es2015.collection', + 'es2015.core', + 'es2015.generator', + 'es2015.iterable', + 'es2015.promise', + 'es2015.proxy', + 'es2015.reflect', + 'es2015.symbol.wellknown', + 'es2015.symbol', + 'es2015', + 'es2016.array.include', + 'es2016.full', + 'es2016', + 'es2017.full', + 'es2017.intl', + 'es2017.object', + 'es2017.sharedmemory', + 'es2017.string', + 'es2017.typedarrays', + 'es2017', + 'es2018.asyncgenerator', + 'es2018.asynciterable', + 'es2018.full', + 'es2018.intl', + 'es2018.promise', + 'es2018.regexp', + 'es2018', + 'es2019.array', + 'es2019.full', + 'es2019.intl', + 'es2019.object', + 'es2019.string', + 'es2019.symbol', + 'es2019', + 'es2020.bigint', + 'es2020.date', + 'es2020.full', + 'es2020.intl', + 'es2020.number', + 'es2020.promise', + 'es2020.sharedmemory', + 'es2020.string', + 'es2020.symbol.wellknown', + 'es2020', + 'es2021.full', + 'es2021.intl', + 'es2021.promise', + 'es2021.string', + 'es2021.weakref', + 'es2021', + 'es2022.array', + 'es2022.error', + 'es2022.full', + 'es2022.intl', + 'es2022.object', + 'es2022.regexp', + 'es2022.sharedmemory', + 'es2022.string', + 'es2022', + 'es2023.array', + 'es2023.full', + 'es2023', + 'esnext.array', + 'esnext.asynciterable', + 'esnext.bigint', + 'esnext.full', + 'esnext.intl', + 'esnext.promise', + 'esnext.string', + 'esnext.symbol', + 'esnext.weakref', + 'esnext', + 'scripthost', + 'webworker.importscripts', + 'webworker.iterable', + 'webworker' +] as const diff --git a/package.json b/package.json index 51236574..4deeb55d 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "@flex-development/errnode": "1.5.0", "@flex-development/mlly": "1.0.0-alpha.9", "@flex-development/pathe": "1.0.3", - "@flex-development/tsconfig-types": "3.0.0", + "@flex-development/tsconfig-types": "3.2.0", "@flex-development/tutils": "6.0.0-alpha.10", "merge-anything": "5.1.4", "sort-keys": "5.0.0", diff --git a/src/utils/__tests__/lib.spec-d.ts b/src/utils/__tests__/lib.spec-d.ts new file mode 100644 index 00000000..d4e486f1 --- /dev/null +++ b/src/utils/__tests__/lib.spec-d.ts @@ -0,0 +1,17 @@ +/** + * @file Type Tests - LIB + * @module tsconfig-utils/utils/tests/unit-d/LIB + */ + +import type { Lib, LibFile } from '@flex-development/tsconfig-types' +import type TEST_SUBJECT from '../lib' + +describe('unit-d:utils/LIB', () => { + it('should equal type of Map, LibFile>', () => { + // Arrange + type Expected = Map, LibFile> + + // Expect + expectTypeOf().toEqualTypeOf() + }) +}) diff --git a/src/utils/__tests__/lib.spec.ts b/src/utils/__tests__/lib.spec.ts new file mode 100644 index 00000000..72517e36 --- /dev/null +++ b/src/utils/__tests__/lib.spec.ts @@ -0,0 +1,23 @@ +/** + * @file Unit Tests - LIB + * @module tsconfig-utils/utils/tests/unit/LIB + */ + +import BASELINE from '#tests/baselines/lib' +import TEST_SUBJECT from '../lib' + +describe('unit:utils/LIB', () => { + it('should be instance of Map', () => { + expect(TEST_SUBJECT).to.be.instanceof(Map) + }) + + it('should contain lib names', () => { + expect([...TEST_SUBJECT.keys()]).to.deep.equal(BASELINE) + }) + + it('should map lib names to lib filenames', () => { + for (const [name, filename] of TEST_SUBJECT.entries()) { + expect(filename).to.equal(`lib.${name}.d.ts`) + } + }) +}) diff --git a/src/utils/index.ts b/src/utils/index.ts index d0da1e43..58559e6b 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -4,6 +4,7 @@ */ export { default as COMPILER_OPTIONS } from './compiler-options' +export { default as LIB } from './lib' export { default as loadCompilerOptions } from './load-compiler-options' export { default as loadLibConfig } from './load-lib-config' export { default as loadPathAliases } from './load-path-aliases' diff --git a/src/utils/lib.ts b/src/utils/lib.ts new file mode 100644 index 00000000..aab851fe --- /dev/null +++ b/src/utils/lib.ts @@ -0,0 +1,104 @@ +/** + * @file Utilities - LIB + * @module tsconfig-utils/utils/LIB + */ + +import type { Lib, LibFile } from '@flex-development/tsconfig-types' + +/** + * Maps lowercase [lib names][1] to files in the `node_modules/typescript/lib` + * directory. + * + * [1]: https://www.typescriptlang.org/tsconfig#lib + * + * @const {Map, LibFile>} LIB + */ +const LIB: Map, LibFile> = new Map, LibFile>( + [ + 'decorators.legacy', + 'decorators', + 'dom.iterable', + 'dom', + 'es5', + 'es6', + 'es7', + 'es2015.collection', + 'es2015.core', + 'es2015.generator', + 'es2015.iterable', + 'es2015.promise', + 'es2015.proxy', + 'es2015.reflect', + 'es2015.symbol.wellknown', + 'es2015.symbol', + 'es2015', + 'es2016.array.include', + 'es2016.full', + 'es2016', + 'es2017.full', + 'es2017.intl', + 'es2017.object', + 'es2017.sharedmemory', + 'es2017.string', + 'es2017.typedarrays', + 'es2017', + 'es2018.asyncgenerator', + 'es2018.asynciterable', + 'es2018.full', + 'es2018.intl', + 'es2018.promise', + 'es2018.regexp', + 'es2018', + 'es2019.array', + 'es2019.full', + 'es2019.intl', + 'es2019.object', + 'es2019.string', + 'es2019.symbol', + 'es2019', + 'es2020.bigint', + 'es2020.date', + 'es2020.full', + 'es2020.intl', + 'es2020.number', + 'es2020.promise', + 'es2020.sharedmemory', + 'es2020.string', + 'es2020.symbol.wellknown', + 'es2020', + 'es2021.full', + 'es2021.intl', + 'es2021.promise', + 'es2021.string', + 'es2021.weakref', + 'es2021', + 'es2022.array', + 'es2022.error', + 'es2022.full', + 'es2022.intl', + 'es2022.object', + 'es2022.regexp', + 'es2022.sharedmemory', + 'es2022.string', + 'es2022', + 'es2023.array', + 'es2023.full', + 'es2023', + 'esnext.array', + 'esnext.asynciterable', + 'esnext.bigint', + 'esnext.full', + 'esnext.intl', + 'esnext.promise', + 'esnext.string', + 'esnext.symbol', + 'esnext.weakref', + 'esnext', + 'scripthost', + 'webworker.importscripts', + 'webworker.iterable', + 'webworker' + ].map(name => [name, `lib.${name}.d.ts`] as [Lowercase, LibFile]) +) + +export default LIB diff --git a/yarn.lock b/yarn.lock index 0a15a518..ef58fa80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1299,13 +1299,13 @@ __metadata: languageName: node linkType: hard -"@flex-development/tsconfig-types@npm:3.0.0": - version: 3.0.0 - resolution: "@flex-development/tsconfig-types@npm:3.0.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40flex-development%2Ftsconfig-types%2F3.0.0%2Ffcd2cf1f02f3377a624b44c74aad985ee804121c" +"@flex-development/tsconfig-types@npm:3.2.0": + version: 3.2.0 + resolution: "@flex-development/tsconfig-types@npm:3.2.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40flex-development%2Ftsconfig-types%2F3.2.0%2Fe49eb5faa42583a340fdff7c9ec64ac5feaf4529" dependencies: "@flex-development/pkg-types": "npm:2.0.0" "@flex-development/tutils": "npm:6.0.0-alpha.10" - checksum: ad6d09fd4ac41349d928f10a77bf83d23c02215c0036a4794b49d825a693b310c043204440e47ac2bb3aa10a64c26f729a97ef6d1240d50daaa1a8f25af51fae + checksum: 3955eb124d092798c32f3d72f8b9c79e97464ad3f20521b448f1432a64762f939f04fb983299d5d38c5e0963ab4efad71f9e262a27101cc4e571e1e50f5afdf8 languageName: node linkType: hard @@ -1320,7 +1320,7 @@ __metadata: "@flex-development/mkbuild": "npm:1.0.0-alpha.9" "@flex-development/mlly": "npm:1.0.0-alpha.9" "@flex-development/pathe": "npm:1.0.3" - "@flex-development/tsconfig-types": "npm:3.0.0" + "@flex-development/tsconfig-types": "npm:3.2.0" "@flex-development/tutils": "npm:6.0.0-alpha.10" "@graphql-eslint/eslint-plugin": "npm:3.15.0" "@types/chai": "npm:4.3.4"