@concordance-wiki/plugin-reader-office 0.3.0 → 0.4.0

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.
package/README.md CHANGED
@@ -39,7 +39,7 @@ plugins:
39
39
  - "@concordance-wiki/plugin-convert-libreoffice"
40
40
  ```
41
41
 
42
- Every `.docx`, `.pptx`, `.xlsx` and `.pdf` file of a source becomes a document entity whose properties come from the file.
42
+ Every `.docx`, `.pptx`, `.xlsx` and `.pdf` file of a source becomes a document entity whose properties come from the file. Of a package, only the two property parts and the slide parts are inflated, none above 8 MB: media, fonts and sheets stay compressed, and an archive whose entries inflate to gigabytes never fills the memory of the build; a part that declares a DOCTYPE is refused, so that no entity is expanded.
43
43
 
44
44
  ## What you get
45
45
 
@@ -68,7 +68,7 @@ Part of [Concordance](https://github.com/concordance-wiki/concordance), GNU GPL
68
68
  | `title`, `author`, `subject`, `keywords` (list) | `docProps/core.xml` | Info dictionary |
69
69
  | `created`, `modified` (ISO 8601) | `dcterms:created`, `dcterms:modified` | `CreationDate`, `ModDate`, converted from `D:YYYYMMDDHHmmSS` |
70
70
  | `lastModifiedBy` | `cp:lastModifiedBy` | — |
71
- | `pages`, `words` | `docProps/app.xml` | `pages`: number of page objects |
71
+ | `pages`, `words` | `docProps/app.xml` | `pages`: number of page objects; a PDF over 64 MB is read from its last 16 MB alone, where an updated file keeps its trailer and its Info object, and gets no page count |
72
72
  | `slides`, `slideTitles` | pptx only: `Slides` and the title placeholder of every `ppt/slides/slideN.xml`, in slide order; an empty string when a slide has no title | — |
73
73
  | `application` | `docProps/app.xml` | — |
74
74
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3F,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,UAAU,UAAsC,CAAC;AAI9D;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,YAAY,CAcjE;;AAED,wBAKG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAMhC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,UAAU,UAAsC,CAAC;AAI9D;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,YAAY,CAcjE;;AAED,wBAKG"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { extname } from "node:path";
2
- import { definePlugin } from "@concordance-wiki/core";
2
+ import { definePlugin, PLUGIN_API_VERSION, } from "@concordance-wiki/core";
3
3
  import { readFailure } from "./failure.js";
4
4
  import { readOoxml } from "./ooxml.js";
5
5
  import { readPdf } from "./pdf.js";
@@ -29,7 +29,7 @@ export function read({ path, payload }) {
29
29
  export default definePlugin({
30
30
  name: "@concordance-wiki/plugin-reader-office",
31
31
  version: "0.0.0",
32
- apiVersion: "1",
32
+ apiVersion: PLUGIN_API_VERSION,
33
33
  contributes: { readers: [{ extensions, read }] },
34
34
  });
35
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAuC,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE9D,MAAM,UAAU,GAA8B,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAEpG;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAe;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,4BAA4B,SAAS,0BAA0B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9F,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE,wCAAwC;IAC9C,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;CACjD,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,GAGnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE9D,MAAM,UAAU,GAA8B,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAEpG;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAe;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,4BAA4B,SAAS,0BAA0B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9F,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE,wCAAwC;IAC9C,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,kBAAkB;IAC9B,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;CACjD,CAAC,CAAC"}
package/dist/ooxml.d.ts CHANGED
@@ -1,5 +1,11 @@
1
1
  import { type OfficeMetadata } from "./metadata.js";
2
2
  export type OoxmlKind = "docx" | "pptx" | "xlsx";
3
- /** Reads the document properties of a Word, PowerPoint or Excel package; a missing part yields nothing. */
3
+ /** How large a part the reader inflates: a property or slide part of several megabytes is not one. */
4
+ export declare const PART_SIZE_LIMIT: number;
5
+ /**
6
+ * Reads the document properties of a Word, PowerPoint or Excel package; a missing part yields
7
+ * nothing. Only the parts the reader looks at are inflated, and none above `PART_SIZE_LIMIT`:
8
+ * an archive whose small entries inflate to gigabytes never fills the memory of the build.
9
+ */
4
10
  export declare function readOoxml(bytes: Uint8Array, kind: OoxmlKind): OfficeMetadata;
5
11
  //# sourceMappingURL=ooxml.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ooxml.d.ts","sourceRoot":"","sources":["../src/ooxml.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAU7F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAyCjD,2GAA2G;AAC3G,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAkB5E"}
1
+ {"version":3,"file":"ooxml.d.ts","sourceRoot":"","sources":["../src/ooxml.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAU7F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AA2CjD,sGAAsG;AACtG,eAAO,MAAM,eAAe,QAAkB,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAoB5E"}
package/dist/ooxml.js CHANGED
@@ -33,9 +33,19 @@ function slideTitles(parts) {
33
33
  .sort((a, b) => a.index - b.index)
34
34
  .map((slide) => slideTitle(slide.bytes));
35
35
  }
36
- /** Reads the document properties of a Word, PowerPoint or Excel package; a missing part yields nothing. */
36
+ /** The parts the reader looks at: the two property parts and the slides. Media, fonts and sheets stay compressed. */
37
+ const READ_PARTS = /^(?:docProps\/(?:core|app)\.xml|ppt\/slides\/slide\d+\.xml)$/u;
38
+ /** How large a part the reader inflates: a property or slide part of several megabytes is not one. */
39
+ export const PART_SIZE_LIMIT = 8 * 1024 * 1024;
40
+ /**
41
+ * Reads the document properties of a Word, PowerPoint or Excel package; a missing part yields
42
+ * nothing. Only the parts the reader looks at are inflated, and none above `PART_SIZE_LIMIT`:
43
+ * an archive whose small entries inflate to gigabytes never fills the memory of the build.
44
+ */
37
45
  export function readOoxml(bytes, kind) {
38
- const parts = unzipSync(bytes);
46
+ const parts = unzipSync(bytes, {
47
+ filter: (file) => READ_PARTS.test(file.name) && file.originalSize <= PART_SIZE_LIMIT,
48
+ });
39
49
  const core = rootChildren(parts, "docProps/core.xml", "coreProperties");
40
50
  const app = rootChildren(parts, "docProps/app.xml", "Properties");
41
51
  return compact({
package/dist/ooxml.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ooxml.js","sourceRoot":"","sources":["../src/ooxml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ooxml.js","sourceRoot":"","sources":["../src/ooxml.ts"],"names":[],"mappings":"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"}
package/dist/pdf.d.ts CHANGED
@@ -1,6 +1,15 @@
1
1
  import { type OfficeMetadata } from "./metadata.js";
2
2
  /** Converts `D:YYYYMMDDHHmmSSOHH'mm'` to ISO 8601; a value in another form is kept as it is. */
3
3
  export declare function isoDate(value: string): string;
4
- /** Reads the native metadata of a PDF: the Info dictionary and the number of page objects. */
4
+ /**
5
+ * How many bytes the scan reads as text. A file this large is a scan or a bundle of images: its
6
+ * metadata sits in the trailer at its end, so only the tail is read, and no page count is given.
7
+ */
8
+ export declare const PDF_SCAN_LIMIT_BYTES: number;
9
+ /**
10
+ * Reads the native metadata of a PDF: the Info dictionary and the number of page objects. A file
11
+ * over `PDF_SCAN_LIMIT_BYTES` is read from its tail alone, where an updated file keeps its
12
+ * trailer and its Info object, and its pages are not counted.
13
+ */
5
14
  export declare function readPdf(bytes: Uint8Array): OfficeMetadata;
6
15
  //# sourceMappingURL=pdf.d.ts.map
package/dist/pdf.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAqGtF,gGAAgG;AAChG,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAgBD,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAiBzD"}
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAsGtF,gGAAgG;AAChG,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAoBD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AAGrD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAmBzD"}
package/dist/pdf.js CHANGED
@@ -31,7 +31,8 @@ function decodeString(bytes) {
31
31
  const [first, second] = bytes;
32
32
  if (first === 0xfe && second === 0xff)
33
33
  return utf16.decode(Uint8Array.from(bytes.slice(2)));
34
- return String.fromCharCode(...bytes);
34
+ // One character per byte, without spreading the bytes into a call that a long string would overflow.
35
+ return Buffer.from(bytes).toString("latin1");
35
36
  }
36
37
  /** The escape a backslash at `at` starts: the bytes it stands for and how many characters follow the backslash. */
37
38
  function escapeAt(text, at) {
@@ -106,7 +107,10 @@ export function isoDate(value) {
106
107
  const fields = dateFields.map(([start, end, fallback]) => digits.slice(start, end) || fallback);
107
108
  return `${fields.slice(0, 3).join("-")}T${fields.slice(3).join(":")}${offset(match[2])}`;
108
109
  }
109
- /** The body of the last Info object the file references: an update appends a new trailer at the end. */
110
+ /**
111
+ * The body of the last Info object the file references: an update appends a new trailer at the
112
+ * end, and may rewrite the object under its own number, so the last object of that number is read.
113
+ */
110
114
  function infoDictionary(text) {
111
115
  const references = [...text.matchAll(infoReference)];
112
116
  const last = references.at(-1);
@@ -114,20 +118,32 @@ function infoDictionary(text) {
114
118
  return "";
115
119
  const number = group(last, 1);
116
120
  const generation = group(last, 2);
117
- const object = new RegExp(String.raw `(?:^|\s)${number}\s+${generation}\s+obj\b([\s\S]*?)(?:endobj|$)`);
118
- const match = object.exec(text);
119
- return match === null ? "" : group(match, 1);
121
+ const object = new RegExp(String.raw `(?:^|\s)${number}\s+${generation}\s+obj\b([\s\S]*?)(?:endobj|$)`, "g");
122
+ const match = [...text.matchAll(object)].at(-1);
123
+ return match === undefined ? "" : group(match, 1);
120
124
  }
121
- /** Reads the native metadata of a PDF: the Info dictionary and the number of page objects. */
125
+ /**
126
+ * How many bytes the scan reads as text. A file this large is a scan or a bundle of images: its
127
+ * metadata sits in the trailer at its end, so only the tail is read, and no page count is given.
128
+ */
129
+ export const PDF_SCAN_LIMIT_BYTES = 64 * 1024 * 1024;
130
+ const TAIL_BYTES = 16 * 1024 * 1024;
131
+ /**
132
+ * Reads the native metadata of a PDF: the Info dictionary and the number of page objects. A file
133
+ * over `PDF_SCAN_LIMIT_BYTES` is read from its tail alone, where an updated file keeps its
134
+ * trailer and its Info object, and its pages are not counted.
135
+ */
122
136
  export function readPdf(bytes) {
123
- const text = latin1(bytes);
124
- if (!text.startsWith("%PDF-"))
137
+ const header = latin1(bytes.subarray(0, 5));
138
+ if (header !== "%PDF-")
125
139
  throw new Error("not a PDF file: the header is missing");
140
+ const whole = bytes.byteLength <= PDF_SCAN_LIMIT_BYTES;
141
+ const text = latin1(whole ? bytes : bytes.subarray(bytes.byteLength - TAIL_BYTES));
126
142
  const info = infoDictionary(text);
127
143
  const property = (key) => nonBlank(stringProperty(info, key));
128
144
  const created = property("CreationDate");
129
145
  const modified = property("ModDate");
130
- const pages = [...text.matchAll(pageObject)].length;
146
+ const pages = whole ? [...text.matchAll(pageObject)].length : 0;
131
147
  return compact({
132
148
  title: property("Title"),
133
149
  author: property("Author"),
package/dist/pdf.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAuB,MAAM,eAAe,CAAC;AAEtF,iGAAiG;AACjG,mGAAmG;AACnG,mGAAmG;AAEnG,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACxC,MAAM,aAAa,GAAG,+BAA+B,CAAC;AACtD,MAAM,OAAO,GAAG,yDAAyD,CAAC;AAC1E,+FAA+F;AAC/F,MAAM,UAAU,GAAwC;IACtD,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IACb,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;CACf,CAAC;AAGF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;AAC1C,MAAM,OAAO,GAA2B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAE5E,uEAAuE;AACvE,SAAS,KAAK,CAAC,KAAsB,EAAE,KAAa;IAClD,+EAA+E;IAC/E,OAAO,KAAK,CAAC,KAAK,CAAW,CAAC;AAChC,CAAC;AAED,qGAAqG;AACrG,SAAS,MAAM,CAAC,KAAiB;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1F,CAAC;AAED,kGAAkG;AAClG,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,qGAAqG;IACrG,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,mHAAmH;AACnH,SAAS,QAAQ,CAAC,IAAY,EAAE,EAAU;IACxC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9F,qFAAqF;IACrF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,+FAA+F;AAC/F,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,sGAAsG;AACtG,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC5C,MAAM,MAAM,GAAG,IAAI;SAChB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,iHAAiH;AACjH,SAAS,cAAc,CAAC,UAAkB,EAAE,GAAa;IACvD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,MAAM,CAAC,IAAwB;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IAC7B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;IAChG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,MAAM,CAAC,GAAG,CAAA,WAAW,MAAM,MAAM,UAAU,gCAAgC,EAC3E,GAAG,CACJ,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACrD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAiB;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,oBAAoB,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC;QACb,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC1B,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7D,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;KACvC,CAAC,CAAC;AACL,CAAC"}
package/dist/xml.d.ts CHANGED
@@ -5,7 +5,7 @@ export interface XmlElement {
5
5
  children: XmlElement[];
6
6
  text: string;
7
7
  }
8
- /** Namespace prefixes are dropped, so that `dc:title` and `title` are the same element. */
8
+ /** Namespace prefixes are dropped, so that `dc:title` and `title` are the same element; a part with a DOCTYPE is not read. */
9
9
  export declare function parseXml(bytes: Uint8Array): XmlElement[];
10
10
  export declare function childNamed(elements: XmlElement[], name: string): XmlElement | undefined;
11
11
  /** Every element with that name below the given ones, in document order. */
package/dist/xml.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAEA,oGAAoG;AACpG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAuCD,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAGxD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEvF;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAKnF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpF"}
1
+ {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAGA,oGAAoG;AACpG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAuCD,8HAA8H;AAC9H,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAMxD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEvF;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAKnF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpF"}
package/dist/xml.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { refusedXml } from "@concordance-wiki/core";
1
2
  import { XMLParser } from "fast-xml-parser";
2
3
  const parser = new XMLParser({
3
4
  preserveOrder: true,
@@ -26,10 +27,14 @@ function elementsOf(nodes) {
26
27
  }
27
28
  return elements;
28
29
  }
29
- /** Namespace prefixes are dropped, so that `dc:title` and `title` are the same element. */
30
+ /** Namespace prefixes are dropped, so that `dc:title` and `title` are the same element; a part with a DOCTYPE is not read. */
30
31
  export function parseXml(bytes) {
32
+ const text = decoder.decode(bytes);
33
+ const refused = refusedXml(text);
34
+ if (refused !== undefined)
35
+ throw new Error(refused);
31
36
  // The parser returns the ordered node list described above.
32
- return elementsOf(parser.parse(decoder.decode(bytes)));
37
+ return elementsOf(parser.parse(text));
33
38
  }
34
39
  export function childNamed(elements, name) {
35
40
  return elements.find((element) => element.name === name);
package/dist/xml.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgB5C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,KAAK;IACvB,mBAAmB,EAAE,EAAE;IACvB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;IACpB,mBAAmB,EAAE,KAAK;IAC1B,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,IAAI;CACnB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,SAAS,UAAU,CAAC,KAAoB;IACtC,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,KAAK,IAAI;gBAAE,SAAS;YAC3B,QAAQ,CAAC,IAAI,CACX,GAAG,KAAK,OAAO;gBACb,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC9D,CAAC,CAAC,6DAA6D;oBAC7D,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACxC,4DAA4D;IAC5D,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAkB,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAsB,EAAE,IAAY;IAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,QAAsB,EAAE,IAAY;IACnE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAmB;IACxC,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,QAAsB,EAAE,IAAY;IAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@concordance-wiki/plugin-reader-office",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Metadata reader for docx, pptx, xlsx and pdf files: properties, dates, counts and slide titles.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": {
@@ -32,7 +32,10 @@
32
32
  "dependencies": {
33
33
  "fast-xml-parser": "5.11.1",
34
34
  "fflate": "0.8.3",
35
- "@concordance-wiki/core": "0.3.0"
35
+ "@concordance-wiki/core": "0.4.0"
36
+ },
37
+ "devDependencies": {
38
+ "vitest": "4.1.11"
36
39
  },
37
40
  "scripts": {
38
41
  "typecheck": "tsc -b tsconfig.json"