Skip to content

Commit d32b5a3

Browse files
committed
Add native ESM support (#1574)
1 parent 549e606 commit d32b5a3

Some content is hidden

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

49 files changed

+211
-197
lines changed

package.json

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,30 @@
22
"name": "react-pdf",
33
"version": "7.2.0",
44
"description": "Display PDFs in your React app as easily as if they were images.",
5-
"main": "dist/cjs/index.js",
6-
"module": "dist/esm/index.js",
7-
"source": "src/index.ts",
8-
"types": "dist/cjs/index.d.ts",
5+
"type": "module",
96
"sideEffects": [
107
"*.css"
118
],
9+
"main": "./dist/cjs/index.js",
10+
"module": "./dist/esm/index.js",
11+
"source": "./src/index.ts",
12+
"types": "./dist/cjs/index.d.ts",
13+
"exports": {
14+
".": {
15+
"import": "./dist/esm/index.js",
16+
"require": "./dist/cjs/index.js"
17+
},
18+
"./dist/cjs/Page/AnnotationLayer.css": "./dist/cjs/Page/AnnotationLayer.css",
19+
"./dist/cjs/Page/TextLayer.css": "./dist/cjs/Page/TextLayer.css",
20+
"./dist/esm/Page/AnnotationLayer.css": "./dist/esm/Page/AnnotationLayer.css",
21+
"./dist/esm/Page/TextLayer.css": "./dist/esm/Page/TextLayer.css"
22+
},
1223
"scripts": {
1324
"build": "yarn build-js && yarn copy-styles",
14-
"build-js": "yarn build-js-esm && yarn build-js-cjs",
25+
"build-js": "yarn build-js-esm && yarn build-js-cjs && yarn build-js-cjs-package",
1526
"build-js-esm": "tsc --project tsconfig.build.json --outDir dist/esm --module esnext",
1627
"build-js-cjs": "tsc --project tsconfig.build.json --outDir dist/cjs --module commonjs",
28+
"build-js-cjs-package": "echo '{\n \"type\": \"commonjs\"\n}' > dist/cjs/package.json",
1729
"clean": "rimraf dist",
1830
"copy-styles": "cpy 'src/**/*.css' dist/esm && cpy 'src/**/*.css' dist/cjs",
1931
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
@@ -23,7 +35,7 @@
2335
"test": "yarn lint && yarn tsc && yarn prettier && yarn unit",
2436
"tsc": "tsc --noEmit",
2537
"unit": "vitest",
26-
"watch": "yarn build-js-esm --watch & yarn build-js-cjs --watch & nodemon --watch src --ext css --exec \"yarn copy-styles\""
38+
"watch": "yarn build-js-esm --watch & yarn build-js-cjs --watch & yarn build-js-cjs-package & nodemon --watch src --ext css --exec \"yarn copy-styles\""
2739
},
2840
"keywords": [
2941
"pdf",

src/Document.spec.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import { beforeAll, describe, expect, it, vi } from 'vitest';
22
import React, { createRef } from 'react';
33
import { fireEvent, getByTestId, render } from '@testing-library/react';
44

5-
import { pdfjs } from './index.test';
5+
import { pdfjs } from './index.test.js';
66

7-
import Document from './Document';
8-
import DocumentContext from './DocumentContext';
9-
import Page from './Page';
7+
import Document from './Document.js';
8+
import DocumentContext from './DocumentContext.js';
9+
import Page from './Page.js';
1010

11-
import { makeAsyncCallback, loadPDF, muteConsole, restoreConsole } from '../test-utils';
11+
import { makeAsyncCallback, loadPDF, muteConsole, restoreConsole } from '../test-utils.js';
1212

1313
import type { PDFDocumentProxy } from 'pdfjs-dist';
14-
import type { ScrollPageIntoViewArgs } from './shared/types';
14+
import type { ScrollPageIntoViewArgs } from './shared/types.js';
1515

1616
const pdfFile = loadPDF('./__mocks__/_pdf.pdf');
1717
const pdfFile2 = loadPDF('./__mocks__/_pdf2.pdf');

src/Document.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import invariant from 'tiny-invariant';
1919
import warning from 'tiny-warning';
2020
import * as pdfjs from 'pdfjs-dist';
2121

22-
import DocumentContext from './DocumentContext';
22+
import DocumentContext from './DocumentContext.js';
2323

24-
import Message from './Message';
24+
import Message from './Message.js';
2525

26-
import LinkService from './LinkService';
27-
import PasswordResponses from './PasswordResponses';
26+
import LinkService from './LinkService.js';
27+
import PasswordResponses from './PasswordResponses.js';
2828

2929
import {
3030
cancelRunningTask,
@@ -35,10 +35,10 @@ import {
3535
isBrowser,
3636
isDataURI,
3737
loadFromFile,
38-
} from './shared/utils';
38+
} from './shared/utils.js';
3939

40-
import useResolver from './shared/hooks/useResolver';
41-
import { eventProps, isClassName, isFile, isRef } from './shared/propTypes';
40+
import useResolver from './shared/hooks/useResolver.js';
41+
import { eventProps, isClassName, isFile, isRef } from './shared/propTypes.js';
4242

4343
import type { PDFDocumentProxy } from 'pdfjs-dist';
4444
import type { EventProps } from 'make-event-props';
@@ -61,7 +61,7 @@ import type {
6161
RenderMode,
6262
ScrollPageIntoViewArgs,
6363
Source,
64-
} from './shared/types';
64+
} from './shared/types.js';
6565

6666
const { PDFDataRangeTransport } = pdfjs;
6767

src/DocumentContext.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
import { createContext } from 'react';
44

5-
import type { DocumentContextType } from './shared/types';
5+
import type { DocumentContextType } from './shared/types.js';
66

77
export default createContext<DocumentContextType>(null);

src/LinkService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import type {
2121
ExternalLinkRel,
2222
ExternalLinkTarget,
2323
ScrollPageIntoViewArgs,
24-
} from './shared/types';
24+
} from './shared/types.js';
2525

