Upgrade XO and apply fixes
This commit is contained in:
parent
1ae15b27c2
commit
56e3b15c02
5 changed files with 43 additions and 43 deletions
30
index.js
30
index.js
|
|
@ -4,8 +4,8 @@ import {pathToFileURL} from 'node:url';
|
|||
import escapeStringRegexp from 'escape-string-regexp';
|
||||
import {execa} from 'execa';
|
||||
|
||||
const pkg = JSON.parse(fs.readFileSync(new URL('package.json', import.meta.url)));
|
||||
const help = `See https://github.com/avajs/typescript/blob/v${pkg.version}/README.md`;
|
||||
const package_ = JSON.parse(fs.readFileSync(new URL('package.json', import.meta.url)));
|
||||
const help = `See https://github.com/avajs/typescript/blob/v${package_.version}/README.md`;
|
||||
|
||||
function isPlainObject(x) {
|
||||
return x !== null && typeof x === 'object' && Reflect.getPrototypeOf(x) === Object.prototype;
|
||||
|
|
@ -36,8 +36,8 @@ function validate(target, properties) {
|
|||
}
|
||||
}
|
||||
|
||||
async function compileTypeScript(projectDir) {
|
||||
return execa('tsc', ['--incremental'], {preferLocal: true, cwd: projectDir});
|
||||
async function compileTypeScript(projectDirectory) {
|
||||
return execa('tsc', ['--incremental'], {preferLocal: true, cwd: projectDirectory});
|
||||
}
|
||||
|
||||
const configProperties = {
|
||||
|
|
@ -62,7 +62,7 @@ const configProperties = {
|
|||
isValid(extensions) {
|
||||
return Array.isArray(extensions)
|
||||
&& extensions.length > 0
|
||||
&& extensions.every(ext => typeof ext === 'string' && ext !== '')
|
||||
&& extensions.every(extension => typeof extension === 'string' && extension !== '')
|
||||
&& new Set(extensions).size === extensions.length;
|
||||
},
|
||||
},
|
||||
|
|
@ -75,7 +75,7 @@ const changeInterpretations = Object.freeze(Object.assign(Object.create(null), {
|
|||
}));
|
||||
|
||||
export default function typescriptProvider({negotiateProtocol}) {
|
||||
const protocol = negotiateProtocol(['ava-6'], {version: pkg.version});
|
||||
const protocol = negotiateProtocol(['ava-6'], {version: package_.version});
|
||||
if (protocol === null) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -98,7 +98,7 @@ export default function typescriptProvider({negotiateProtocol}) {
|
|||
path.join(protocol.projectDir, from),
|
||||
path.join(protocol.projectDir, to),
|
||||
]);
|
||||
const testFileExtension = new RegExp(`\\.(${extensions.map(ext => escapeStringRegexp(ext)).join('|')})$`);
|
||||
const testFileExtension = new RegExp(`\\.(${extensions.map(extension => escapeStringRegexp(extension)).join('|')})$`);
|
||||
|
||||
const watchMode = {
|
||||
changeInterpretations,
|
||||
|
|
@ -245,21 +245,21 @@ export default function typescriptProvider({negotiateProtocol}) {
|
|||
|
||||
worker({extensionsToLoadAsModules, state: {extensions, rewritePaths}}) {
|
||||
const importJs = extensionsToLoadAsModules.includes('js');
|
||||
const testFileExtension = new RegExp(`\\.(${extensions.map(ext => escapeStringRegexp(ext)).join('|')})$`);
|
||||
const testFileExtension = new RegExp(`\\.(${extensions.map(extension => escapeStringRegexp(extension)).join('|')})$`);
|
||||
|
||||
return {
|
||||
canLoad(ref) {
|
||||
return testFileExtension.test(ref) && rewritePaths.some(([from]) => ref.startsWith(from));
|
||||
canLoad(reference) {
|
||||
return testFileExtension.test(reference) && rewritePaths.some(([from]) => reference.startsWith(from));
|
||||
},
|
||||
|
||||
async load(ref, {requireFn}) {
|
||||
const [from, to] = rewritePaths.find(([from]) => ref.startsWith(from));
|
||||
let rewritten = `${to}${ref.slice(from.length)}`;
|
||||
async load(reference, {requireFn}) {
|
||||
const [from, to] = rewritePaths.find(([from]) => reference.startsWith(from));
|
||||
let rewritten = `${to}${reference.slice(from.length)}`;
|
||||
let useImport = true;
|
||||
if (ref.endsWith('.cts')) {
|
||||
if (reference.endsWith('.cts')) {
|
||||
rewritten = rewritten.replace(/\.cts$/, '.cjs');
|
||||
useImport = false;
|
||||
} else if (ref.endsWith('.mts')) {
|
||||
} else if (reference.endsWith('.mts')) {
|
||||
rewritten = rewritten.replace(/\.mts$/, '.mjs');
|
||||
} else {
|
||||
rewritten = rewritten.replace(testFileExtension, '.js');
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
"c8": "^8.0.0",
|
||||
"del": "^7.0.0",
|
||||
"typescript": "^5.1.3",
|
||||
"xo": "^0.54.2"
|
||||
"xo": "^0.58.0"
|
||||
},
|
||||
"c8": {
|
||||
"reporter": [
|
||||
|
|
|
|||
|
|
@ -4,20 +4,20 @@ import {fileURLToPath} from 'node:url';
|
|||
import makeProvider from '@ava/typescript';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url)));
|
||||
const package_ = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url)));
|
||||
|
||||
const createProviderMacro = (identifier, avaVersion, projectDir = __dirname) => (t, run) => run(t, makeProvider({
|
||||
const createProviderMacro = (identifier, avaVersion, projectDirectory = __dirname) => (t, run) => run(t, makeProvider({
|
||||
negotiateProtocol(identifiers, {version}) {
|
||||
t.true(identifiers.includes(identifier));
|
||||
t.is(version, pkg.version);
|
||||
t.is(version, package_.version);
|
||||
return {
|
||||
ava: {avaVersion},
|
||||
identifier,
|
||||
normalizeGlobPatterns: patterns => patterns,
|
||||
async findFiles({patterns}) {
|
||||
return patterns.map(file => path.join(projectDir, file));
|
||||
return patterns.map(file => path.join(projectDirectory, file));
|
||||
},
|
||||
projectDir,
|
||||
projectDir: projectDirectory,
|
||||
};
|
||||
},
|
||||
}));
|
||||
|
|
|
|||
6
test/fixtures/install-and-load.js
vendored
6
test/fixtures/install-and-load.js
vendored
|
|
@ -18,8 +18,8 @@ const worker = provider.worker({
|
|||
...JSON.parse(process.argv[2]),
|
||||
});
|
||||
|
||||
const ref = path.resolve(process.argv[3]);
|
||||
const reference = path.resolve(process.argv[3]);
|
||||
|
||||
if (worker.canLoad(ref)) {
|
||||
worker.load(ref, {requireFn: createRequire(import.meta.url)});
|
||||
if (worker.canLoad(reference)) {
|
||||
worker.load(reference, {requireFn: createRequire(import.meta.url)});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,13 +4,13 @@ import {fileURLToPath} from 'node:url';
|
|||
import test from 'ava';
|
||||
import createProviderMacro from './_with-provider.js';
|
||||
|
||||
const projectDir = path.dirname(fileURLToPath(import.meta.url));
|
||||
const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url)));
|
||||
const projectDirectory = path.dirname(fileURLToPath(import.meta.url));
|
||||
const package_ = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url)));
|
||||
const withProvider = createProviderMacro('ava-6', '5.3.0');
|
||||
|
||||
const validateConfig = (t, provider, config) => {
|
||||
const error = t.throws(() => provider.main({config}));
|
||||
error.message = error.message.replace(`v${pkg.version}`, 'v${pkg.version}'); // eslint-disable-line no-template-curly-in-string
|
||||
error.message = error.message.replace(`v${package_.version}`, 'v${pkg.version}'); // eslint-disable-line no-template-curly-in-string
|
||||
t.snapshot(error);
|
||||
};
|
||||
|
||||
|
|
@ -77,64 +77,64 @@ test('main() updateGlobs()', withProvider, (t, provider) => {
|
|||
|
||||
test('main() interpretChange() without compilation', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.is(main.interpretChange(path.join(projectDir, 'src/foo.ts')), main.changeInterpretations.waitForOutOfBandCompilation);
|
||||
t.is(main.interpretChange(path.join(projectDir, 'build/foo.js')), main.changeInterpretations.unspecified);
|
||||
t.is(main.interpretChange(path.join(projectDir, 'src/foo.txt')), main.changeInterpretations.unspecified);
|
||||
t.is(main.interpretChange(path.join(projectDirectory, 'src/foo.ts')), main.changeInterpretations.waitForOutOfBandCompilation);
|
||||
t.is(main.interpretChange(path.join(projectDirectory, 'build/foo.js')), main.changeInterpretations.unspecified);
|
||||
t.is(main.interpretChange(path.join(projectDirectory, 'src/foo.txt')), main.changeInterpretations.unspecified);
|
||||
});
|
||||
|
||||
test('main() interpretChange() with compilation', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: 'tsc'}});
|
||||
t.is(main.interpretChange(path.join(projectDir, 'src/foo.ts')), main.changeInterpretations.unspecified);
|
||||
t.is(main.interpretChange(path.join(projectDir, 'build/foo.js')), main.changeInterpretations.ignoreCompiled);
|
||||
t.is(main.interpretChange(path.join(projectDir, 'src/foo.txt')), main.changeInterpretations.unspecified);
|
||||
t.is(main.interpretChange(path.join(projectDirectory, 'src/foo.ts')), main.changeInterpretations.unspecified);
|
||||
t.is(main.interpretChange(path.join(projectDirectory, 'build/foo.js')), main.changeInterpretations.ignoreCompiled);
|
||||
t.is(main.interpretChange(path.join(projectDirectory, 'src/foo.txt')), main.changeInterpretations.unspecified);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() with compilation', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: 'tsc'}});
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.js')), null);
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.js')), null);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() unknown extension', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.bar')), null);
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.bar')), null);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() not a build path', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'lib/foo.js')), null);
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'lib/foo.js')), null);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() .cjs but .cts not configured', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['ts'], rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.cjs')), null);
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.cjs')), null);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() .mjs but .mts not configured', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['ts'], rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.mjs')), null);
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.mjs')), null);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() .js but .ts not configured', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['cts'], rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.js')), null);
|
||||
t.is(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.js')), null);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() .cjs and .cjs and .cts configured', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['cjs', 'cts'], rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.cjs')), [path.join(projectDir, 'src/foo.cjs'), path.join(projectDir, 'src/foo.cts')]);
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.cjs')), [path.join(projectDirectory, 'src/foo.cjs'), path.join(projectDirectory, 'src/foo.cts')]);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() .mjs and .mjs and .mts configured', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['mjs', 'mts'], rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.mjs')), [path.join(projectDir, 'src/foo.mjs'), path.join(projectDir, 'src/foo.mts')]);
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.mjs')), [path.join(projectDirectory, 'src/foo.mjs'), path.join(projectDirectory, 'src/foo.mts')]);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() .js and .js, .ts and .tsx configured', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['js', 'ts', 'tsx'], rewritePaths: {'src/': 'build/'}, compile: false}});
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'build/foo.js')), [path.join(projectDir, 'src/foo.js'), path.join(projectDir, 'src/foo.ts'), path.join(projectDir, 'src/foo.tsx')]);
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'build/foo.js')), [path.join(projectDirectory, 'src/foo.js'), path.join(projectDirectory, 'src/foo.ts'), path.join(projectDirectory, 'src/foo.tsx')]);
|
||||
});
|
||||
|
||||
test('main() resolvePossibleOutOfBandCompilationSources() returns the first possible path that exists', withProvider, (t, provider) => {
|
||||
const main = provider.main({config: {extensions: ['js', 'ts', 'tsx'], rewritePaths: {'fixtures/load/': 'fixtures/load/compiled/'}, compile: false}});
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDir, 'fixtures/load/compiled/index.js')), [path.join(projectDir, 'fixtures/load/index.ts')]);
|
||||
t.deepEqual(main.resolvePossibleOutOfBandCompilationSources(path.join(projectDirectory, 'fixtures/load/compiled/index.js')), [path.join(projectDirectory, 'fixtures/load/index.ts')]);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue