Skip to content

Commit

Permalink
add undetermined
Browse files Browse the repository at this point in the history
  • Loading branch information
baseballyama committed Jan 7, 2025
1 parent 280ae67 commit afd422d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
23 changes: 9 additions & 14 deletions packages/eslint-plugin-svelte/src/utils/svelte-context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import { getFilename, getSourceCode } from './compat.js';
const isRunInBrowser = !fs.readFileSync;

export type SvelteContext = {
svelteVersion: '3/4' | '5';
svelteVersion: '3/4' | '5' | 'undetermined';
svelteFileType: '.svelte' | '.svelte.[js|ts]' | null;
runes: boolean;
runes: boolean | 'undetermined';
svelteKitVersion: '1-next' | '1' | '2' | null;
svelteKitFileType:
| '+page.svelte'
Expand Down Expand Up @@ -150,12 +150,15 @@ function getSvelteKitVersion(filePath: string): SvelteContext['svelteKitVersion'
}
}

function getSvelteVersion(compilerVersion: string): SvelteContext['svelteVersion'] {
function getSvelteVersion(compilerVersion: string | undefined): SvelteContext['svelteVersion'] {
if (compilerVersion == null) {
return 'undetermined';
}
const version = parseInt(compilerVersion.split('.')[0], 10);
if (version === 3 || version === 4) {
return '3/4';
}
return '5';
return String(version) as '5';
}

/**
Expand All @@ -173,21 +176,13 @@ function getProjectRootDir(filePath: string): string | null {
export function getSvelteContext(context: RuleContext): SvelteContext | null {
const { parserServices } = getSourceCode(context);
const { svelteParseContext } = parserServices;
if (svelteParseContext === undefined) {
return null;
}

const { compilerVersion } = svelteParseContext;
if (compilerVersion === undefined) {
return null;
}

const compilerVersion = svelteParseContext?.compilerVersion;
const filePath = getFilename(context);
const svelteKitContext = getSvelteKitContext(context);

return {
svelteVersion: getSvelteVersion(compilerVersion),
runes: svelteParseContext.runes === true,
runes: svelteParseContext?.runes ?? 'undetermined',
svelteFileType: getSvelteFileType(filePath),
svelteKitVersion: svelteKitContext.svelteKitVersion,
svelteKitFileType: svelteKitContext.svelteKitFileType
Expand Down
20 changes: 20 additions & 0 deletions packages/eslint-plugin-svelte/tests/src/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ const actualSvelte5: Parameters<typeof shouldRun>[0] = {
svelteKitFileType: null
};

const actualUndetermined: Parameters<typeof shouldRun>[0] = {
svelteVersion: '5',
svelteFileType: '.svelte',
runes: 'undetermined',
svelteKitVersion: null,
svelteKitFileType: null
};

const actualSvelte5Script: Parameters<typeof shouldRun>[0] = {
svelteVersion: '5',
svelteFileType: '.svelte.[js|ts]',
Expand Down Expand Up @@ -143,6 +151,18 @@ describe('shouldRun', () => {
);
});

it('undetermined true', () => {
assert.strictEqual(
shouldRun(actualUndetermined, [
{
svelteVersions: ['5'],
runes: ['undetermined']
}
]),
true
);
});

it('real - svelte3', () => {
assert.strictEqual(
shouldRun(actualSvelte3, [
Expand Down

0 comments on commit afd422d

Please sign in to comment.