diff --git a/.mocharc.js b/.mocharc.js index 768c03711..77056d59a 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -3,14 +3,14 @@ const args = process.argv.slice(2); function isFileArg(file) { return ( - /\.(j|t)s$/.test(file) || + /\.(j|t|cj|mj|ct|mt)s$/.test(file) || (fs.existsSync(file) && fs.statSync(file).isDirectory()) ); } const spec = args.some(isFileArg) ? args.filter(isFileArg) - : 'packages/*/!(integration-tests)/test/{*.{js,ts},**/*.{test,spec}.{js,ts}}'; + : 'packages/*/!(integration-tests)/test/{*.{js,ts,cts,mts,cjs,mjs},**/*.{test,spec}.{js,ts,mts,cts,cjs,mjs}}'; module.exports = { spec, diff --git a/package.json b/package.json index d244a88ee..45d52315f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "test:js": "yarn test:js:unit && yarn test:integration", "test:js:coverage": "yarn nyc yarn test:js:unit", "test:js:coverage:report": "yarn nyc report --reporter=html-spa", - "test:js:unit": "cross-env NODE_ENV=test mocha --conditions=development --timeout 5000", + "test:js:unit": "cross-env NODE_ENV=test mocha --conditions=\"@atlaspack::sources\" --timeout 5000", "test:unit": "yarn test:js:unit && cargo test", "dev:release": "SKIP_PLUGIN_COMPATIBILITY_CHECK=true lerna publish -y --canary --preid dev --dist-tag=dev --exact --force-publish=* --no-git-tag-version --no-push", "canary:release": "SKIP_PLUGIN_COMPATIBILITY_CHECK=true lerna publish -y --canary --preid canary --dist-tag=canary --exact --force-publish=* --no-git-tag-version --no-push", diff --git a/packages/core/core/package.json b/packages/core/core/package.json index b75bd4657..2e240bcd6 100644 --- a/packages/core/core/package.json +++ b/packages/core/core/package.json @@ -59,7 +59,7 @@ "./*": "./*", ".": "./lib/index.js", "./worker": { - "development": "./src/worker.js", + "@atlaspack::sources": "./src/worker.js", "default": "./lib/worker.js" } }, diff --git a/packages/core/integration-tests/test/bundler.js b/packages/core/integration-tests/test/bundler.js index bc3099a11..28d47e607 100644 --- a/packages/core/integration-tests/test/bundler.js +++ b/packages/core/integration-tests/test/bundler.js @@ -1473,14 +1473,14 @@ describe('bundler', function () { { "extends": "@atlaspack/config-default", "transformers": { - "*.js": ["./transformer.js", "..."], + "*.js": ["./transformer.cjs", "..."], } } - transformer.js: - import { Transformer } from '@atlaspack/plugin'; + transformer.cjs: + const { Transformer } = require('@atlaspack/plugin'); - export default new Transformer({ + module.exports = new Transformer({ transform({asset}) { if (asset.filePath.endsWith('.html')) { asset.isBundleSplittable = false; diff --git a/packages/core/logger/package.json b/packages/core/logger/package.json index d7fff5684..b95d149a9 100644 --- a/packages/core/logger/package.json +++ b/packages/core/logger/package.json @@ -12,6 +12,12 @@ }, "main": "lib/Logger.js", "source": "src/Logger.js", + "exports": { + ".": { + "@atlaspack::sources": "./src/Logger.js", + "default": "./lib/Logger.js" + } + }, "engines": { "node": ">= 16.0.0" }, diff --git a/packages/core/workers/package.json b/packages/core/workers/package.json index 7b41b9652..fefd18554 100644 --- a/packages/core/workers/package.json +++ b/packages/core/workers/package.json @@ -16,6 +16,20 @@ "engines": { "node": ">= 16.0.0" }, + "exports": { + ".": { + "types": "./index.d.ts", + "@atlaspack::sources": "./src/index.js", + "default": "./lib/index.js" + } + }, + "imports": { + "#atlaspack/workers": { + "types": "./index.d.ts", + "@atlaspack::sources": "./src/index.js", + "default": "./lib/index.js" + } + }, "dependencies": { "@atlaspack/build-cache": "2.12.0", "@atlaspack/diagnostic": "2.12.0", diff --git a/packages/core/workers/test/integration/workerfarm/console.js b/packages/core/workers/test/integration/workerfarm/console.js index 9236647f5..d94c6bd87 100644 --- a/packages/core/workers/test/integration/workerfarm/console.js +++ b/packages/core/workers/test/integration/workerfarm/console.js @@ -1,4 +1,4 @@ -const WorkerFarm = require('../../../src/WorkerFarm').default; +const WorkerFarm = require('#atlaspack/workers').default; function run() { if (WorkerFarm.isWorker()) { diff --git a/packages/core/workers/test/integration/workerfarm/ipc-pid.js b/packages/core/workers/test/integration/workerfarm/ipc-pid.js index 6b7cc04e3..1907d42cf 100644 --- a/packages/core/workers/test/integration/workerfarm/ipc-pid.js +++ b/packages/core/workers/test/integration/workerfarm/ipc-pid.js @@ -1,4 +1,4 @@ -const WorkerFarm = require('../../../src/WorkerFarm').default; +const WorkerFarm = require('#atlaspack/workers').default; function run(api) { let result = [process.pid]; diff --git a/packages/core/workers/test/integration/workerfarm/ipc.js b/packages/core/workers/test/integration/workerfarm/ipc.js index cca118219..203bd90a8 100644 --- a/packages/core/workers/test/integration/workerfarm/ipc.js +++ b/packages/core/workers/test/integration/workerfarm/ipc.js @@ -1,4 +1,4 @@ -const WorkerFarm = require('../../../src/WorkerFarm').default; +const WorkerFarm = require('#atlaspack/workers').default; function run(api, a, b) { return api.callMaster({ diff --git a/packages/core/workers/test/integration/workerfarm/logging.js b/packages/core/workers/test/integration/workerfarm/logging.js index 94410fb82..0e87b75b3 100644 --- a/packages/core/workers/test/integration/workerfarm/logging.js +++ b/packages/core/workers/test/integration/workerfarm/logging.js @@ -1,4 +1,4 @@ -const WorkerFarm = require('../../../src/WorkerFarm').default; +const WorkerFarm = require('#atlaspack/workers').default; const Logger = require('@atlaspack/logger').default; function run() { diff --git a/packages/core/workers/test/workerfarm.js b/packages/core/workers/test/workerfarm.test.cjs similarity index 97% rename from packages/core/workers/test/workerfarm.js rename to packages/core/workers/test/workerfarm.test.cjs index 2beec389e..ef4a23463 100644 --- a/packages/core/workers/test/workerfarm.js +++ b/packages/core/workers/test/workerfarm.test.cjs @@ -1,7 +1,8 @@ -// @flow -import Logger from '@atlaspack/logger'; -import assert from 'assert'; -import WorkerFarm from '../src'; +// NOTE: @atlaspack/logger exports object instances from the module. +// If there are issues, check all imports are using the same module instance/path +const Logger = require('@atlaspack/logger').default; +const assert = require('assert'); +const WorkerFarm = require('#atlaspack/workers').default; describe('WorkerFarm', function () { this.timeout(30000); diff --git a/packages/dev/babel-register/index.js b/packages/dev/babel-register/index.js index 6ab8e53b4..b461349dd 100644 --- a/packages/dev/babel-register/index.js +++ b/packages/dev/babel-register/index.js @@ -1,5 +1,6 @@ const parcelBabelPreset = require('@atlaspack/babel-preset'); const path = require('path'); +const fs = require('fs'); require('@babel/register')({ cwd: path.join(__dirname, '../../..'), @@ -11,11 +12,21 @@ require('@babel/register')({ (filepath) => filepath.endsWith('.js') && filepath.includes('/core/integration-tests/test/integration'), + // Include tests + (filepath) => + filepath.endsWith('.js') && + !fs.readFileSync(filepath, 'utf8').trim().startsWith('// @flow'), ], only: [path.join(__dirname, '../../..')], presets: [parcelBabelPreset], plugins: [require('./babel-plugin-module-translate')], - extensions: ['.js', '.jsx', '.ts', '.tsx'], + extensions: ['.js', '.jsx'], +}); + +// This only support transpiling TypeScript to CJS +// eslint-disable-next-line import/no-extraneous-dependencies +require('esbuild-register/dist/node').register({ + extensions: ['.ts', '.cts', '.mts'], }); // This adds the registration to the Node args, which are passed diff --git a/packages/dev/babel-register/package.json b/packages/dev/babel-register/package.json index c8e493e06..02c0d65f1 100644 --- a/packages/dev/babel-register/package.json +++ b/packages/dev/babel-register/package.json @@ -11,7 +11,8 @@ "dependencies": { "@babel/register": "^7.22.5", "@atlaspack/babel-preset": "2.12.0", - "resolve": "^1.12.0" + "resolve": "^1.12.0", + "esbuild-register": "^3.5.0" }, "peerDependencies": { "@babel/core": "^7.22.11" diff --git a/packages/runtimes/js/src/helpers/bundle-url-common.ts b/packages/runtimes/js/src/helpers/bundle-url-common.cts similarity index 100% rename from packages/runtimes/js/src/helpers/bundle-url-common.ts rename to packages/runtimes/js/src/helpers/bundle-url-common.cts diff --git a/packages/runtimes/js/src/helpers/bundle-url-shards.ts b/packages/runtimes/js/src/helpers/bundle-url-shards.cts similarity index 99% rename from packages/runtimes/js/src/helpers/bundle-url-shards.ts rename to packages/runtimes/js/src/helpers/bundle-url-shards.cts index 23d928a95..ab79740ee 100644 --- a/packages/runtimes/js/src/helpers/bundle-url-shards.ts +++ b/packages/runtimes/js/src/helpers/bundle-url-shards.cts @@ -1,4 +1,4 @@ -const {getBaseURL, stackTraceUrlRegexp} = require('./bundle-url-common'); +const {getBaseURL, stackTraceUrlRegexp} = require('./bundle-url-common.cts'); const bundleURL: Record<string, string> = {}; diff --git a/packages/runtimes/js/src/helpers/bundle-url.ts b/packages/runtimes/js/src/helpers/bundle-url.cts similarity index 98% rename from packages/runtimes/js/src/helpers/bundle-url.ts rename to packages/runtimes/js/src/helpers/bundle-url.cts index 48f6fc1a3..679a7a9d5 100644 --- a/packages/runtimes/js/src/helpers/bundle-url.ts +++ b/packages/runtimes/js/src/helpers/bundle-url.cts @@ -1,4 +1,4 @@ -const {getBaseURL, stackTraceUrlRegexp} = require('./bundle-url-common'); +const {getBaseURL, stackTraceUrlRegexp} = require('./bundle-url-common.cts'); const bundleURL = {}; diff --git a/packages/runtimes/js/test/bundle-url-shards.test.js b/packages/runtimes/js/test/bundle-url-shards.test.js index cfd6186ed..ff52b1b58 100644 --- a/packages/runtimes/js/test/bundle-url-shards.test.js +++ b/packages/runtimes/js/test/bundle-url-shards.test.js @@ -4,7 +4,7 @@ import assert from 'assert'; import {fsFixture, overlayFS, bundle} from '@atlaspack/test-utils'; // $FlowFixMe importing TypeScript -import {getShardedBundleURL} from '../src/helpers/bundle-url-shards'; +import {getShardedBundleURL} from '../src/helpers/bundle-url-shards.cts'; const createErrorStack = (url) => { // This error stack is copied from a local dev, with a bunch