@internetarchive/bookreader 5.0.0-35 → 5.0.0-38

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. package/.eslintrc.js +1 -11
  2. package/.github/workflows/node.js.yml +69 -7
  3. package/.github/workflows/npm-publish.yml +2 -16
  4. package/BookReader/BookReader.js +1 -1
  5. package/BookReader/BookReader.js.LICENSE.txt +8 -29
  6. package/BookReader/BookReader.js.map +1 -1
  7. package/BookReader/ia-bookreader-bundle.js +100 -99
  8. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +15 -12
  9. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  10. package/BookReader/plugins/plugin.chapters.js +1 -1
  11. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  12. package/BookReader/plugins/plugin.search.js +1 -1
  13. package/BookReader/plugins/plugin.search.js.map +1 -1
  14. package/BookReader/plugins/plugin.text_selection.js +1 -1
  15. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  16. package/BookReader/plugins/plugin.tts.js +1 -1
  17. package/BookReader/plugins/plugin.tts.js.map +1 -1
  18. package/CHANGELOG.md +28 -0
  19. package/README.md +1 -1
  20. package/codecov.yml +6 -0
  21. package/package.json +18 -21
  22. package/renovate.json +43 -0
  23. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  24. package/src/BookNavigator/assets/button-base.js +1 -1
  25. package/src/BookNavigator/assets/ia-logo.js +1 -1
  26. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  27. package/src/BookNavigator/assets/icon_close.js +1 -1
  28. package/src/BookNavigator/assets/icon_sort_asc.js +1 -1
  29. package/src/BookNavigator/assets/icon_sort_desc.js +1 -1
  30. package/src/BookNavigator/assets/icon_sort_neutral.js +1 -1
  31. package/src/BookNavigator/assets/icon_volumes.js +1 -1
  32. package/src/BookNavigator/book-navigator.js +8 -3
  33. package/src/BookNavigator/bookmarks/bookmark-button.js +1 -1
  34. package/src/BookNavigator/bookmarks/bookmark-edit.js +2 -3
  35. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  36. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +1 -1
  37. package/src/BookNavigator/bookmarks/bookmarks-provider.js +1 -1
  38. package/src/BookNavigator/bookmarks/ia-bookmarks.js +30 -34
  39. package/src/BookNavigator/delete-modal-actions.js +1 -1
  40. package/src/BookNavigator/downloads/downloads-provider.js +1 -1
  41. package/src/BookNavigator/downloads/downloads.js +1 -2
  42. package/src/BookNavigator/search/a-search-result.js +2 -3
  43. package/src/BookNavigator/search/search-provider.js +3 -4
  44. package/src/BookNavigator/search/search-results.js +1 -2
  45. package/src/BookNavigator/sharing.js +1 -1
  46. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +1 -1
  47. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +3 -3
  48. package/src/BookNavigator/volumes/volumes-provider.js +1 -1
  49. package/src/BookNavigator/volumes/volumes.js +2 -3
  50. package/src/BookReader/Mode1Up.js +2 -1
  51. package/src/BookReader/Mode1UpLit.js +3 -2
  52. package/src/BookReader.js +59 -57
  53. package/src/ia-bookreader/ia-bookreader.js +5 -2
  54. package/src/plugins/plugin.chapters.js +11 -15
  55. package/src/plugins/plugin.text_selection.js +9 -10
  56. package/src/plugins/search/plugin.search.js +8 -18
  57. package/src/plugins/search/view.js +2 -0
  58. package/src/plugins/tts/AbstractTTSEngine.js +40 -38
  59. package/src/plugins/tts/FestivalTTSEngine.js +10 -11
  60. package/src/plugins/tts/PageChunk.js +11 -20
  61. package/src/plugins/tts/PageChunkIterator.js +8 -12
  62. package/src/plugins/tts/WebTTSEngine.js +59 -68
  63. package/src/plugins/tts/plugin.tts.js +16 -10
  64. package/stat/BookNavigator/BookNavigator.js +42 -0
  65. package/tests/e2e/base.test.js +2 -0
  66. package/tests/e2e/helpers/desktopSearch.js +13 -12
  67. package/tests/e2e/helpers/params.js +1 -1
  68. package/tests/e2e/models/Navigation.js +12 -3
  69. package/tests/e2e/rightToLeft.test.js +1 -1
  70. package/tests/e2e/viewmode.test.js +42 -36
  71. package/tests/jest/BookReader/Mode1UpLit.test.js +2 -1
  72. package/tests/jest/plugins/plugin.text_selection.test.js +25 -23
  73. package/tests/jest/plugins/search/plugin.search.test.js +12 -20
  74. package/tests/jest/plugins/tts/AbstractTTSEngine.test.js +3 -3
  75. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +2 -2
  76. package/tests/karma/BookNavigator/downloads/downloads.test.js +1 -1
  77. package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +3 -3
  78. package/webpack.config.js +1 -1
  79. package/.github/dependabot.yml +0 -8
  80. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
