@internetarchive/bookreader 5.0.0-84 → 5.0.0-86

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 5.0.0-86
2
+ - Fix: Make JSON requests with cookies for protected books @cdrini
3
+
4
+ # 5.0.0-85
5
+ - Dev: Disable JSONP requests to archive.org to make BR CSP-compatible @cdrini
6
+
1
7
  # 5.0.0-84
2
8
  - Fix: Improve/update wording for downloads @rebecca-shoptaw
3
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/bookreader",
3
- "version": "5.0.0-84",
3
+ "version": "5.0.0-86",
4
4
  "description": "The Internet Archive BookReader.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -163,11 +163,11 @@ BookReader.prototype.getOpenLibraryRecord = async function (olHost, ocaid) {
163
163
  const baseURL = `${olHost}/query.json?type=/type/edition&*=`;
164
164
  const fetchUrlByBookId = `${baseURL}&ocaid=${ocaid}`;
165
165
 
166
- let data = await $.ajax({ url: fetchUrlByBookId, dataType: 'jsonp' });
166
+ let data = await $.ajax({ url: fetchUrlByBookId });
167
167
 
168
168
  if (!data || !data.length) {
169
169
  // try sourceid
170
- data = await $.ajax({ url: `${baseURL}&source_records=ia:${ocaid}`, dataType: 'jsonp' });
170
+ data = await $.ajax({ url: `${baseURL}&source_records=ia:${ocaid}` });
171
171
  }
172
172
 
173
173
  return data?.[0];
@@ -89,6 +89,9 @@ export class TextSelectionPlugin {
89
89
  url: applyVariables(this.options.fullDjvuXmlUrl, this.optionVariables),
90
90
  dataType: this.options.jsonp ? "jsonp" : "html",
91
91
  cache: true,
92
+ xhrFields: {
93
+ withCredentials: window.br.protected,
94
+ },
92
95
  error: (e) => undefined,
93
96
  }).then((res) => {
94
97
  try {
@@ -115,6 +118,9 @@ export class TextSelectionPlugin {
115
118
  url: applyVariables(this.options.singlePageDjvuXmlUrl, this.optionVariables, { pageIndex: index }),
116
119
  dataType: this.options.jsonp ? "jsonp" : "html",
117
120
  cache: true,
121
+ xhrFields: {
122
+ withCredentials: window.br.protected,
123
+ },
118
124
  error: (e) => undefined,
119
125
  });
120
126
  try {
@@ -222,8 +222,10 @@ BookReader.prototype.search = async function(term = '', overrides = {}) {
222
222
  this.trigger('SearchStarted', { term: this.searchTerm, instance: this });
223
223
  callSearchResultsCallback(await $.ajax({
224
224
  url: url,
225
- dataType: 'jsonp',
226
225
  cache: true,
226
+ xhrFields: {
227
+ withCredentials: this.protected,
228
+ },
227
229
  beforeSend: xhr => { this.searchXHR = xhr; },
228
230
  }));
229
231
  };
@@ -25,11 +25,14 @@ export default class PageChunk {
25
25
  const chunks = await $.ajax({
26
26
  type: 'GET',
27
27
  url: `https://${server}/BookReader/BookReaderGetTextWrapper.php`,
28
- dataType:'jsonp',
29
28
  cache: true,
29
+ xhrFields: {
30
+ withCredentials: window.br.protected,
31
+ },
30
32
  data: {
31
33
  path: `${bookPath}_djvu.xml`,
32
34
  page: leafIndex,
35
+ callback: 'false',
33
36
  },
34
37
  });
35
38
  return PageChunk._fromTextWrapperResponse(leafIndex, chunks);
@@ -87,7 +87,7 @@ const FAKE_XML_EMPTY = '';
87
87
 
88
88
  describe("Generic tests", () => {
89
89
  document.body.innerHTML = '<div id="BookReader">';
90
- const br = new BookreaderWithTextSelection({
90
+ const br = window.br = new BookreaderWithTextSelection({
91
91
  data: [
92
92
  [
93
93
  { width: 800, height: 1200,