Skip to content

Commit 2a42583

Browse files
authored
Fix TypeScript types (JedWatson#276)
The package uses commonjs, but it’s typed as if it contains faux ESM. This was problematic for people using `require` or the new `node16` module resolution.
1 parent 8cac391 commit 2a42583

File tree

5 files changed

+23
-16
lines changed

5 files changed

+23
-16
lines changed

bind.d.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
export * from '.';
2-
import { ArgumentArray } from '.';
1+
import { ArgumentArray } from './index.js';
32

4-
export type Binding = Record<string, string>;
5-
export default function classNames(this: Binding | undefined, ...args: ArgumentArray): string;
3+
declare namespace classNames {
4+
type Binding = Record<string, string>;
5+
}
6+
7+
declare function classNames(this: classNames.Binding | undefined, ...args: ArgumentArray): string;
8+
9+
export = classNames;

dedupe.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export * from '.';
2-
export { default } from '.';
1+
import classNames = require('./index.js');
2+
export = classNames;

index.d.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77
// Sean Kelley <https://github.com/seansfkelley>
88
// Michal Adamczyk <https://github.com/mradamczyk>
99
// Marvin Hagemeister <https://github.com/marvinhagemeister>
10-
// TypeScript Version: 3.0
1110

12-
export type Value = string | number | boolean | undefined | null;
13-
export type Mapping = Record<string, unknown>;
14-
export interface ArgumentArray extends Array<Argument> {}
15-
export type Argument = Value | Mapping | ArgumentArray;
11+
declare namespace classNames {
12+
type Value = string | number | boolean | undefined | null;
13+
type Mapping = Record<string, unknown>;
14+
interface ArgumentArray extends Array<Argument> {}
15+
type Argument = Value | Mapping | ArgumentArray;
16+
}
1617

1718
/**
1819
* A simple JavaScript utility for conditionally joining classNames together.
1920
*/
20-
export default function classNames(...args: ArgumentArray): string;
21+
declare function classNames(...args: classNames.ArgumentArray): string;
22+
23+
export = classNames;

tests/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import classNames from 'classnames';
2-
import dedupe from 'classnames/dedupe';
3-
import bind from 'classnames/bind';
1+
import classNames = require('classnames');
2+
import dedupe = require('classnames/dedupe');
3+
import bind = require('classnames/bind');
44

55
// default
66
classNames('foo');

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"compilerOptions": {
3-
"module": "es2015",
3+
"module": "commonjs",
44
"lib": ["es2015"],
55
"moduleResolution": "node",
66
"strict": true,

0 commit comments

Comments
 (0)