@@ -19,30 +19,32 @@ const FAKE_XML_5COORDS = `<OBJECT data="file://localhost//tmp/derive/goodytwosho
19
19
  const FAKE_XML_EMPTY = '';
20
20
 
21
21
  describe("Generic tests", () => {
22
- let br;
23
- beforeEach(() => {
24
- document.body.innerHTML = '<div id="BookReader">';
25
- br = new BookreaderWithTextSelection({
26
- data: [
27
- [
28
- { width: 800, height: 1200,
29
- uri: '//archive.org/download/BookReader/img/page001.jpg' },
30
- ],
31
- [
32
- { width: 800, height: 1200,
33
- uri: '//archive.org/download/BookReader/img/page002.jpg' },
34
- { width: 800, height: 1200,
35
- uri: '//archive.org/download/BookReader/img/page003.jpg' },
36
- ],
37
- [
38
- { width: 800, height: 1200,
39
- uri: '//archive.org/download/BookReader/img/page004.jpg' },
40
- { width: 800, height: 1200,
41
- uri: '//archive.org/download/BookReader/img/page005.jpg' },
42
- ]
22
+ document.body.innerHTML = '<div id="BookReader">';
23
+ const br = new BookreaderWithTextSelection({
24
+ data: [
25
+ [
26
+ { width: 800, height: 1200,
27
+ uri: '//archive.org/download/BookReader/img/page001.jpg' },
43
28
  ],
44
- });
45
- br.init();
29
+ [
30
+ { width: 800, height: 1200,
31
+ uri: '//archive.org/download/BookReader/img/page002.jpg' },
32
+ { width: 800, height: 1200,
33
+ uri: '//archive.org/download/BookReader/img/page003.jpg' },
34
+ ],
35
+ [
36
+ { width: 800, height: 1200,
37
+ uri: '//archive.org/download/BookReader/img/page004.jpg' },
38
+ { width: 800, height: 1200,
39
+ uri: '//archive.org/download/BookReader/img/page005.jpg' },
40
+ ]
41
+ ],
42
+ });
43
+ br.init();
44
+
45
+ afterEach(() => {
46
+ sinon.restore();
47
+ $('.textSelectionSVG').remove();
46
48
  });
47
49
 
48
50
  test("_createPageContainer overridden function still creates a BRpagecontainer element", () => {
@@ -123,28 +123,24 @@ describe('Plugin: Search', () => {
123
123
  expect(br.options.goToFirstResult).toBeTruthy();
124
124
  });
125
125
 
126
- test('SearchCallback event fires when AJAX search returns results', () => {
126
+ test('SearchCallback event fires when AJAX search returns results', async () => {
127
127
  br.init();
128
- const dfd = br.search('foo');
129
- return dfd.then(() => {
130
- expect(triggeredEvents()).toContain(`${namespace}SearchCallback`);
131
- });
128
+ await br.search('foo');
129
+ expect(triggeredEvents()).toContain(`${namespace}SearchCallback`);
132
130
  });
133
131
 
134
- test('SearchCallbackError event fires when AJAX search returns error', () => {
132
+ test('SearchCallbackError event fires when AJAX search returns error', async () => {
135
133
  $.ajax = jest.fn().mockImplementation(() => {
136
134
  return Promise.resolve({
137
135
  error: true,
138
136
  });
139
137
  });
140
138
  br.init();
141
- const dfd = br.search('foo');
142
- return dfd.then(() => {
143
- expect(triggeredEvents()).toContain(`${namespace}SearchCallbackError`);
144
- });
139
+ await br.search('foo');
140
+ expect(triggeredEvents()).toContain(`${namespace}SearchCallbackError`);
145
141
  });
146
142
 
147
- test('SearchCallbackNotIndexed event fires when AJAX search returns false indexed value', () => {
143
+ test('SearchCallbackNotIndexed event fires when AJAX search returns false indexed value', async () => {
148
144
  $.ajax = jest.fn().mockImplementation(() => {
149
145
  return Promise.resolve({
150
146
  matches: [],
@@ -152,22 +148,18 @@ describe('Plugin: Search', () => {
152
148
  });
153
149
  });
154
150
  br.init();
155
- const dfd = br.search('foo');
156
- return dfd.then(() => {
157
- expect(triggeredEvents()).toContain(`${namespace}SearchCallbackBookNotIndexed`);
158
- });
151
+ await br.search('foo');
152
+ expect(triggeredEvents()).toContain(`${namespace}SearchCallbackBookNotIndexed`);
159
153
  });
160
154
 
161
- test('SearchCallbackEmpty event fires when AJAX search returns no matches', () => {
155
+ test('SearchCallbackEmpty event fires when AJAX search returns no matches', async () => {
162
156
  $.ajax = jest.fn().mockImplementation(() => {
163
157
  return Promise.resolve({
164
158
  matches: [],
165
159
  });
166
160
  });
167
161
  br.init();
168
- const dfd = br.search('foo');
169
- return dfd.then(() => {
170
- expect(triggeredEvents()).toContain(`${namespace}SearchCallbackEmpty`);
171
- });
162
+ await br.search('foo');
163
+ expect(triggeredEvents()).toContain(`${namespace}SearchCallbackEmpty`);
172
164
  });
173
165
  });
@@ -6,7 +6,7 @@ import PageChunkIterator from '@/src/plugins/tts/PageChunkIterator.js';
6
6
 
7
7
  // Skipping because it's flaky. Fix in #672
8
8
  describe.skip('AbstractTTSEngine', () => {
9
- test('stops playing once done', () => {
9
+ test('stops playing once done', async () => {
10
10
  class DummyEngine extends AbstractTTSEngine {
11
11
  getVoices() { return []; }
12
12
  }
@@ -15,8 +15,8 @@ describe.skip('AbstractTTSEngine', () => {
15
15
  const stopStub = sinon.stub(d, 'stop');
16
16
  expect(stopStub.callCount).toBe(0);
17
17
  d.step();
18
- return afterEventLoop()
19
- .then(() => expect(stopStub.callCount).toBe(1));
18
+ await afterEventLoop();
19
+ expect(stopStub.callCount).toBe(1);
20
20
  });
21
21
  });
22
22
 
@@ -49,7 +49,7 @@ describe('<ia-bookmarks-list>', () => {
49
49
  it('renders bookmarks that contain page numbers', async () => {
50
50
  const el = await fixture(container(bookmarks));
51
51
 
52
- expect(el.shadowRoot.innerHTML).to.include(`Page ${bookmarks[0].page}`);
52
+ expect(el.shadowRoot.textContent).to.include(`Page ${bookmarks[0].page}`);
53
53
  });
54
54
 
55
55
  it('renders bookmarks that contain an optional note', async () => {
@@ -161,7 +161,7 @@ describe('<ia-bookmarks-list>', () => {
161
161
  const el = await fixture(container([bookmarks[0]]));
162
162
  const bookmarksCount = await fixture(el.bookmarksCount);
163
163
 
164
- expect(bookmarksCount.innerHTML).to.include('(1)');
164
+ expect(bookmarksCount.textContent).to.include('(1)');
165
165
  });
166
166
 
167
167
  it('does not render the bookmarks count when no bookmarks present', async () => {
@@ -49,6 +49,6 @@ describe('<ia-book-downloads>', () => {
49
49
  expect(el.shadowRoot.querySelector("ul").childElementCount).to.equal(2);
50
50
  expect(el.isBookProtected).to.equal(false);
51
51
 
52
- expect(el.shadowRoot.querySelector("ul li a").innerHTML).to.include("Get PDF");
52
+ expect(el.shadowRoot.querySelector("ul li a").textContent).to.include("Get PDF");
53
53
  });
54
54
  });
@@ -77,15 +77,15 @@ describe('Volumes Provider', () => {
77
77
 
78
78
  provider.sortVolumes("title_asc");
79
79
  expect(provider.sortOrderBy).to.equal("title_asc");
80
- expect(provider.sortButton.getHTML()).includes("sort-by asc-icon");
80
+ expect(fixtureSync(provider.sortButton).outerHTML).includes("sort-by asc-icon");
81
81
 
82
82
  provider.sortVolumes("title_desc");
83
83
  expect(provider.sortOrderBy).to.equal("title_desc");
84
- expect(provider.sortButton.getHTML()).includes("sort-by desc-icon");
84
+ expect(fixtureSync(provider.sortButton).outerHTML).includes("sort-by desc-icon");
85
85
 
86
86
  provider.sortVolumes("default");
87
87
  expect(provider.sortOrderBy).to.equal("default");
88
- expect(provider.sortButton.getHTML()).includes("sort-by neutral-icon");
88
+ expect(fixtureSync(provider.sortButton).outerHTML).includes("sort-by neutral-icon");
89
89
  });
90
90
 
91
91
  it('sort volumes in initial order', async () => {
package/webpack.config.js CHANGED
@@ -16,7 +16,7 @@ const shared = {
16
16
  rules: [
17
17
  {
18
18
  test: /\.js$/,
19
- exclude: /node_modules[/\\](?!(lit-element|lit-html)[/\\]).*/,
19
+ exclude: /node_modules[/\\](?!(lit-element|lit-html|lit|@lit)[/\\]).*/,
20
20
  loader: "babel-loader",
21
21
  }
22
22
  ]
@@ -1,8 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: npm
4
- directory: "/"
5
- schedule:
6
- interval: monthly
7
- time: "13:00"
8
- open-pull-requests-limit: 10