Skip to content

Commit 5b218d4

Browse files
authored
fix: Change imports to use .js to make them compatible with eslint-plugin-import (#1667)
@amannn Following our conversation on X, these are the changes that I've made that appear to be fixing the imports when the `import/named` ESLint rule is used. As mentioned before, I also took the liberty of adding the ESLint rule `'import/extensions': 'error'` to ensure the right extensions are used in the import/export statements. For context, when compiling to ESM modules, TS copies over the import/export statements as-is, so during development, runtime compatible file extensions must be used. For local testing I ran a build and then manually copied over the `dist` folder into `node_modules/next-intl` in my other project.
1 parent 5ec7f45 commit 5b218d4

File tree

126 files changed

+322
-330
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+322
-330
lines changed

packages/next-intl/eslint.config.mjs

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default (await getPresets('typescript', 'react', 'vitest')).concat({
2727
'@typescript-eslint/consistent-type-imports': 'error',
2828
'@typescript-eslint/consistent-type-exports': 'error',
2929
'@typescript-eslint/no-import-type-side-effects': 'error',
30-
'import/no-duplicates': ['error', {'prefer-inline': true}]
30+
'import/no-duplicates': ['error', {'prefer-inline': true}],
31+
'import/extensions': 'error'
3132
}
3233
});

packages/next-intl/src/index.react-client.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
* from `./react-server` instead.
77
*/
88

9-
export * from './react-client/index.tsx';
9+
export * from './react-client/index.js';
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from './react-server/index.tsx';
1+
export * from './react-server/index.js';

packages/next-intl/src/middleware.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export {default} from './middleware/index.tsx';
1+
export {default} from './middleware/index.js';

packages/next-intl/src/middleware/getAlternateLinksHeaderValue.test.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import {NextRequest} from 'next/server.js';
44
import {afterEach, beforeEach, describe, expect, it} from 'vitest';
5-
import {receiveRoutingConfig} from '../routing/config.tsx';
6-
import type {Pathnames} from '../routing.tsx';
7-
import getAlternateLinksHeaderValue from './getAlternateLinksHeaderValue.tsx';
5+
import {receiveRoutingConfig} from '../routing/config.js';
6+
import type {Pathnames} from '../routing.js';
7+
import getAlternateLinksHeaderValue from './getAlternateLinksHeaderValue.js';
88

99
describe.each([{basePath: undefined}, {basePath: '/base'}])(
1010
'basePath: $basePath',

packages/next-intl/src/middleware/getAlternateLinksHeaderValue.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import type {NextRequest} from 'next/server.js';
2-
import type {ResolvedRoutingConfig} from '../routing/config.tsx';
2+
import type {ResolvedRoutingConfig} from '../routing/config.js';
33
import type {
44
DomainsConfig,
55
LocalePrefixMode,
66
Locales,
77
Pathnames
8-
} from '../routing/types.tsx';
9-
import {normalizeTrailingSlash} from '../shared/utils.tsx';
8+
} from '../routing/types.js';
9+
import {normalizeTrailingSlash} from '../shared/utils.js';
1010
import {
1111
applyBasePath,
1212
formatTemplatePathname,
1313
getHost,
1414
getLocalePrefixes,
1515
getNormalizedPathname,
1616
isLocaleSupportedOnDomain
17-
} from './utils.tsx';
17+
} from './utils.js';
1818

1919
/**
2020
* See https://developers.google.com/search/docs/specialty/international/localized-versions

packages/next-intl/src/middleware/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
* The middleware, available as `next-intl/middleware`.
33
*/
44

5-
export {default} from './middleware.tsx';
5+
export {default} from './middleware.js';

packages/next-intl/src/middleware/middleware.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import {
1212
it,
1313
vi
1414
} from 'vitest';
15-
import createMiddleware from '../middleware.tsx';
16-
import {type Pathnames, defineRouting} from '../routing.tsx';
15+
import createMiddleware from '../middleware.js';
16+
import {type Pathnames, defineRouting} from '../routing.js';
1717

1818
const COOKIE_LOCALE_NAME = 'NEXT_LOCALE';
1919

