@internetarchive/bookreader 5.0.0-94 → 5.0.0-96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/BookReader/BookReader.js +1 -1
  2. package/BookReader/hypothesis/LICENSE +50 -0
  3. package/BookReader/hypothesis/README.md +55 -0
  4. package/BookReader/hypothesis/build/boot.js +1 -0
  5. package/BookReader/hypothesis/build/manifest.json +20 -0
  6. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +184 -0
  7. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  8. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +798 -0
  9. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  10. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +711 -0
  11. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  12. package/BookReader/hypothesis/build/styles/annotator.css +2235 -0
  13. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  14. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  15. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  16. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  17. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  18. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  19. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  20. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  35. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  36. package/BookReader/hypothesis/build/styles/katex.min.css +2 -0
  37. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  38. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +2 -0
  39. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  40. package/BookReader/hypothesis/build/styles/sidebar.css +2731 -0
  41. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  42. package/BookReader/hypothesis/build/styles/ui-playground.css +2659 -0
  43. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  44. package/BookReader/hypothesis/package.json +126 -0
  45. package/README.md +0 -2
  46. package/package.json +6 -1
  47. package/.eslintrc.cjs +0 -51
  48. package/.gitattributes +0 -2
  49. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  50. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  51. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  52. package/.github/workflows/node.js.yml +0 -102
  53. package/.github/workflows/npm-publish.yml +0 -33
  54. package/.testcaferc.cjs +0 -10
  55. package/BookReaderDemo/BookReaderDemo.css +0 -40
  56. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -112
  57. package/BookReaderDemo/BookReaderJSSimple.js +0 -56
  58. package/BookReaderDemo/IADemoBr.js +0 -149
  59. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  60. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  61. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  62. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  63. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  64. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  65. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  66. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  67. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  68. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  69. package/BookReaderDemo/demo-advanced.html +0 -33
  70. package/BookReaderDemo/demo-embed-iframe-src.html +0 -85
  71. package/BookReaderDemo/demo-embed.html +0 -26
  72. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -34
  73. package/BookReaderDemo/demo-fullscreen.html +0 -31
  74. package/BookReaderDemo/demo-iiif.html +0 -121
  75. package/BookReaderDemo/demo-internetarchive.html +0 -271
  76. package/BookReaderDemo/demo-multiple.html +0 -44
  77. package/BookReaderDemo/demo-preview-pages.html +0 -1093
  78. package/BookReaderDemo/demo-simple.html +0 -35
  79. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -34
  80. package/BookReaderDemo/ia-multiple-volumes-manifest.js +0 -169
  81. package/BookReaderDemo/immersion-1up.html +0 -64
  82. package/BookReaderDemo/immersion-mode.html +0 -33
  83. package/BookReaderDemo/toggle_controls.html +0 -54
  84. package/BookReaderDemo/view_mode.html +0 -40
  85. package/BookReaderDemo/viewmode-cycle.html +0 -40
  86. package/CHANGELOG.md +0 -1080
  87. package/CONTRIBUTING.md +0 -7
  88. package/babel.config.cjs +0 -20
  89. package/codecov.yml +0 -23
  90. package/index.html +0 -34
  91. package/netlify.toml +0 -9
  92. package/renovate.json +0 -52
  93. package/screenshot.png +0 -0
  94. package/scripts/postversion.js +0 -11
  95. package/scripts/preversion.js +0 -15
  96. package/scripts/version.js +0 -27
  97. package/tests/e2e/README.md +0 -112
  98. package/tests/e2e/autoplay.test.js +0 -16
  99. package/tests/e2e/base.test.js +0 -27
  100. package/tests/e2e/helpers/base.js +0 -263
  101. package/tests/e2e/helpers/debug.js +0 -13
  102. package/tests/e2e/helpers/mockSearch.js +0 -90
  103. package/tests/e2e/helpers/params.js +0 -17
  104. package/tests/e2e/helpers/rightToLeft.js +0 -23
  105. package/tests/e2e/helpers/search.js +0 -73
  106. package/tests/e2e/models/BookReader.js +0 -11
  107. package/tests/e2e/models/Navigation.js +0 -39
  108. package/tests/e2e/rightToLeft.test.js +0 -19
  109. package/tests/e2e/viewmode.test.js +0 -44
  110. package/tests/jest/BookNavigator/book-navigator.test.js +0 -653
  111. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +0 -43
  112. package/tests/jest/BookNavigator/bookmarks/bookmark-edit.test.js +0 -132
  113. package/tests/jest/BookNavigator/bookmarks/bookmarks-list.test.js +0 -221
  114. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +0 -45
  115. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +0 -67
  116. package/tests/jest/BookNavigator/downloads/downloads.test.js +0 -53
  117. package/tests/jest/BookNavigator/search/search-provider.test.js +0 -179
  118. package/tests/jest/BookNavigator/search/search-results.test.js +0 -289
  119. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +0 -49
  120. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +0 -80
  121. package/tests/jest/BookNavigator/visual-adjustments.test.js +0 -200
  122. package/tests/jest/BookReader/BookModel.test.js +0 -372
  123. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +0 -263
  124. package/tests/jest/BookReader/ImageCache.test.js +0 -150
  125. package/tests/jest/BookReader/Mode1UpLit.test.js +0 -73
  126. package/tests/jest/BookReader/Mode2Up.test.js +0 -98
  127. package/tests/jest/BookReader/Mode2UpLit.test.js +0 -190
  128. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +0 -16
  129. package/tests/jest/BookReader/ModeSmoothZoom.test.js +0 -218
  130. package/tests/jest/BookReader/ModeThumb.test.js +0 -71
  131. package/tests/jest/BookReader/Navbar/Navbar.test.js +0 -182
  132. package/tests/jest/BookReader/PageContainer.test.js +0 -249
  133. package/tests/jest/BookReader/ReduceSet.test.js +0 -38
  134. package/tests/jest/BookReader/Toolbar/Toolbar.test.js +0 -26
  135. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +0 -59
  136. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +0 -49
  137. package/tests/jest/BookReader/utils/SelectionObserver.test.js +0 -57
  138. package/tests/jest/BookReader/utils/classes.test.js +0 -88
  139. package/tests/jest/BookReader/utils.test.js +0 -250
  140. package/tests/jest/BookReader.keyboard.test.js +0 -190
  141. package/tests/jest/BookReader.options.test.js +0 -47
  142. package/tests/jest/BookReader.test.js +0 -316
  143. package/tests/jest/plugins/plugin.archive_analytics.test.js +0 -20
  144. package/tests/jest/plugins/plugin.autoplay.test.js +0 -35
  145. package/tests/jest/plugins/plugin.chapters.test.js +0 -193
  146. package/tests/jest/plugins/plugin.iframe.test.js +0 -42
  147. package/tests/jest/plugins/plugin.resume.test.js +0 -85
  148. package/tests/jest/plugins/plugin.text_selection.test.js +0 -447
  149. package/tests/jest/plugins/plugin.vendor-fullscreen.test.js +0 -65
  150. package/tests/jest/plugins/search/plugin.search.test.js +0 -120
  151. package/tests/jest/plugins/search/plugin.search.view.test.js +0 -131
  152. package/tests/jest/plugins/search/utils.js +0 -25
  153. package/tests/jest/plugins/search/utils.test.js +0 -29
  154. package/tests/jest/plugins/tts/AbstractTTSEngine.test.js +0 -173
  155. package/tests/jest/plugins/tts/FestivalTTSEngine.test.js +0 -59
  156. package/tests/jest/plugins/tts/PageChunk.test.js +0 -57
  157. package/tests/jest/plugins/tts/PageChunkIterator.test.js +0 -179
  158. package/tests/jest/plugins/tts/WebTTSEngine.test.js +0 -178
  159. package/tests/jest/plugins/tts/utils.test.js +0 -74
  160. package/tests/jest/plugins/url/UrlPlugin.test.js +0 -198
  161. package/tests/jest/plugins/url/plugin.url.test.js +0 -168
  162. package/tests/jest/setup.js +0 -3
  163. package/tests/jest/util/browserSniffing.test.js +0 -62
  164. package/tests/jest/util/docCookies.test.js +0 -24
  165. package/tests/jest/util/strings.test.js +0 -63
  166. package/tests/jest/utils.js +0 -83
  167. package/webpack.config.js +0 -97
