From 5409aaed647e282e43852955f576a241f33e41ec Mon Sep 17 00:00:00 2001 From: Simon Alling Date: Wed, 31 Jul 2024 22:05:56 +0200 Subject: [PATCH] =?UTF-8?q?refactor!:=20Clarify=20build-time=E2=80=93run-t?= =?UTF-8?q?ime=20distinction=20(#104)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR modifies the public API in an attempt to clarify the distinction between the build-time and the run-time parts of Userscripter. This should help users not accidentally import a build-time module in run-time code, which results in a completely incomprehensible wall of error messages since #96 (v3.0.0). Consumers will have to adapt as follows: * ```diff -import … from "userscripter/build"; +import … from "userscripter/build-time"; ``` * ```diff -import … from "userscripter/lib/foo"; +import … from "userscripter/run-time/foo"; ``` This command should make the required changes in a typical Git-tracked userscript: ```bash for f in $(git ls-files "$(git rev-parse --show-toplevel)"); do sed -i 's#userscripter/build#userscripter/build-time#g' $f sed -i 's#userscripter/lib#userscripter/run-time#g' $f done ``` 💡 `git show --color-words='build-time|\w+|.'` --- .eslintignore | 4 +-- .gitignore | 4 +-- README.md | 2 +- __tests__/api.test.ts | 14 ++++---- __tests__/operations.test.ts | 8 ++--- __tests__/sass.test.ts | 4 +-- package.json | 34 +++++++++---------- src/{build => build-time}/index.ts | 0 .../internal/configuration.ts | 0 .../internal/messages.ts | 0 src/{build => build-time}/internal/mode.ts | 0 src/{build => build-time}/internal/parsing.ts | 0 src/{build => build-time}/internal/sass.ts | 0 .../internal/utilities.ts | 0 .../internal/validation.ts | 0 .../internal/webpack-plugin.ts | 0 src/{build => build-time}/internal/webpack.ts | 0 .../node-sass-utils.d.ts | 0 src/{lib => run-time}/environment.ts | 0 src/{lib => run-time}/errors.ts | 0 src/{lib => run-time}/index.ts | 0 src/{lib => run-time}/log.ts | 0 src/{lib => run-time}/operations.ts | 0 src/{lib => run-time}/preferences.ts | 0 src/{lib => run-time}/stylesheets.ts | 0 src/{lib => run-time}/userscripter.ts | 0 26 files changed, 35 insertions(+), 35 deletions(-) rename src/{build => build-time}/index.ts (100%) rename src/{build => build-time}/internal/configuration.ts (100%) rename src/{build => build-time}/internal/messages.ts (100%) rename src/{build => build-time}/internal/mode.ts (100%) rename src/{build => build-time}/internal/parsing.ts (100%) rename src/{build => build-time}/internal/sass.ts (100%) rename src/{build => build-time}/internal/utilities.ts (100%) rename src/{build => build-time}/internal/validation.ts (100%) rename src/{build => build-time}/internal/webpack-plugin.ts (100%) rename src/{build => build-time}/internal/webpack.ts (100%) rename src/{build => build-time}/node-sass-utils.d.ts (100%) rename src/{lib => run-time}/environment.ts (100%) rename src/{lib => run-time}/errors.ts (100%) rename src/{lib => run-time}/index.ts (100%) rename src/{lib => run-time}/log.ts (100%) rename src/{lib => run-time}/operations.ts (100%) rename src/{lib => run-time}/preferences.ts (100%) rename src/{lib => run-time}/stylesheets.ts (100%) rename src/{lib => run-time}/userscripter.ts (100%) diff --git a/.eslintignore b/.eslintignore index 93f63e1..04f31f3 100755 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,3 @@ # Compiled files: -/build/ -/lib/ +/build-time/ +/run-time/ diff --git a/.gitignore b/.gitignore index 112fd78..2e96608 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules/ -lib/** -build/** +run-time/** +build-time/** *.tgz *.html diff --git a/README.md b/README.md index cc56d71..c7edd0c 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ USERSCRIPTER_MODE=production USERSCRIPTER_VERBOSE=true npm run build You can also customize the object _returned_ from `createWebpackConfig` in `webpack.config.ts`: ```typescript -import { createWebpackConfig } from 'userscripter/build'; +import { createWebpackConfig } from 'userscripter/build-time'; const webpackConfig = createWebpackConfig({ // … diff --git a/__tests__/api.test.ts b/__tests__/api.test.ts index c9a3208..48422a0 100644 --- a/__tests__/api.test.ts +++ b/__tests__/api.test.ts @@ -1,11 +1,11 @@ import * as fs from "fs"; import * as path from "path"; -import * as index from "../src/lib"; -import * as environment from "../src/lib/environment"; -import * as errors from "../src/lib/errors"; -import * as operations from "../src/lib/operations"; -import * as stylesheets from "../src/lib/stylesheets"; +import * as index from "../src/run-time"; +import * as environment from "../src/run-time/environment"; +import * as errors from "../src/run-time/errors"; +import * as operations from "../src/run-time/operations"; +import * as stylesheets from "../src/run-time/stylesheets"; it("exposes the intended API", () => { const a: environment.Condition = environment.ALWAYS; @@ -27,8 +27,8 @@ it("exposes the intended API", () => { expect(stylesheets.disable).toBeDefined(); }); -it("exposes everything in lib in index.ts", async () => { - const filenames = await fs.promises.readdir(path.resolve(__dirname, "..", "src", "lib")); +it("exposes everything in run-time in index.ts", async () => { + const filenames = await fs.promises.readdir(path.resolve(__dirname, "..", "src", "run-time")); expect(filenames).toEqual([ "environment.ts", "errors.ts", diff --git a/__tests__/operations.test.ts b/__tests__/operations.test.ts index 079fad5..75a35d2 100644 --- a/__tests__/operations.test.ts +++ b/__tests__/operations.test.ts @@ -1,14 +1,14 @@ -import { operations } from "../src/lib"; +import { operations } from "../src/run-time"; import { ALWAYS, DOMCONTENTLOADED, -} from "../src/lib/environment"; -import { failureDescriber } from "../src/lib/errors"; +} from "../src/run-time/environment"; +import { failureDescriber } from "../src/run-time/errors"; import { Operation, OperationAndFailure, operation, -} from "../src/lib/operations"; +} from "../src/run-time/operations"; const mockConsole = { log: (message: string) => void message, diff --git a/__tests__/sass.test.ts b/__tests__/sass.test.ts index 2356c62..387aff3 100644 --- a/__tests__/sass.test.ts +++ b/__tests__/sass.test.ts @@ -1,7 +1,7 @@ import sass from "sass"; -import { getGlobalFrom, withDartSassEncodedParameters } from "../src/build/internal/sass"; -import { DEFAULT_BUILD_CONFIG } from "../src/build/internal/webpack"; +import { getGlobalFrom, withDartSassEncodedParameters } from "../src/build-time/internal/sass"; +import { DEFAULT_BUILD_CONFIG } from "../src/build-time/internal/webpack"; import * as CONFIG from "./config-example"; diff --git a/package.json b/package.json index 153167c..8a2d372 100644 --- a/package.json +++ b/package.json @@ -22,28 +22,28 @@ "bugs": { "url": "https://github.com/simonalling/userscripter/issues" }, - "main": "lib/index", + "main": "run-time/index", "exports": { ".": { - "import": "./lib/index.mjs", - "require": "./lib/index.js" + "import": "./run-time/index.mjs", + "require": "./run-time/index.js" }, - "./build": { - "import": "./build/index.mjs", - "require": "./build/index.js" + "./build-time": { + "import": "./build-time/index.mjs", + "require": "./build-time/index.js" }, - "./lib/*": { - "import": "./lib/*.mjs", - "require": "./lib/*.js" + "./run-time/*": { + "import": "./run-time/*.mjs", + "require": "./run-time/*.js" } }, "typesVersions": { "*": { - "build": [ - "./build/index.d.ts" + "build-time": [ + "./build-time/index.d.ts" ], - "lib/*": [ - "./lib/*.d.ts" + "run-time/*": [ + "./run-time/*.d.ts" ], "*": [ "This prevents imports of internal modules from compiling in TypeScript." @@ -51,8 +51,8 @@ } }, "files": [ - "build/*", - "lib/*" + "build-time/*", + "run-time/*" ], "scripts": { "build-cjs": "npm run clean && npm run compile-cjs", @@ -60,10 +60,10 @@ "compile-cjs": "tsc -d --module CommonJS -p .", "compile-esm": "tsc -d -p .", "build": "npm run clean && npm run compile-esm && npm run rename && npm run compile-cjs", - "clean": "rimraf lib build", + "clean": "rimraf run-time build-time", "lint": "eslint . --ext .ts", "prepublishOnly": "npm run verify && cli-confirm 'Publish?'", - "rename": "renamer --force --find \"/\\.js$/\" --replace \".mjs\" \"lib/**\" \"build/**\"", + "rename": "renamer --force --find \"/\\.js$/\" --replace \".mjs\" \"run-time/**\" \"build-time/**\"", "test": "npm run lint && npm run jest", "jest": "jest --config ./jest.config.mjs", "verify": "npm ci && repository-check-dirty && npm run build && npm test && npm pack" diff --git a/src/build/index.ts b/src/build-time/index.ts similarity index 100% rename from src/build/index.ts rename to src/build-time/index.ts diff --git a/src/build/internal/configuration.ts b/src/build-time/internal/configuration.ts similarity index 100% rename from src/build/internal/configuration.ts rename to src/build-time/internal/configuration.ts diff --git a/src/build/internal/messages.ts b/src/build-time/internal/messages.ts similarity index 100% rename from src/build/internal/messages.ts rename to src/build-time/internal/messages.ts diff --git a/src/build/internal/mode.ts b/src/build-time/internal/mode.ts similarity index 100% rename from src/build/internal/mode.ts rename to src/build-time/internal/mode.ts diff --git a/src/build/internal/parsing.ts b/src/build-time/internal/parsing.ts similarity index 100% rename from src/build/internal/parsing.ts rename to src/build-time/internal/parsing.ts diff --git a/src/build/internal/sass.ts b/src/build-time/internal/sass.ts similarity index 100% rename from src/build/internal/sass.ts rename to src/build-time/internal/sass.ts diff --git a/src/build/internal/utilities.ts b/src/build-time/internal/utilities.ts similarity index 100% rename from src/build/internal/utilities.ts rename to src/build-time/internal/utilities.ts diff --git a/src/build/internal/validation.ts b/src/build-time/internal/validation.ts similarity index 100% rename from src/build/internal/validation.ts rename to src/build-time/internal/validation.ts diff --git a/src/build/internal/webpack-plugin.ts b/src/build-time/internal/webpack-plugin.ts similarity index 100% rename from src/build/internal/webpack-plugin.ts rename to src/build-time/internal/webpack-plugin.ts diff --git a/src/build/internal/webpack.ts b/src/build-time/internal/webpack.ts similarity index 100% rename from src/build/internal/webpack.ts rename to src/build-time/internal/webpack.ts diff --git a/src/build/node-sass-utils.d.ts b/src/build-time/node-sass-utils.d.ts similarity index 100% rename from src/build/node-sass-utils.d.ts rename to src/build-time/node-sass-utils.d.ts diff --git a/src/lib/environment.ts b/src/run-time/environment.ts similarity index 100% rename from src/lib/environment.ts rename to src/run-time/environment.ts diff --git a/src/lib/errors.ts b/src/run-time/errors.ts similarity index 100% rename from src/lib/errors.ts rename to src/run-time/errors.ts diff --git a/src/lib/index.ts b/src/run-time/index.ts similarity index 100% rename from src/lib/index.ts rename to src/run-time/index.ts diff --git a/src/lib/log.ts b/src/run-time/log.ts similarity index 100% rename from src/lib/log.ts rename to src/run-time/log.ts diff --git a/src/lib/operations.ts b/src/run-time/operations.ts similarity index 100% rename from src/lib/operations.ts rename to src/run-time/operations.ts diff --git a/src/lib/preferences.ts b/src/run-time/preferences.ts similarity index 100% rename from src/lib/preferences.ts rename to src/run-time/preferences.ts diff --git a/src/lib/stylesheets.ts b/src/run-time/stylesheets.ts similarity index 100% rename from src/lib/stylesheets.ts rename to src/run-time/stylesheets.ts diff --git a/src/lib/userscripter.ts b/src/run-time/userscripter.ts similarity index 100% rename from src/lib/userscripter.ts rename to src/run-time/userscripter.ts