From ba8fef4934c5df674320d5d5fa334d032e7434bd Mon Sep 17 00:00:00 2001 From: wessberg Date: Wed, 26 May 2021 13:45:29 +0200 Subject: [PATCH] refactor: use helper types instead of duplications --- package.json | 5 +- pnpm-lock.yaml | 53 +++++++++++-------- prettier.config.js | 1 + script/generate-built-in-module-map.ts | 4 +- src/api/transform.ts | 2 +- .../task/create-transform-task-options.ts | 2 +- src/shared/task/transform-task-options.ts | 2 +- .../built-in/built-in-module-map.ts | 2 +- src/transformer/util/element-of.ts | 7 --- src/transformer/util/path-util.ts | 2 +- src/type/type-util.ts | 2 - test/setup/execute-api.ts | 2 +- test/setup/execute-cli.ts | 2 +- test/setup/execute-rollup.ts | 2 +- test/setup/execute-transformer.ts | 2 +- test/setup/test-context.ts | 2 +- test/setup/test-file.ts | 2 +- test/setup/test-setup.ts | 2 +- tsconfig.build.json | 3 +- tsconfig.json | 3 +- 20 files changed, 53 insertions(+), 49 deletions(-) delete mode 100644 src/transformer/util/element-of.ts delete mode 100644 src/type/type-util.ts diff --git a/package.json b/package.json index 06c7d89..a93247d 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@typescript-eslint/eslint-plugin": "^4.25.0", "@typescript-eslint/parser": "^4.25.0", "@wessberg/rollup-plugin-ts": "^1.3.14", - "sandhog": "^1.0.38", + "sandhog": "^1.0.40", "@wessberg/ts-config": "^1.1.0", "ava": "^3.15.0", "eslint": "^7.27.0", @@ -82,6 +82,7 @@ "typescript": "^4.2.4", "memfs": "^3.2.2", "npm-check-updates": "^11.5.13", + "tslib": "^2.2.0", "typescript-3-2-1": "npm:typescript@4.2.3", "typescript-3-3-1": "npm:typescript@4.2.3", "typescript-3-4-1": "npm:typescript@3.4.1", @@ -101,7 +102,7 @@ "fast-glob": "^3.2.5", "reserved-words": "^0.1.2", "resolve": "^1.20.0", - "tslib": "^2.2.0" + "helpertypes": "^0.0.1" }, "peerDependencies": { "typescript": ">=3.2.x || >= 4.x" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a58016..62e4dc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,7 @@ specifiers: eslint-plugin-import: ^2.23.3 eslint-plugin-jsdoc: ^35.0.0 fast-glob: ^3.2.5 + helpertypes: ^0.0.1 husky: ^6.0.0 memfs: ^3.2.2 np: 7.5.0 @@ -31,7 +32,7 @@ specifiers: resolve: ^1.20.0 rimraf: ^3.0.2 rollup: ^2.50.1 - sandhog: ^1.0.38 + sandhog: ^1.0.40 semver: 7.3.5 slash: 3.0.0 standard-changelog: ^2.0.27 @@ -57,7 +58,6 @@ dependencies: reserved-words: 0.1.2 resolve: 1.20.0 slash: 3.0.0 - tslib: 2.2.0 devDependencies: "@rollup/plugin-node-resolve": 13.0.0_rollup@2.50.1 @@ -75,6 +75,7 @@ devDependencies: eslint-config-prettier: 8.3.0_eslint@7.27.0 eslint-plugin-import: 2.23.3_eslint@7.27.0 eslint-plugin-jsdoc: 35.0.0_eslint@7.27.0 + helpertypes: 0.0.1 husky: 6.0.0 memfs: 3.2.2 np: 7.5.0 @@ -84,10 +85,11 @@ devDependencies: pretty-quick: 3.1.0_prettier@2.3.0 rimraf: 3.0.2 rollup: 2.50.1 - sandhog: 1.0.38 + sandhog: 1.0.40 semver: 7.3.5 standard-changelog: 2.0.27 ts-node: 10.0.0_d2424d8ba14dff607ab94d9707a8bf6b + tslib: 2.2.0 typescript: 4.2.4 typescript-3-2-1: /typescript/4.2.3 typescript-3-3-1: /typescript/4.2.3 @@ -199,8 +201,8 @@ packages: regexpu-core: 4.7.1 dev: true - /@babel/helper-define-polyfill-provider/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-x3AUTVZNPunaw1opRTa5OwVA5N0YxGlIad9xQ5QflK1uIS7PnAGGU5O2Dj/G183fR//N8AzTq+Q8+oiu9m0VFg==} + /@babel/helper-define-polyfill-provider/0.2.3_@babel+core@7.14.3: + resolution: {integrity: sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==} peerDependencies: "@babel/core": ^7.4.0-0 dependencies: @@ -940,9 +942,9 @@ packages: "@babel/core": 7.14.3 "@babel/helper-module-imports": 7.13.12 "@babel/helper-plugin-utils": 7.13.0 - babel-plugin-polyfill-corejs2: 0.2.1_@babel+core@7.14.3 - babel-plugin-polyfill-corejs3: 0.2.1_@babel+core@7.14.3 - babel-plugin-polyfill-regenerator: 0.2.1_@babel+core@7.14.3 + babel-plugin-polyfill-corejs2: 0.2.2_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.2.2_@babel+core@7.14.3 + babel-plugin-polyfill-regenerator: 0.2.2_@babel+core@7.14.3 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -1087,9 +1089,9 @@ packages: "@babel/plugin-transform-unicode-regex": 7.12.13_@babel+core@7.14.3 "@babel/preset-modules": 0.1.4_@babel+core@7.14.3 "@babel/types": 7.14.2 - babel-plugin-polyfill-corejs2: 0.2.1_@babel+core@7.14.3 - babel-plugin-polyfill-corejs3: 0.2.1_@babel+core@7.14.3 - babel-plugin-polyfill-regenerator: 0.2.1_@babel+core@7.14.3 + babel-plugin-polyfill-corejs2: 0.2.2_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.2.2_@babel+core@7.14.3 + babel-plugin-polyfill-regenerator: 0.2.2_@babel+core@7.14.3 core-js-compat: 3.13.0 semver: 6.3.0 transitivePeerDependencies: @@ -2024,38 +2026,38 @@ packages: object.assign: 4.1.2 dev: true - /babel-plugin-polyfill-corejs2/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-hXGSPbr6IbjeMyGew+3uGIAkRjBFSOJ9FLDZNOfHuyJZCcoia4nd/72J0bSgvfytcVfUcP/dxEVcUhVJuQRtSw==} + /babel-plugin-polyfill-corejs2/0.2.2_@babel+core@7.14.3: + resolution: {integrity: sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==} peerDependencies: "@babel/core": ^7.0.0-0 dependencies: "@babel/compat-data": 7.14.0 "@babel/core": 7.14.3 - "@babel/helper-define-polyfill-provider": 0.2.1_@babel+core@7.14.3 + "@babel/helper-define-polyfill-provider": 0.2.3_@babel+core@7.14.3 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-WZCqF3DLUhdTD/P381MDJfuP18hdCZ+iqJ+wHtzhWENpsiof284JJ1tMQg1CE+hfCWyG48F7e5gDMk2c3Laz7w==} + /babel-plugin-polyfill-corejs3/0.2.2_@babel+core@7.14.3: + resolution: {integrity: sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A==} peerDependencies: "@babel/core": ^7.0.0-0 dependencies: "@babel/core": 7.14.3 - "@babel/helper-define-polyfill-provider": 0.2.1_@babel+core@7.14.3 + "@babel/helper-define-polyfill-provider": 0.2.3_@babel+core@7.14.3 core-js-compat: 3.13.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-T3bYyL3Sll2EtC94v3f+fA8M28q7YPTOZdB++SRHjvYZTvtd+WorMUq3tDTD4Q7Kjk1LG0gGromslKjcO5p2TA==} + /babel-plugin-polyfill-regenerator/0.2.2_@babel+core@7.14.3: + resolution: {integrity: sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==} peerDependencies: "@babel/core": ^7.0.0-0 dependencies: "@babel/core": 7.14.3 - "@babel/helper-define-polyfill-provider": 0.2.1_@babel+core@7.14.3 + "@babel/helper-define-polyfill-provider": 0.2.3_@babel+core@7.14.3 transitivePeerDependencies: - supports-color dev: true @@ -3765,6 +3767,11 @@ packages: dependencies: function-bind: 1.1.1 + /helpertypes/0.0.1: + resolution: {integrity: sha512-aNME00V4Q1qn1cWG+cM65W6C+sZoUvk+qR1sfGkYRDvDDqfT9xD6/+I1dry3h4mq76BQTl/8oWq/mY/jueOhbg==} + engines: {node: ">=10.0.0"} + dev: true + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -6331,8 +6338,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sandhog/1.0.38: - resolution: {integrity: sha512-VGgiMX1oLBQIYYPWDSw3JOF7glEeoi3DoPlfg4rlkhVzvArZXKOhv2ALv+wSRPXBYLomJMy7FwJQZAoqMRgkCw==} + /sandhog/1.0.40: + resolution: {integrity: sha512-uWZFAOoyloa6TsJxPY0Sb40sRi6k3M7/FRB71EpsQ9EGYY7nLlQDRJata7YrFOfe2LNxxCiQT3WKba2uLW4Idw==} engines: {node: ">=10.0.0"} hasBin: true dependencies: @@ -6340,6 +6347,7 @@ packages: chalk: 4.1.1 commander: 7.2.0 eslint: 7.27.0 + helpertypes: 0.0.1 inquirer: 8.1.0 json5: 2.2.0 markdown-toc: 1.2.0 @@ -6968,6 +6976,7 @@ packages: /tslib/2.2.0: resolution: {integrity: sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==} + dev: true /tsutils/3.21.0_typescript@4.2.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} diff --git a/prettier.config.js b/prettier.config.js index 761a1ff..b0d76b9 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-require-imports module.exports = require("@wessberg/ts-config/prettier.config"); diff --git a/script/generate-built-in-module-map.ts b/script/generate-built-in-module-map.ts index d4054f0..801219c 100644 --- a/script/generate-built-in-module-map.ts +++ b/script/generate-built-in-module-map.ts @@ -2,7 +2,7 @@ import Module from "module"; import {join} from "path"; import {existsSync, mkdirSync, writeFileSync} from "fs"; import {format} from "prettier"; -// @ts-ignore + import prettierConfig from "../prettier.config.js"; const IGNORED_MODULE_NAMES = new Set([ @@ -54,7 +54,7 @@ function generateBuiltInModule(): string { * @file This file is auto-generated. Do not change its contents. */ -import {ElementOf} from "../util/element-of"; +import {ElementOf} from "helpertypes"; import {ModuleExports} from "../module-exports/module-exports"; export const BUILT_IN_MODULE = new Set([ diff --git a/src/api/transform.ts b/src/api/transform.ts index c68816c..81e0d0b 100644 --- a/src/api/transform.ts +++ b/src/api/transform.ts @@ -1,8 +1,8 @@ import {transformTask} from "../cli/task/transform/transform-task"; import {createTransformTaskOptions} from "../shared/task/create-transform-task-options"; import {TransformTaskOptions} from "../shared/task/transform-task-options"; -import {PartialExcept} from "../type/type-util"; import {TransformResult} from "../shared/task/transform-result"; +import {PartialExcept} from "helpertypes"; export async function transform(options: PartialExcept): Promise { return transformTask(createTransformTaskOptions(options)); diff --git a/src/shared/task/create-transform-task-options.ts b/src/shared/task/create-transform-task-options.ts index 1bd51a4..1ce7541 100644 --- a/src/shared/task/create-transform-task-options.ts +++ b/src/shared/task/create-transform-task-options.ts @@ -1,9 +1,9 @@ import {realFileSystem} from "../file-system/file-system"; import {TransformTaskOptions} from "./transform-task-options"; import {createTaskOptions} from "./create-task-options"; -import {PartialExcept} from "../../type/type-util"; import {isAbsolute, join} from "../../transformer/util/path-util"; import {ensureArray} from "../util/util"; +import {PartialExcept} from "helpertypes"; export function createTransformTaskOptions({ fileSystem = realFileSystem, diff --git a/src/shared/task/transform-task-options.ts b/src/shared/task/transform-task-options.ts index f11a9f8..145a9df 100644 --- a/src/shared/task/transform-task-options.ts +++ b/src/shared/task/transform-task-options.ts @@ -1,6 +1,6 @@ import {TaskOptions} from "./task-options"; -import {MaybeArray} from "../../type/type-util"; import {FileSystem} from "../file-system/file-system"; +import {MaybeArray} from "helpertypes"; export interface TransformHooks { /** diff --git a/src/transformer/built-in/built-in-module-map.ts b/src/transformer/built-in/built-in-module-map.ts index 10ee777..04b9efe 100644 --- a/src/transformer/built-in/built-in-module-map.ts +++ b/src/transformer/built-in/built-in-module-map.ts @@ -3,7 +3,7 @@ * @file This file is auto-generated. Do not change its contents. */ -import {ElementOf} from "../util/element-of"; +import {ElementOf} from "helpertypes"; import {ModuleExports} from "../module-exports/module-exports"; export const BUILT_IN_MODULE = new Set([ diff --git a/src/transformer/util/element-of.ts b/src/transformer/util/element-of.ts deleted file mode 100644 index 9f68b6e..0000000 --- a/src/transformer/util/element-of.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type ElementOf = ArrayType extends (infer ElementType)[] - ? ElementType - : ArrayType extends readonly (infer ReadonlyElementType)[] - ? ReadonlyElementType - : ArrayType extends Set - ? SetElementType - : never; diff --git a/src/transformer/util/path-util.ts b/src/transformer/util/path-util.ts index 47cba27..6b12afd 100644 --- a/src/transformer/util/path-util.ts +++ b/src/transformer/util/path-util.ts @@ -1,6 +1,6 @@ import path, {ParsedPath} from "path"; import slash from "slash"; -import {ElementOf} from "./element-of"; +import {ElementOf} from "helpertypes"; export const KNOWN_EXTENSIONS = [".d.ts", ".d.dts.map", ".js.map", ".ts", ".tsx", ".js", ".jsx", ".mjs", ".mjsx", ".json", ".tsbuildinfo"] as const; diff --git a/src/type/type-util.ts b/src/type/type-util.ts deleted file mode 100644 index 5ef5db2..0000000 --- a/src/type/type-util.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type MaybeArray = T[] | T; -export type PartialExcept = Omit, K> & Pick; diff --git a/test/setup/execute-api.ts b/test/setup/execute-api.ts index c88f98e..de16ae0 100644 --- a/test/setup/execute-api.ts +++ b/test/setup/execute-api.ts @@ -1,9 +1,9 @@ import {TestFile} from "./test-file"; import {TestContext} from "./test-context"; -import {MaybeArray} from "../../src/type/type-util"; import {createTestSetup} from "./test-setup"; import {transform} from "../../src/api/transform"; import {createTestResult, TestResult} from "./test-result"; +import {MaybeArray} from "helpertypes"; /** * Prepares a test via the transform function diff --git a/test/setup/execute-cli.ts b/test/setup/execute-cli.ts index 463b658..1d687fc 100644 --- a/test/setup/execute-cli.ts +++ b/test/setup/execute-cli.ts @@ -1,11 +1,11 @@ import {TestFile} from "./test-file"; import {TestContext} from "./test-context"; -import {MaybeArray} from "../../src/type/type-util"; import {createTestSetup} from "./test-setup"; import {configureCommands} from "../../src/cli/configure-commands"; import {shouldDebug} from "../../src/transformer/util/should-debug"; import {join, relative} from "../../src/transformer/util/path-util"; import {createTestResult, TestResult} from "./test-result"; +import {MaybeArray} from "helpertypes"; export interface CliTestContext extends TestContext { args: string[]; diff --git a/test/setup/execute-rollup.ts b/test/setup/execute-rollup.ts index 50eed60..0056512 100644 --- a/test/setup/execute-rollup.ts +++ b/test/setup/execute-rollup.ts @@ -3,10 +3,10 @@ import typescriptRollupPlugin from "@wessberg/rollup-plugin-ts"; import nodeResolve from "@rollup/plugin-node-resolve"; import {cjsToEsm} from "../../src/transformer/cjs-to-esm"; import {dirname, isAbsolute, join, nativeNormalize, normalize} from "../../src/transformer/util/path-util"; -import {MaybeArray} from "../../src/type/type-util"; import {TestFile} from "./test-file"; import {TestContext} from "./test-context"; import {createTestSetup} from "./test-setup"; +import {MaybeArray} from "helpertypes"; export interface RollupTestContext extends TestContext { rollupOptions: Partial; diff --git a/test/setup/execute-transformer.ts b/test/setup/execute-transformer.ts index cdb821b..4904ac1 100644 --- a/test/setup/execute-transformer.ts +++ b/test/setup/execute-transformer.ts @@ -4,8 +4,8 @@ import {normalize} from "../../src/transformer/util/path-util"; import {createTestResult, TestResult} from "./test-result"; import {TestFile} from "./test-file"; import {TestContext} from "./test-context"; -import {MaybeArray} from "../../src/type/type-util"; import {createTestSetup} from "./test-setup"; +import {MaybeArray} from "helpertypes"; /** * Prepares a test diff --git a/test/setup/test-context.ts b/test/setup/test-context.ts index c45ba85..62f8381 100644 --- a/test/setup/test-context.ts +++ b/test/setup/test-context.ts @@ -1,7 +1,7 @@ import {isInDebugMode} from "../util/is-in-debug-mode"; import * as TSModule from "typescript"; -import {PartialExcept} from "../../src/type/type-util"; import {TransformTaskOptions} from "../../src/shared/task/transform-task-options"; +import {PartialExcept} from "helpertypes"; export interface TestContext extends PartialExcept {} diff --git a/test/setup/test-file.ts b/test/setup/test-file.ts index 4d88320..12783db 100644 --- a/test/setup/test-file.ts +++ b/test/setup/test-file.ts @@ -1,7 +1,7 @@ import {join} from "../../src/transformer/util/path-util"; import {TestContext} from "./test-context"; -import {MaybeArray} from "../../src/type/type-util"; import {ensureArray, generateRandomPath} from "../../src/shared/util/util"; +import {MaybeArray} from "helpertypes"; export interface TestFileRecord { fileName: string; diff --git a/test/setup/test-setup.ts b/test/setup/test-setup.ts index 6eb9dea..cd5a6c5 100644 --- a/test/setup/test-setup.ts +++ b/test/setup/test-setup.ts @@ -1,10 +1,10 @@ import {createTestContext, TestContext} from "./test-context"; import {FileSystem} from "../../src/shared/file-system/file-system"; import {createTestFileStructure, TestFile, TestFileStructure} from "./test-file"; -import {MaybeArray} from "../../src/type/type-util"; import {createVirtualFileSystem} from "./create-virtual-file-system"; import {TS} from "../../src/type/ts"; import {createCompilerHost} from "../../src/shared/compiler-host/create-compiler-host"; +import {MaybeArray} from "helpertypes"; export interface TestSetup { context: TestContext; diff --git a/tsconfig.build.json b/tsconfig.build.json index 52b3f14..b5d3a6f 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -3,6 +3,7 @@ "include": ["src/**/*.*"], "compilerOptions": { "declaration": true, - "declarationMap": true + "declarationMap": true, + "allowJs": false } } diff --git a/tsconfig.json b/tsconfig.json index 922cd91..7d279d7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "module": "commonjs", "target": "es2018", - "resolveJsonModule": true + "resolveJsonModule": true, + "allowJs": true } }