packages/next-intl/src/middleware/middleware.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import {type NextRequest, NextResponse} from 'next/server.js';
2-
import {type RoutingConfig, receiveRoutingConfig} from '../routing/config.tsx';
2+
import {type RoutingConfig, receiveRoutingConfig} from '../routing/config.js';
33
import type {
44
DomainsConfig,
55
LocalePrefixMode,
66
Locales,
77
Pathnames
8-
} from '../routing/types.tsx';
9-
import {HEADER_LOCALE_NAME} from '../shared/constants.tsx';
8+
} from '../routing/types.js';
9+
import {HEADER_LOCALE_NAME} from '../shared/constants.js';
1010
import {
1111
getLocalePrefix,
1212
matchesPathname,
1313
normalizeTrailingSlash
14-
} from '../shared/utils.tsx';
15-
import getAlternateLinksHeaderValue from './getAlternateLinksHeaderValue.tsx';
16-
import resolveLocale from './resolveLocale.tsx';
17-
import syncCookie from './syncCookie.tsx';
14+
} from '../shared/utils.js';
15+
import getAlternateLinksHeaderValue from './getAlternateLinksHeaderValue.js';
16+
import resolveLocale from './resolveLocale.js';
17+
import syncCookie from './syncCookie.js';
1818
import {
1919
applyBasePath,
2020
formatPathname,
@@ -26,7 +26,7 @@ import {
2626
getPathnameMatch,
2727
isLocaleSupportedOnDomain,
2828
sanitizePathname
29-
} from './utils.tsx';
29+
} from './utils.js';
3030

3131
export default function createMiddleware<
3232
const AppLocales extends Locales,

packages/next-intl/src/middleware/resolveLocale.test.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {describe, expect, it} from 'vitest';
2-
import {getAcceptLanguageLocale} from './resolveLocale.tsx';
2+
import {getAcceptLanguageLocale} from './resolveLocale.js';
33

44
describe('getAcceptLanguageLocale', () => {
55
it('resolves a more specific locale to a generic one', () => {

packages/next-intl/src/middleware/resolveLocale.tsx

+3-7
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,15 @@ import {match} from '@formatjs/intl-localematcher';
22
import Negotiator from 'negotiator';
33
import type {RequestCookies} from 'next/dist/server/web/spec-extension/cookies.js';
44
import type {Locale} from 'use-intl';
5-
import type {ResolvedRoutingConfig} from '../routing/config.tsx';
5+
import type {ResolvedRoutingConfig} from '../routing/config.js';
66
import type {
77
DomainConfig,
88
DomainsConfig,
99
LocalePrefixMode,
1010
Locales,
1111
Pathnames
12-
} from '../routing/types.tsx';
13-
import {
14-
getHost,
15-
getPathnameMatch,
16-
isLocaleSupportedOnDomain
17-
} from './utils.tsx';
12+
} from '../routing/types.js';
13+
import {getHost, getPathnameMatch, isLocaleSupportedOnDomain} from './utils.js';
1814

1915
function findDomainFromHost<AppLocales extends Locales>(
2016
requestHeaders: Headers,

packages/next-intl/src/middleware/syncCookie.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ import type {Locale} from 'use-intl';
33
import type {
44
InitializedLocaleCookieConfig,
55
ResolvedRoutingConfig
6-
} from '../routing/config.tsx';
6+
} from '../routing/config.js';
77
import type {
88
DomainConfig,
99
DomainsConfig,
1010
LocalePrefixMode,
1111
Locales,
1212
Pathnames
13-
} from '../routing/types.tsx';
14-
import {getAcceptLanguageLocale} from './resolveLocale.tsx';
13+
} from '../routing/types.js';
14+
import {getAcceptLanguageLocale} from './resolveLocale.js';
1515

1616
export default function syncCookie<
1717
AppLocales extends Locales,

packages/next-intl/src/middleware/utils.test.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
getNormalizedPathname,
66
getPathnameMatch,
77
getRouteParams
8-
} from './utils.tsx';
8+
} from './utils.js';
99