@@ -1,24 +0,0 @@
1
- import * as docCookies from '@/src/util/docCookies.js';
2
-
3
- afterEach(() => {
4
- jest.clearAllMocks();
5
- });
6
-
7
- describe('Helper function: set and get cookie item', () => {
8
- test('set cookie item value', () => {
9
- expect(docCookies.setItem('test-cookie', 'jack-sparow')).toBeTruthy();
10
- });
11
-
12
- test('get cookie item value', () => {
13
- expect(docCookies.getItem('test-cookie')).toEqual('jack-sparow');
14
- });
15
- });
16
-
17
- describe('isCookiesBlocked', () => {
18
- test('return true if cookies are blocked', () => {
19
- expect(docCookies.areCookiesBlocked({ get cookie() { throw new Error(); }})).toBeTruthy();
20
- });
21
- test('return false if cookies are not blocked', () => {
22
- expect(docCookies.areCookiesBlocked({ cookie: 'blah' })).toBeFalsy();
23
- });
24
- });
@@ -1,63 +0,0 @@
1
- import { APPLY_FILTERS, applyVariables } from '@/src/util/strings.js';
2
-
3
- describe('applyVariables', () => {
4
- test('null cases', () => {
5
- expect(applyVariables(null, {})).toBeUndefined();
6
- expect(applyVariables('', {})).toEqual('');
7
- expect(applyVariables('', {x: 3})).toEqual('');
8
- });
9
-
10
- test('Ignores undefined variables', () => {
11
- expect(applyVariables('Hello {{name}}!', {})).toEqual('Hello {{name}}!');
12
- });
13
-
14
- test('Replaces multiple instances', () => {
15
- expect(applyVariables('Hello {{name}}! How are you doing, {{name}}?', {name: 'Bill'})).toEqual('Hello Bill! How are you doing, Bill?');
16
- expect(applyVariables('Hello {{name}}! You are {{age}}, {{name}}', {name: 'Bill', age: 54})).toEqual('Hello Bill! You are 54, Bill');
17
- });
18
-
19
- test('Is case sensitive', () => {
20
- expect(applyVariables('Hello {{name}}', {NAME: 'Bill'})).toEqual('Hello {{name}}');
21
- });
22
-
23
- test('Supports variable names with funny chars', () => {
24
- expect(applyVariables('Hello {{first name}}', {'first name': 'Bill'})).toEqual('Hello Bill');
25
- });
26
-
27
- test('Overrides do override', () => {
28
- expect(applyVariables('Hello {{name}}', {name: 'Bill'}, {name: 'Bobby'})).toEqual('Hello Bobby');
29
- });
30
-
31
- test('Nullish values', () => {
32
- expect(applyVariables('Hello {{name}}', {name: undefined})).toEqual('Hello undefined');
33
- expect(applyVariables('Hello {{name}}', {name: null})).toEqual('Hello null');
34
- expect(applyVariables('Hello {{name}}', {name: ''})).toEqual('Hello ');
35
- });
36
-
37
- test('Non-string values', () => {
38
- expect(applyVariables('Hello {{name}}', {name: 10})).toEqual('Hello 10');
39
- expect(applyVariables('Hello {{name}}', {name: 0})).toEqual('Hello 0');
40
- });
41
-
42
- test('Filters', () => {
43
- expect(applyVariables('Hello {{name|urlencode}}', {name: 'Jim bob'})).toEqual('Hello Jim%20bob');
44
- expect(applyVariables('Hello {{name|urlencode}}', {name: 0})).toEqual('Hello 0');
45
- expect(applyVariables('Hello {{name|urlencode}}', {})).toEqual('Hello {{name|urlencode}}');
46
- });
47
-
48
- test('Custom filters', () => {
49
- expect(applyVariables('Hello {{name|upper}}', {name: 'Jim bob'}, {}, {upper: s => s.toUpperCase()})).toEqual('Hello JIM BOB');
50
- });
51
-
52
- test('Multiple filters', () => {
53
- const filters = Object.assign({}, APPLY_FILTERS, {
54
- upper: s => s.toUpperCase(),
55
- lower: s => s.toLowerCase(),
56
- double: s => s + s,
57
- });
58
- expect(applyVariables('Hello {{name|upper|urlencode}}', {name: 'Jim bob'}, {}, filters)).toEqual('Hello JIM%20BOB');
59
- expect(applyVariables('Hello {{name|upper|lower}}', {name: 'Jim bob'}, {}, filters)).toEqual('Hello jim bob');
60
- expect(applyVariables('Hello {{name|lower|upper}}', {name: 'Jim bob'}, {}, filters)).toEqual('Hello JIM BOB');
61
- expect(applyVariables('Hello {{name|lower|double}}', {name: 'Jim bob'}, {}, filters)).toEqual('Hello jim bobjim bob');
62
- });
63
- });
@@ -1,83 +0,0 @@
1
- // Keep a copy of this, since it can be overridden by sinon timers.
2
- const _realTimeout = setTimeout;
3
-
4
- /**
5
- * Resolves after all enqueued callbacks in the event loop have resolved.
6
- * @return {Promise}
7
- */
8
- export function afterEventLoop() {
9
- // Waiting 0 seconds essentially lets us run at the end of the event
10
- // loop (i.e. after any promises which aren't _actually_ async have finished)
11
- return new Promise(res => _realTimeout(res, 0));
12
- }
13
-
14
- /**
15
- * Event target mixin
16
- * @return {EventTarget}
17
- */
18
- export function eventTargetMixin() {
19
- return {
20
- addEventListener(evName, listener) {
21
- const listeners = this._listeners[evName] || [];
22
- listeners.push(listener);
23
- this._listeners[evName] = listeners;
24
- },
25
- dispatchEvent(evName, ev) {
26
- const listeners = this._listeners[evName] || [];
27
- listeners.forEach(fn => fn(ev));
28
- },
29
- removeEventListener(evName, listener) {
30
- const listeners = this._listeners[evName] || [];
31
- this._listeners[evName] = listeners.filter(fn => fn != listener);
32
- },
33
- _listeners: {},
34
- };
35
- }
36
-
37
- /** @implements {EventTarget} */
38
- export class EventTargetSpy {
39
- /** @type {Record<string, Function[]} */
40
- _listeners = {}
41
- get _totalListenerCount() {
42
- return Object.values(this._listeners)
43
- .map(a => a.length)
44
- .reduce((a, b) => a + b, 0);
45
- }
46
-
47
- addEventListener(evName, listener) {
48
- const listeners = this._listeners[evName] || [];
49
- listeners.push(listener);
50
- this._listeners[evName] = listeners;
51
- }
52
-
53
- dispatchEvent(evName, ev) {
54
- const listeners = this._listeners[evName] || [];
55
- listeners.forEach(fn => fn(ev));
56
- }
57
-
58
- removeEventListener(evName, listener) {
59
- const listeners = this._listeners[evName] || [];
60
- this._listeners[evName] = listeners.filter(fn => fn != listener);
61
- }
62
-
63
- /**
64
- * @param {EventTarget} realEventTarget
65
- */
66
- static wrap(realEventTarget) {
67
- const spy = new EventTargetSpy();
68
- realEventTarget.addEventListener = spy.addEventListener.bind(spy);
69
- realEventTarget.removeEventListener = spy.removeEventListener.bind(spy);
70
- realEventTarget.dispatchEvent = spy.dispatchEvent.bind(spy);
71
- return spy;
72
- }
73
- }
74
-
75
- /**
76
- * Lazy deep copy function; only supports objects (no classes)
77
- * @template T
78
- * @param {T} obj
79
- * @return {T}
80
- */
81
- export function deepCopy(obj) {
82
- return JSON.parse(JSON.stringify(obj));
83
- }
package/webpack.config.js DELETED
@@ -1,97 +0,0 @@
1
- // @ts-check
2
- import path from 'path';
3
- import webpack from 'webpack';
4
- import { fileURLToPath } from 'url';
5
-
6
- const __filename = fileURLToPath(import.meta.url);
7
- const __dirname = path.dirname(__filename);
8
-
9
- /** @type {webpack.Configuration} */
10
- const shared = {
11
- mode: 'production',
12
-
13
- watchOptions: {
14
- ignored: ['BookReader/**', 'node_modules/**', 'tests/**'],
15
- },
16
-
17
- target: ['web', 'es5'],
18
-
19
- module: {
20
- rules: [
21
- {
22
- test: /\.js$/,
23
- exclude: /node_modules[/\\](?!(lit-element|lit-html|lit|@lit)[/\\]).*/,
24
- loader: "babel-loader",
25
- },
26
- ],
27
- },
28
-
29
- output: {
30
- filename: '[name]',
31
- path: path.resolve(__dirname, 'BookReader'),
32
- },
33
- };
34
-
35
- /** @type {webpack.Configuration[]} */
36
- export default [
37
- {
38
- ...shared,
39
-
40
- // Output file -> srcfile
41
- entry: {
42
- // Polyfill bundles
43
- 'webcomponents-bundle.js': { import: '@webcomponents/webcomponentsjs/webcomponents-bundle.js' },
44
-
45
- // BookReader
46
- 'BookReader.js': './src/BookReader.js',
47
-
48
- // Plugins (sorted!)
49
- 'plugins/plugin.archive_analytics.js': { import: './src/plugins/plugin.archive_analytics.js', dependOn: 'BookReader.js' },
50
- 'plugins/plugin.autoplay.js': { import: './src/plugins/plugin.autoplay.js', dependOn: 'BookReader.js' },
51
- 'plugins/plugin.chapters.js': { import: './src/plugins/plugin.chapters.js', dependOn: 'BookReader.js' },
52
- 'plugins/plugin.experiments.js': { import: './src/plugins/plugin.experiments.js', dependOn: 'BookReader.js' },
53
- 'plugins/plugin.iframe.js': { import: './src/plugins/plugin.iframe.js', dependOn: 'BookReader.js' },
54
- 'plugins/plugin.iiif.js': { import: './src/plugins/plugin.iiif.js', dependOn: 'BookReader.js' },
55
- 'plugins/plugin.resume.js': { import: './src/plugins/plugin.resume.js', dependOn: 'BookReader.js' },
56
- 'plugins/plugin.search.js': { import: './src/plugins/search/plugin.search.js', dependOn: 'BookReader.js' },
57
- 'plugins/plugin.text_selection.js': { import: './src/plugins/plugin.text_selection.js', dependOn: 'BookReader.js' },
58
- 'plugins/plugin.tts.js': { import: './src/plugins/tts/plugin.tts.js', dependOn: 'BookReader.js' },
59
- 'plugins/plugin.url.js': { import: './src/plugins/url/plugin.url.js', dependOn: 'BookReader.js' },
60
- 'plugins/plugin.vendor-fullscreen.js': { import: './src/plugins/plugin.vendor-fullscreen.js', dependOn: 'BookReader.js' },
61
- 'ia-bookreader-bundle.js': { import: './src/ia-bookreader/ia-bookreader.js', dependOn: 'BookReader.js' },
62
- },
63
-
64
- externals: {
65
- // Anytime 'jquery' is imported, use the at runtime globally defined jQuery
66
- // instead of bundling a copy of jquery at compile-time.
67
- jquery: 'jQuery',
68
- },
69
- plugins: [
70
- new webpack.ProvidePlugin({
71
- // Make $ and jQuery available without importing
72
- $: 'jquery',
73
- jQuery: 'jquery',
74
- }),
75
- ],
76
-
77
- output: {
78
- filename: '[name]',
79
- path: path.resolve(__dirname, 'BookReader'),
80
- },
81
-
82
- // Accurate source maps at the expense of build time.
83
- // The source map is intentionally exposed
84
- // to users via sourceMapFilename for prod debugging.
85
- devtool: 'source-map',
86
- },
87
-
88
- // jQuery gets its own build, so that it can be used as an "external" in
89
- // everything else.
90
- {
91
- ...shared,
92
-
93
- entry: {
94
- 'jquery-3.js': { import: './src/jquery-wrapper.js' },
95
- },
96
- },
97
- ];