26-
import type { IPDFLinkService } from 'pdfjs-dist/types/web/interfaces';
26+
import type { IPDFLinkService } from 'pdfjs-dist/types/web/interfaces.js';
2727

2828
const DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
2929

src/Outline.spec.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ import { beforeAll, describe, expect, it } from 'vitest';
22
import React, { createRef } from 'react';
33
import { render, screen } from '@testing-library/react';
44

5-
import { pdfjs } from './index.test';
5+
import { pdfjs } from './index.test.js';
66

7-
import Outline from './Outline';
7+
import Outline from './Outline.js';
88

9-
import failingPdf from '../__mocks__/_failing_pdf';
10-
import { loadPDF, makeAsyncCallback, muteConsole, restoreConsole } from '../test-utils';
9+
import failingPdf from '../__mocks__/_failing_pdf.js';
10+
import { loadPDF, makeAsyncCallback, muteConsole, restoreConsole } from '../test-utils.js';
1111

12-
import DocumentContext from './DocumentContext';
12+
import DocumentContext from './DocumentContext.js';
1313

1414
import type { PDFDocumentProxy } from 'pdfjs-dist';
15-
import type { DocumentContextType } from './shared/types';
15+
import type { DocumentContextType } from './shared/types.js';
1616

1717
type PDFOutline = Awaited<ReturnType<PDFDocumentProxy['getOutline']>>;
1818

src/Outline.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ import clsx from 'clsx';
88
import invariant from 'tiny-invariant';
99
import warning from 'tiny-warning';
1010

11-
import OutlineContext from './OutlineContext';
11+
import OutlineContext from './OutlineContext.js';
1212

13-
import OutlineItem from './OutlineItem';
13+
import OutlineItem from './OutlineItem.js';
1414

15-
import { cancelRunningTask } from './shared/utils';
15+
import { cancelRunningTask } from './shared/utils.js';
1616

17-
import useDocumentContext from './shared/hooks/useDocumentContext';
18-
import useResolver from './shared/hooks/useResolver';
19-
import { eventProps, isClassName, isPdf, isRef } from './shared/propTypes';
17+
import useDocumentContext from './shared/hooks/useDocumentContext.js';
18+
import useResolver from './shared/hooks/useResolver.js';
19+
import { eventProps, isClassName, isPdf, isRef } from './shared/propTypes.js';
2020

2121
import type { PDFDocumentProxy } from 'pdfjs-dist';
2222
import type { EventProps } from 'make-event-props';
23-
import type { ClassName, OnItemClickArgs } from './shared/types';
23+
import type { ClassName, OnItemClickArgs } from './shared/types.js';
2424

2525
type PDFOutline = Awaited<ReturnType<PDFDocumentProxy['getOutline']>>;
2626

src/OutlineContext.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
import { createContext } from 'react';
44

5-
import type { OutlineContextType } from './shared/types';
5+
import type { OutlineContextType } from './shared/types.js';
66

77
export default createContext<OutlineContextType>(null);

src/OutlineItem.spec.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import { beforeAll, describe, expect, it, vi } from 'vitest';
22
import React from 'react';
33
import { fireEvent, getAllByRole, render, screen } from '@testing-library/react';
44

5-
import { pdfjs } from './index.test';
6-
import OutlineItem from './OutlineItem';
5+
import { pdfjs } from './index.test.js';
6+
import OutlineItem from './OutlineItem.js';
77

8-
import { loadPDF, makeAsyncCallback } from '../test-utils';
8+
import { loadPDF, makeAsyncCallback } from '../test-utils.js';
99

10-
import DocumentContext from './DocumentContext';
11-
import OutlineContext from './OutlineContext';
10+
import DocumentContext from './DocumentContext.js';
11+
import OutlineContext from './OutlineContext.js';
1212

1313
import type { PDFDocumentProxy } from 'pdfjs-dist';
14-
import type { DocumentContextType, OutlineContextType } from './shared/types';
14+
import type { DocumentContextType, OutlineContextType } from './shared/types.js';
1515

1616
const pdfFile = loadPDF('./__mocks__/_pdf.pdf');
1717

src/OutlineItem.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import React from 'react';
22
import invariant from 'tiny-invariant';
33

4-
import Ref from './Ref';
4+
import Ref from './Ref.js';
55

6-
import useCachedValue from './shared/hooks/useCachedValue';
7-
import useDocumentContext from './shared/hooks/useDocumentContext';
8-
import useOutlineContext from './shared/hooks/useOutlineContext';
6+
import useCachedValue from './shared/hooks/useCachedValue.js';
7+
import useDocumentContext from './shared/hooks/useDocumentContext.js';
8+
import useOutlineContext from './shared/hooks/useOutlineContext.js';
99

1010
import type { PDFDocumentProxy } from 'pdfjs-dist';
11-
import type { RefProxy } from 'pdfjs-dist/types/src/display/api';
11+
import type { RefProxy } from 'pdfjs-dist/types/src/display/api.js';
1212

1313
type PDFOutline = Awaited<ReturnType<PDFDocumentProxy['getOutline']>>;
1414

0 commit comments

Comments
 (0)