1010
describe('getNormalizedPathname', () => {
1111
it('should return the normalized pathname', () => {

packages/next-intl/src/middleware/utils.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import type {
66
LocalePrefixMode,
77
Locales,
88
Pathnames
9-
} from '../routing/types.tsx';
9+
} from '../routing/types.js';
1010
import {
1111
getLocalePrefix,
1212
getSortedPathnames,
1313
matchesPathname,
1414
normalizeTrailingSlash,
1515
prefixPathname,
1616
templateToRegex
17-
} from '../shared/utils.tsx';
17+
} from '../shared/utils.js';
1818

1919
export function getFirstPathnameSegment(pathname: string) {
2020
return pathname.split('/')[1];
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from './navigation/react-client/index.tsx';
1+
export * from './navigation/react-client/index.js';
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from './navigation/react-server/index.tsx';
1+
export * from './navigation/react-server/index.js';

packages/next-intl/src/navigation/createNavigation.test.tsx

+4-8
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@ import {
77
import {renderToString} from 'react-dom/server';
88
import {type Locale, useLocale} from 'use-intl';
99
import {beforeEach, describe, expect, it, vi} from 'vitest';
10-
import {
11-
type DomainsConfig,
12-
type Pathnames,
13-
defineRouting
14-
} from '../routing.tsx';
15-
import createNavigationClient from './react-client/createNavigation.tsx';
16-
import createNavigationServer from './react-server/createNavigation.tsx';
17-
import getServerLocale from './react-server/getServerLocale.tsx';
10+
import {type DomainsConfig, type Pathnames, defineRouting} from '../routing.js';
11+
import createNavigationClient from './react-client/createNavigation.js';
12+
import createNavigationServer from './react-server/createNavigation.js';
13+
import getServerLocale from './react-server/getServerLocale.js';
1814

1915
vi.mock('react');
2016
vi.mock('next/navigation.js', async () => ({

packages/next-intl/src/navigation/react-client/createNavigation.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import {
55
} from 'next/navigation.js';
66
import {type Locale, useLocale} from 'use-intl';
77
import {beforeEach, describe, expect, it, vi} from 'vitest';
8-
import type {DomainsConfig, Pathnames} from '../../routing.tsx';
9-
import createNavigation from './createNavigation.tsx';
8+
import type {DomainsConfig, Pathnames} from '../../routing.js';
9+
import createNavigation from './createNavigation.js';
1010

1111
vi.mock('next/navigation.js');
1212
vi.mock('use-intl', async () => ({

packages/next-intl/src/navigation/react-client/createNavigation.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ import {type Locale, useLocale} from 'use-intl';
77
import type {
88
RoutingConfigLocalizedNavigation,
99
RoutingConfigSharedNavigation
10-
} from '../../routing/config.tsx';
10+
} from '../../routing/config.js';
1111
import type {
1212
DomainsConfig,
1313
LocalePrefixMode,
1414
Locales,
1515
Pathnames
16-
} from '../../routing/types.tsx';
17-
import createSharedNavigationFns from '../shared/createSharedNavigationFns.tsx';
18-
import syncLocaleCookie from '../shared/syncLocaleCookie.tsx';
19-
import {getRoute} from '../shared/utils.tsx';
20-
import useBasePathname from './useBasePathname.tsx';
16+
} from '../../routing/types.js';
17+
import createSharedNavigationFns from '../shared/createSharedNavigationFns.js';
18+
import syncLocaleCookie from '../shared/syncLocaleCookie.js';
19+
import {getRoute} from '../shared/utils.js';
20+
import useBasePathname from './useBasePathname.js';
2121

2222
export default function createNavigation<
2323
const AppLocales extends Locales,
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as createNavigation} from './createNavigation.tsx';
2-
export type {QueryParams} from '../shared/utils.tsx';
1+
export {default as createNavigation} from './createNavigation.js';
2+
export type {QueryParams} from '../shared/utils.js';

packages/next-intl/src/navigation/react-client/useBasePathname.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {render, screen} from '@testing-library/react';
22
import {usePathname as useNextPathname} from 'next/navigation.js';
33
import {beforeEach, describe, expect, it, vi} from 'vitest';
4-
import {NextIntlClientProvider, useLocale} from '../../index.react-client.tsx';
5-
import useBasePathname from './useBasePathname.tsx';
4+
import {NextIntlClientProvider, useLocale} from '../../index.react-client.js';
5+
import useBasePathname from './useBasePathname.js';
66

77
vi.mock('next/navigation.js');
88
vi.mock('use-intl', async () => ({

packages/next-intl/src/navigation/react-client/useBasePathname.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import type {
55
LocalePrefixConfigVerbose,
66
LocalePrefixMode,
77
Locales
8-
} from '../../routing/types.tsx';
8+
} from '../../routing/types.js';
99
import {
1010
getLocaleAsPrefix,
1111
getLocalePrefix,
1212
hasPathnamePrefixed,
1313
unprefixPathname
14-
} from '../../shared/utils.tsx';
14+
} from '../../shared/utils.js';
1515

1616
export default function useBasePathname<
1717
AppLocales extends Locales,

packages/next-intl/src/navigation/react-server/createNavigation.test.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {describe, expect, it, vi} from 'vitest';
2-
import createNavigation from './createNavigation.tsx';
2+
import createNavigation from './createNavigation.js';
33

44
vi.mock('react');
55

packages/next-intl/src/navigation/react-server/createNavigation.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import type {
22
RoutingConfigLocalizedNavigation,
33
RoutingConfigSharedNavigation
4-
} from '../../routing/config.tsx';
4+
} from '../../routing/config.js';
55
import type {
66
DomainsConfig,
77
LocalePrefixMode,
88
Locales,
99
Pathnames
10-
} from '../../routing/types.tsx';
11-
import createSharedNavigationFns from '../shared/createSharedNavigationFns.tsx';
12-
import getServerLocale from './getServerLocale.tsx';
10+
} from '../../routing/types.js';
11+
import createSharedNavigationFns from '../shared/createSharedNavigationFns.js';
12+
import getServerLocale from './getServerLocale.js';
1313

1414
export default function createNavigation<
1515
const AppLocales extends Locales,

packages/next-intl/src/navigation/react-server/getServerLocale.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import getConfig from '../../server/react-server/getConfig.tsx';
1+
import getConfig from '../../server/react-server/getConfig.js';
22

33
/**
44
* This is only moved to a separate module for easier mocking in
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as createNavigation} from './createNavigation.tsx';
2-
export type {Pathnames} from '../../routing/types.tsx';
1+
export {default as createNavigation} from './createNavigation.js';
2+
export type {Pathnames} from '../../routing/types.js';

packages/next-intl/src/navigation/shared/BaseLink.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import {
1111
useState
1212
} from 'react';
1313
import {type Locale, useLocale} from 'use-intl';
14-
import type {InitializedLocaleCookieConfig} from '../../routing/config.tsx';
15-
import syncLocaleCookie from './syncLocaleCookie.tsx';
14+
import type {InitializedLocaleCookieConfig} from '../../routing/config.js';
15+
import syncLocaleCookie from './syncLocaleCookie.js';
1616

1717
type NextLinkProps = Omit<ComponentProps<'a'>, keyof LinkProps> &
1818
Omit<LinkProps, 'locale'>;

packages/next-intl/src/navigation/shared/createSharedNavigationFns.tsx

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ import {
88
type RoutingConfigLocalizedNavigation,
99
type RoutingConfigSharedNavigation,
1010
receiveRoutingConfig
11-
} from '../../routing/config.tsx';
11+
} from '../../routing/config.js';
1212
import type {
1313
DomainConfig,
1414
DomainsConfig,
1515
LocalePrefixMode,
1616
Locales,
1717
Pathnames
18-
} from '../../routing/types.tsx';
19-
import type {ParametersExceptFirst, Prettify} from '../../shared/types.tsx';
20-
import use from '../../shared/use.tsx';
21-
import {isLocalizableHref} from '../../shared/utils.tsx';
22-
import BaseLink from './BaseLink.tsx';
18+
} from '../../routing/types.js';
19+
import type {ParametersExceptFirst, Prettify} from '../../shared/types.js';
20+
import use from '../../shared/use.js';
21+
import {isLocalizableHref} from '../../shared/utils.js';
22+
import BaseLink from './BaseLink.js';
2323
import {
2424
type HrefOrHrefWithParams,
2525
type HrefOrUrlObjectWithParams,
@@ -29,7 +29,7 @@ import {
2929
normalizeNameOrNameWithParams,
3030
serializeSearchParams,
3131
validateReceivedConfig
32-
} from './utils.tsx';
32+
} from './utils.js';
3333

3434
type PromiseOrValue<Type> = Type | Promise<Type>;
3535

packages/next-intl/src/navigation/shared/syncLocaleCookie.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type {Locale} from 'use-intl';
2-
import type {InitializedLocaleCookieConfig} from '../../routing/config.tsx';
3-
import {getBasePath} from './utils.tsx';
2+
import type {InitializedLocaleCookieConfig} from '../../routing/config.js';
3+
import {getBasePath} from './utils.js';
44

55
/**
66
* We have to keep the cookie value in sync as Next.js might

packages/next-intl/src/navigation/shared/utils.test.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
compileLocalizedPathname,
44
getBasePath,
55
serializeSearchParams
6-
} from './utils.tsx';
6+
} from './utils.js';
77

88
describe('serializeSearchParams', () => {
99
it('handles strings', () => {

0 commit comments

Comments
 (0)