From efcfd62ec470b98e778a5238cd6e76e5a4563144 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 9 Aug 2022 00:12:21 +0200 Subject: [PATCH 1/4] Karma: Fix aliasing --- karma.conf.js | 103 +++++++++++------------------------ packages/preact/src/index.ts | 4 +- 2 files changed, 35 insertions(+), 72 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 98dd42a7d..c0c0eca40 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -53,14 +53,14 @@ var localLaunchers = { "--disable-gpu", "--no-gpu", // Without a remote debugging port, Google Chrome exits immediately. - "--remote-debugging-port=9333" - ] - } + "--remote-debugging-port=9333", + ], + }, }; const subPkgPath = pkgName => { if (!minify) { - return path.join(__dirname, pkgName, "src", "index.js"); + return path.join(__dirname, pkgName, "src", "index.ts"); } // Resolve from package.exports field @@ -88,58 +88,19 @@ function createEsbuildPlugin() { } const alias = { - "preact/debug": subPkgPath("./debug/"), - "preact/devtools": subPkgPath("./devtools/"), - "preact/compat": subPkgPath("./compat/"), - "preact/hooks": subPkgPath("./hooks/"), - "preact/test-utils": subPkgPath("./test-utils/"), - "preact/jsx-runtime": subPkgPath("./jsx-runtime/"), - "preact/jsx-dev-runtime": subPkgPath("./jsx-runtime/"), - preact: subPkgPath("") + "@preact/signals-core": subPkgPath("./packages/core"), + "@preact/signals": subPkgPath("./packages/preact"), }; + return { name: "custom", setup(build) { // Aliasing: If "MINIFY" is set to "true" we use the dist/ // files instead of those from src/ - build.onResolve({ filter: /^preact.*/ }, args => { + build.onResolve({ filter: /^@preact\/.*/ }, args => { const pkg = alias[args.path]; return { - path: pkg - }; - }); - - build.onResolve({ filter: /^(react|react-dom)$/ }, args => { - const pkg = alias["preact/compat"]; - return { - path: pkg - }; - }); - - // Transpile node_modules that are es2015+ to es5 for IE11 - build.onLoad({ filter: /kolorist/ }, async args => { - const contents = await fs.readFile(args.path, "utf-8"); - - const tmp = await babel.transformAsync(contents, { - filename: args.path, - presets: [ - [ - "@babel/preset-env", - { - loose: true, - modules: false, - targets: { - browsers: ["last 2 versions", "IE >= 11"] - } - } - ] - ] - }); - - return { - contents: tmp.code, - resolveDir: path.dirname(args.path), - loader: "js" + path: pkg, }; }); @@ -153,7 +114,7 @@ function createEsbuildPlugin() { return { contents: cached.result, resolveDir: path.dirname(args.path), - loader: "js" + loader: "js", }; } @@ -176,20 +137,20 @@ function createEsbuildPlugin() { loose: true, modules: false, targets: { - browsers: ["last 2 versions", "IE >= 11"] - } - } - ] + browsers: ["last 2 versions", "IE >= 11"], + }, + }, + ], ] : [], plugins: [ coverage && [ "istanbul", { - include: minify ? "**/dist/**/*.js" : "**/src/**/*.js" - } - ] - ].filter(Boolean) + include: minify ? "**/dist/**/*.js" : "**/src/**/*.js", + }, + ], + ].filter(Boolean), }); result = tmp.code || result; cache.set(args.path, { input: contents, result }); @@ -210,14 +171,14 @@ function createEsbuildPlugin() { return { contents: result, resolveDir: path.dirname(args.path), - loader: "js" + loader: "js", }; }); - } + }, }; } -module.exports = function(config) { +module.exports = function (config) { config.set({ browsers: Object.keys(localLaunchers), @@ -245,12 +206,12 @@ module.exports = function(config) { reporters: [ { type: "text-summary" }, { type: "html" }, - { type: "lcovonly", subdir: ".", file: "lcov.info" } - ] + { type: "lcovonly", subdir: ".", file: "lcov.info" }, + ], }, mochaReporter: { - showDiff: true + showDiff: true, }, browserLogOptions: { terminal: true }, @@ -269,16 +230,16 @@ module.exports = function(config) { { pattern: "packages/{core,preact}/test/**/*.test.ts", watched: false, - type: "js" - } + type: "js", + }, ], mime: { - "text/javascript": ["js", "jsx"] + "text/javascript": ["js", "jsx"], }, preprocessors: { - "packages/*/test/**/*": ["esbuild"] + "packages/*/test/**/*": ["esbuild"], }, plugins: [ @@ -287,7 +248,7 @@ module.exports = function(config) { "karma-mocha", "karma-mocha-reporter", "karma-chai-sinon", - "karma-coverage" + "karma-coverage", ], esbuild: { @@ -298,9 +259,9 @@ module.exports = function(config) { target: downlevel ? "es5" : "es2015", define: { COVERAGE: coverage, - "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || "") + "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || ""), }, - plugins: [createEsbuildPlugin()] - } + plugins: [createEsbuildPlugin()], + }, }); }; diff --git a/packages/preact/src/index.ts b/packages/preact/src/index.ts index 9d7381d29..490c12562 100644 --- a/packages/preact/src/index.ts +++ b/packages/preact/src/index.ts @@ -1 +1,3 @@ -export const foo = 42; +import { foo } from "@preact/signals-core"; + +export const bar = foo; From 87a849d54e638f61e4fccae43cc662638da14fe8 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 9 Aug 2022 00:12:38 +0200 Subject: [PATCH 2/4] Update eslint rules --- .eslintrc.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index 158621589..b48ed9e28 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,7 @@ // eslint-disable-next-line module.exports = { env: { + node: true, browser: true, es2021: true, }, @@ -14,5 +15,7 @@ module.exports = { ignorePatterns: ["**/dist/**"], rules: { "no-console": "warn", + "@typescript-eslint/no-var-requires": "off", + "no-mixed-spaces-and-tabs": "off", }, }; From 8d7adade18b68dba374db5872b6b1cb1c2d48fb7 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 9 Aug 2022 00:16:53 +0200 Subject: [PATCH 3/4] CI: Update prebuild task --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 09442a863..849b1ad57 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "private": true, "scripts": { - "prebuild": "rimraf packages/core/dist/", + "prebuild": "rimraf packages/core/dist/ packages/preact/dist", "build": "pnpm build:core && pnpm build:preact", "build:core": "microbundle --raw --cwd packages/core", "build:preact": "microbundle --raw --cwd packages/preact", From ea771fdcd06952f3ec1fc7bbcef1bfdb4d708ce3 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 9 Aug 2022 00:20:40 +0200 Subject: [PATCH 4/4] Build: Fix TypeScript setup --- packages/preact/test/example.test.ts | 4 +++- tsconfig.json | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/preact/test/example.test.ts b/packages/preact/test/example.test.ts index e0180a46c..1137e46e8 100644 --- a/packages/preact/test/example.test.ts +++ b/packages/preact/test/example.test.ts @@ -1,5 +1,7 @@ +import { bar } from "@preact/signals"; + describe("Example2", () => { it("should work", () => { - expect(1).equal(1); + expect(bar).equal(123); }); }); diff --git a/tsconfig.json b/tsconfig.json index c0b356e67..dbe8c845e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,10 @@ "strict": true, "jsx": "react", "jsxFactory": "createElement", - "jsxFragmentFactory": "Fragment" + "jsxFragmentFactory": "Fragment", + "paths": { + "@preact/signals-core": ["./packages/core/src/index.ts"], + "@preact/signals": ["./packages/preact/src/index.ts"] + } } }