Skip to content

Commit

Permalink
fix: fix types for PackageJson exports (#185)
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 authored Jul 2, 2024
1 parent cacfa8e commit 2f67cbc
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 13 deletions.
32 changes: 19 additions & 13 deletions src/types/packagejson.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,27 @@ export type PackageJsonPerson =
url?: string;
};

type PackageJsonExportKey =
| "."
| "import"
| "require"
| "types"
| "node"
| "browser"
| "default"
| (string & {}); // eslint-disable-line @typescript-eslint/ban-types

type PackageJsonExportsObject = {
[P in PackageJsonExportKey]?:
| string
| PackageJsonExportsObject
| Array<string | PackageJsonExportsObject>;
};

export type PackageJsonExports =
| string
| string[]
| {
[P in
| "."
| "import"
| "require"
| "types"
| "node"
| "browser"
| "default"
// eslint-disable-next-line @typescript-eslint/ban-types
| (string & {})]: PackageJsonExports;
};
| PackageJsonExportsObject
| Array<string | PackageJsonExportsObject>;

export interface PackageJson {
/**
Expand Down
31 changes: 31 additions & 0 deletions test/types.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,37 @@ test("types", () => {
{},
{ name: "foo" },
{ version: "1.0.0" },
// Exports field
{ exports: "./index.mjs" },
{ exports: {} },
{
exports: {
".": "./index.mjs",
"./feature": "./features/feature.mjs",
},
},
{
exports: {
node: {
import: "./node/index.mjs",
require: "./node/index.js",
},
},
},
{
exports: ["./a.mjs", "./a.d.ts"],
},
{
exports: {
".": [
{
import: "./esm/index.js",
require: "./cjs/index.js",
},
"./fallback/index.js",
],
"./feature": ["./features/feature.mjs", "./features/feature.js"],
},
},
]);
});

0 comments on commit 2f67cbc

Please sign in to comment.