doc-codec 2.1.1 → 2.2.1

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 (54) hide show
  1. package/README.md +16 -10
  2. package/dist/fib/write.cjs +2 -0
  3. package/dist/fib/write.d.cts +5 -0
  4. package/dist/fib/write.d.ts +5 -0
  5. package/dist/fib/write.js +2 -0
  6. package/dist/index.cjs +1 -0
  7. package/dist/index.d.cts +4 -4
  8. package/dist/index.d.ts +4 -4
  9. package/dist/index.js +2 -2
  10. package/dist/list/numbering-write.cjs +165 -0
  11. package/dist/list/numbering-write.d.cts +21 -0
  12. package/dist/list/numbering-write.d.ts +21 -0
  13. package/dist/list/numbering-write.js +163 -0
  14. package/dist/list/numbering.cjs +11 -10
  15. package/dist/list/numbering.d.cts +2 -2
  16. package/dist/list/numbering.d.ts +2 -2
  17. package/dist/list/numbering.js +11 -11
  18. package/dist/{numbering-Cir-uGdc.d.cts → numbering-Bivayss4.d.cts} +5 -3
  19. package/dist/{numbering-DF1z1PyG.d.ts → numbering-Co4jssbG.d.ts} +5 -3
  20. package/dist/{pap-BmelEYEP.d.cts → pap-BT1p0uzu.d.cts} +1 -1
  21. package/dist/{pap-BkFo8dZO.d.ts → pap-DOFLMWcG.d.ts} +1 -1
  22. package/dist/prop/chp-write.cjs +1 -1
  23. package/dist/prop/chp-write.js +1 -1
  24. package/dist/prop/chp.d.cts +1 -1
  25. package/dist/prop/chp.d.ts +1 -1
  26. package/dist/prop/pap-write.cjs +15 -2
  27. package/dist/prop/pap-write.d.cts +1 -1
  28. package/dist/prop/pap-write.d.ts +1 -1
  29. package/dist/prop/pap-write.js +15 -2
  30. package/dist/prop/pap.d.cts +1 -1
  31. package/dist/prop/pap.d.ts +1 -1
  32. package/dist/prop/sep.d.cts +1 -1
  33. package/dist/prop/sep.d.ts +1 -1
  34. package/dist/prop/sprm.cjs +1 -1
  35. package/dist/prop/sprm.d.cts +1 -1
  36. package/dist/prop/sprm.d.ts +1 -1
  37. package/dist/prop/sprm.js +1 -1
  38. package/dist/read.cjs +1 -0
  39. package/dist/read.d.cts +3 -3
  40. package/dist/read.d.ts +3 -3
  41. package/dist/read.js +1 -0
  42. package/dist/{sprm-Djg5RNiq.d.cts → sprm-DEyvdOo0.d.cts} +1 -1
  43. package/dist/{sprm-Djg5RNiq.d.ts → sprm-DEyvdOo0.d.ts} +1 -1
  44. package/dist/table/tap.d.cts +1 -1
  45. package/dist/table/tap.d.ts +1 -1
  46. package/dist/table/write.d.cts +1 -1
  47. package/dist/table/write.d.ts +1 -1
  48. package/dist/{write-C_vJizAM.d.cts → write-C9XbykDf.d.cts} +1 -1
  49. package/dist/{write-C_vJizAM.d.ts → write-C9XbykDf.d.ts} +1 -1
  50. package/dist/write.cjs +20 -2
  51. package/dist/write.d.cts +1 -1
  52. package/dist/write.d.ts +1 -1
  53. package/dist/write.js +20 -2
  54. package/package.json +3 -3
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_errors = require("../errors.cjs");
3
3
  const require_bytes = require("../bytes.cjs");
4
4
  //#region src/prop/sprm.ts
5
- /** Sprm.sgc, [MS-DOC] 2.6.1 -- which property family the opcode belongs to. */
5
+ /** Sprm.sgc, [MS-DOC] 2.2.5.1 -- which property family the opcode belongs to. */
6
6
  const SGC = {
7
7
  paragraph: 1,
8
8
  character: 2,
@@ -1,2 +1,2 @@
1
- import { a as operandSize, i as decodeSprm, n as SGC, o as readGrpprl, r as Sprm, t as Prl } from "../sprm-Djg5RNiq.cjs";
1
+ import { a as operandSize, i as decodeSprm, n as SGC, o as readGrpprl, r as Sprm, t as Prl } from "../sprm-DEyvdOo0.cjs";
2
2
  export { Prl, SGC, Sprm, decodeSprm, operandSize, readGrpprl };
@@ -1,2 +1,2 @@
1
- import { a as operandSize, i as decodeSprm, n as SGC, o as readGrpprl, r as Sprm, t as Prl } from "../sprm-Djg5RNiq.js";
1
+ import { a as operandSize, i as decodeSprm, n as SGC, o as readGrpprl, r as Sprm, t as Prl } from "../sprm-DEyvdOo0.js";
2
2
  export { Prl, SGC, Sprm, decodeSprm, operandSize, readGrpprl };
package/dist/prop/sprm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DocFormatError, DocUnsupportedError } from "../errors.js";
2
2
  import { readUint16LE, readUint8, slice } from "../bytes.js";
3
3
  //#region src/prop/sprm.ts
4
- /** Sprm.sgc, [MS-DOC] 2.6.1 -- which property family the opcode belongs to. */
4
+ /** Sprm.sgc, [MS-DOC] 2.2.5.1 -- which property family the opcode belongs to. */
5
5
  const SGC = {
6
6
  paragraph: 1,
7
7
  character: 2,
package/dist/read.cjs CHANGED
@@ -133,6 +133,7 @@ function paragraphAttributes(properties, context) {
133
133
  if (properties.spacingAfterPt !== void 0) attributes.spacingAfterPt = properties.spacingAfterPt;
134
134
  if (properties.lineSpacing !== void 0) attributes.lineSpacing = properties.lineSpacing;
135
135
  if (properties.indentLeftPt !== void 0) attributes.indentLeftPt = properties.indentLeftPt;
136
+ if (properties.indentRightPt !== void 0) attributes.indentRightPt = properties.indentRightPt;
136
137
  if (properties.indentFirstLinePt !== void 0) attributes.indentFirstLinePt = properties.indentFirstLinePt;
137
138
  if (properties.pageBreakBefore === true) attributes.pageBreakBefore = true;
138
139
  if (properties.listId !== void 0) attributes.list = {
package/dist/read.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as Fib } from "./fib-CtsLtF96.cjs";
2
- import { t as Prl } from "./sprm-Djg5RNiq.cjs";
3
- import { t as ParagraphProperties } from "./pap-BmelEYEP.cjs";
4
- import { n as NumberingDefinitions } from "./numbering-Cir-uGdc.cjs";
2
+ import { t as Prl } from "./sprm-DEyvdOo0.cjs";
3
+ import { t as ParagraphProperties } from "./pap-BT1p0uzu.cjs";
4
+ import { r as NumberingDefinitions } from "./numbering-Bivayss4.cjs";
5
5
  import { ContentDocument, ContentParagraph } from "document-schema.js";
6
6
  //#region src/read.d.ts
7
7
  interface DocStreams {
package/dist/read.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as Fib } from "./fib-CtsLtF96.js";
2
- import { t as Prl } from "./sprm-Djg5RNiq.js";
3
- import { t as ParagraphProperties } from "./pap-BkFo8dZO.js";
4
- import { n as NumberingDefinitions } from "./numbering-DF1z1PyG.js";
2
+ import { t as Prl } from "./sprm-DEyvdOo0.js";
3
+ import { t as ParagraphProperties } from "./pap-DOFLMWcG.js";
4
+ import { r as NumberingDefinitions } from "./numbering-Co4jssbG.js";
5
5
  import { ContentDocument, ContentParagraph } from "document-schema.js";
6
6
  //#region src/read.d.ts
7
7
  interface DocStreams {
package/dist/read.js CHANGED
@@ -132,6 +132,7 @@ function paragraphAttributes(properties, context) {
132
132
  if (properties.spacingAfterPt !== void 0) attributes.spacingAfterPt = properties.spacingAfterPt;
133
133
  if (properties.lineSpacing !== void 0) attributes.lineSpacing = properties.lineSpacing;
134
134
  if (properties.indentLeftPt !== void 0) attributes.indentLeftPt = properties.indentLeftPt;
135
+ if (properties.indentRightPt !== void 0) attributes.indentRightPt = properties.indentRightPt;
135
136
  if (properties.indentFirstLinePt !== void 0) attributes.indentFirstLinePt = properties.indentFirstLinePt;
136
137
  if (properties.pageBreakBefore === true) attributes.pageBreakBefore = true;
137
138
  if (properties.listId !== void 0) attributes.list = {
@@ -11,7 +11,7 @@ interface Prl {
11
11
  readonly sprm: Sprm;
12
12
  readonly operand: Uint8Array;
13
13
  }
14
- /** Sprm.sgc, [MS-DOC] 2.6.1 -- which property family the opcode belongs to. */
14
+ /** Sprm.sgc, [MS-DOC] 2.2.5.1 -- which property family the opcode belongs to. */
15
15
  declare const SGC: {
16
16
  readonly paragraph: 1;
17
17
  readonly character: 2;
@@ -11,7 +11,7 @@ interface Prl {
11
11
  readonly sprm: Sprm;
12
12
  readonly operand: Uint8Array;
13
13
  }
14
- /** Sprm.sgc, [MS-DOC] 2.6.1 -- which property family the opcode belongs to. */
14
+ /** Sprm.sgc, [MS-DOC] 2.2.5.1 -- which property family the opcode belongs to. */
15
15
  declare const SGC: {
16
16
  readonly paragraph: 1;
17
17
  readonly character: 2;
@@ -1,4 +1,4 @@
1
- import { t as Prl } from "../sprm-Djg5RNiq.cjs";
1
+ import { t as Prl } from "../sprm-DEyvdOo0.cjs";
2
2
  import { CellBorderSide, TableBordersSet } from "./decoration.cjs";
3
3
  import { ContentCellBorders, ContentCellFill } from "document-schema.js";
4
4
  //#region src/table/tap.d.ts
@@ -1,4 +1,4 @@
1
- import { t as Prl } from "../sprm-Djg5RNiq.js";
1
+ import { t as Prl } from "../sprm-DEyvdOo0.js";
2
2
  import { CellBorderSide, TableBordersSet } from "./decoration.js";
3
3
  import { ContentCellBorders, ContentCellFill } from "document-schema.js";
4
4
  //#region src/table/tap.d.ts
@@ -1,2 +1,2 @@
1
- import { n as WriteWarning, r as flattenSectionBlocks, t as WriteParagraph } from "../write-C_vJizAM.cjs";
1
+ import { n as WriteWarning, r as flattenSectionBlocks, t as WriteParagraph } from "../write-C9XbykDf.cjs";
2
2
  export { WriteParagraph, WriteWarning, flattenSectionBlocks };
@@ -1,2 +1,2 @@
1
- import { n as WriteWarning, r as flattenSectionBlocks, t as WriteParagraph } from "../write-C_vJizAM.js";
1
+ import { n as WriteWarning, r as flattenSectionBlocks, t as WriteParagraph } from "../write-C9XbykDf.js";
2
2
  export { WriteParagraph, WriteWarning, flattenSectionBlocks };
@@ -4,7 +4,7 @@ import { ContentBlock, ContentParagraph, ContentRun } from "document-schema.js";
4
4
  type WriteWarning = (message: string) => void;
5
5
  interface WriteParagraph {
6
6
  readonly runs: readonly ContentRun[];
7
- readonly properties: Pick<ContentParagraph, "alignment" | "indentLeftPt" | "indentFirstLinePt" | "spacingBeforePt" | "spacingAfterPt" | "lineSpacing" | "pageBreakBefore">;
7
+ readonly properties: Pick<ContentParagraph, "alignment" | "indentLeftPt" | "indentRightPt" | "indentFirstLinePt" | "spacingBeforePt" | "spacingAfterPt" | "lineSpacing" | "pageBreakBefore" | "list">;
8
8
  /** Extra grpprl bytes appended after encodeParagraphGrpprl's own output -- sprmPFInTable on every table paragraph, plus sprmPFTtp and the row's own TAP on a row's trailing mark. */
9
9
  readonly extraGrpprl: readonly number[];
10
10
  /** The character terminating this paragraph in the text stream: PARAGRAPH_MARK normally, CELL_MARK for a table cell or row mark. */
@@ -4,7 +4,7 @@ import { ContentBlock, ContentParagraph, ContentRun } from "document-schema.js";
4
4
  type WriteWarning = (message: string) => void;
5
5
  interface WriteParagraph {
6
6
  readonly runs: readonly ContentRun[];
7
- readonly properties: Pick<ContentParagraph, "alignment" | "indentLeftPt" | "indentFirstLinePt" | "spacingBeforePt" | "spacingAfterPt" | "lineSpacing" | "pageBreakBefore">;
7
+ readonly properties: Pick<ContentParagraph, "alignment" | "indentLeftPt" | "indentRightPt" | "indentFirstLinePt" | "spacingBeforePt" | "spacingAfterPt" | "lineSpacing" | "pageBreakBefore" | "list">;
8
8
  /** Extra grpprl bytes appended after encodeParagraphGrpprl's own output -- sprmPFInTable on every table paragraph, plus sprmPFTtp and the row's own TAP on a row's trailing mark. */
9
9
  readonly extraGrpprl: readonly number[];
10
10
  /** The character terminating this paragraph in the text stream: PARAGRAPH_MARK normally, CELL_MARK for a table cell or row mark. */
package/dist/write.cjs CHANGED
@@ -12,6 +12,7 @@ const require_prop_pap_write = require("./prop/pap-write.cjs");
12
12
  const require_prop_sep_write = require("./prop/sep-write.cjs");
13
13
  const require_style_stsh = require("./style/stsh.cjs");
14
14
  const require_style_fonts = require("./style/fonts.cjs");
15
+ const require_list_numbering_write = require("./list/numbering-write.cjs");
15
16
  const require_table_write = require("./table/write.cjs");
16
17
  let archive_codec = require("archive-codec");
17
18
  //#region src/write.ts
@@ -41,12 +42,19 @@ function writeDocContent(document, options = {}) {
41
42
  fontIndexByName.set(name, index);
42
43
  return index;
43
44
  };
45
+ const listUsage = require_list_numbering_write.gatherListUsage(writeParagraphs.map((entry) => entry.properties.list));
46
+ const ilfoOf = (numId) => {
47
+ const ilfo = listUsage.ilfoByNumId.get(numId);
48
+ if (ilfo === void 0) throw new require_errors.DocFormatError(`internal defect: writeDocContent's own list-usage map has no ilfo minted for numId ${JSON.stringify(numId)}`);
49
+ return ilfo;
50
+ };
51
+ const numberingTables = require_list_numbering_write.buildNumberingTables(listUsage.definitions);
44
52
  const formatted = writeParagraphs.map((entry) => ({
45
53
  runs: entry.runs.map((run) => ({
46
54
  text: run.text,
47
55
  grpprl: require_prop_chp_write.encodeCharacterGrpprl(run, fontIndexOf)
48
56
  })),
49
- grpprl: [...require_prop_pap_write.encodeParagraphGrpprl(entry.properties), ...entry.extraGrpprl]
57
+ grpprl: [...require_prop_pap_write.encodeParagraphGrpprl(entry.properties, ilfoOf), ...entry.extraGrpprl]
50
58
  }));
51
59
  let text = "";
52
60
  const paragraphStarts = [];
@@ -130,6 +138,8 @@ function writeDocContent(document, options = {}) {
130
138
  const fcStshf = place(stsh);
131
139
  const fcPlcfSed = place(plcfSed);
132
140
  const fcSttbfFfn = fontTable !== void 0 ? place(fontTable) : 0;
141
+ const fcPlfLst = numberingTables !== void 0 ? place(numberingTables.plfLst) : 0;
142
+ const fcPlfLfo = numberingTables !== void 0 ? place(numberingTables.plfLfo) : 0;
133
143
  const table = new Uint8Array(cursor);
134
144
  table.set(clx, fcClx);
135
145
  table.set(chpxBinTable, fcPlcfBteChpx);
@@ -137,6 +147,10 @@ function writeDocContent(document, options = {}) {
137
147
  table.set(stsh, fcStshf);
138
148
  table.set(plcfSed, fcPlcfSed);
139
149
  if (fontTable !== void 0) table.set(fontTable, fcSttbfFfn);
150
+ if (numberingTables !== void 0) {
151
+ table.set(numberingTables.plfLst, fcPlfLst);
152
+ table.set(numberingTables.plfLfo, fcPlfLfo);
153
+ }
140
154
  const fib = require_fib_write.buildFib({
141
155
  ccpText: text.length,
142
156
  cbMac: wordDocument.length,
@@ -151,7 +165,11 @@ function writeDocContent(document, options = {}) {
151
165
  fcStshf,
152
166
  lcbStshf: stsh.length,
153
167
  fcSttbfFfn,
154
- lcbSttbfFfn: fontTable?.length ?? 0
168
+ lcbSttbfFfn: fontTable?.length ?? 0,
169
+ fcPlfLst,
170
+ lcbPlfLst: numberingTables?.lcbPlfLst ?? 0,
171
+ fcPlfLfo,
172
+ lcbPlfLfo: numberingTables?.plfLfo.length ?? 0
155
173
  });
156
174
  wordDocument.set(fib, 0);
157
175
  const streams = [{
package/dist/write.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { n as WriteWarning } from "./write-C_vJizAM.cjs";
1
+ import { n as WriteWarning } from "./write-C9XbykDf.cjs";
2
2
  import { ContentDocument } from "document-schema.js";
3
3
  //#region src/write.d.ts
4
4
  interface WriteDocContentOptions {
package/dist/write.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { n as WriteWarning } from "./write-C_vJizAM.js";
1
+ import { n as WriteWarning } from "./write-C9XbykDf.js";
2
2
  import { ContentDocument } from "document-schema.js";
3
3
  //#region src/write.d.ts
4
4
  interface WriteDocContentOptions {
package/dist/write.js CHANGED
@@ -11,6 +11,7 @@ import { encodeParagraphGrpprl } from "./prop/pap-write.js";
11
11
  import { buildPlcfSed, buildSepx, encodeSectionGrpprl } from "./prop/sep-write.js";
12
12
  import { buildEmptyStsh } from "./style/stsh.js";
13
13
  import { buildFontTable } from "./style/fonts.js";
14
+ import { buildNumberingTables, gatherListUsage } from "./list/numbering-write.js";
14
15
  import { flattenSectionBlocks } from "./table/write.js";
15
16
  import { hasSummaryInformationFields, writeCompoundFile, writeSummaryInformationStream } from "archive-codec";
16
17
  //#region src/write.ts
@@ -40,12 +41,19 @@ function writeDocContent(document, options = {}) {
40
41
  fontIndexByName.set(name, index);
41
42
  return index;
42
43
  };
44
+ const listUsage = gatherListUsage(writeParagraphs.map((entry) => entry.properties.list));
45
+ const ilfoOf = (numId) => {
46
+ const ilfo = listUsage.ilfoByNumId.get(numId);
47
+ if (ilfo === void 0) throw new DocFormatError(`internal defect: writeDocContent's own list-usage map has no ilfo minted for numId ${JSON.stringify(numId)}`);
48
+ return ilfo;
49
+ };
50
+ const numberingTables = buildNumberingTables(listUsage.definitions);
43
51
  const formatted = writeParagraphs.map((entry) => ({
44
52
  runs: entry.runs.map((run) => ({
45
53
  text: run.text,
46
54
  grpprl: encodeCharacterGrpprl(run, fontIndexOf)
47
55
  })),
48
- grpprl: [...encodeParagraphGrpprl(entry.properties), ...entry.extraGrpprl]
56
+ grpprl: [...encodeParagraphGrpprl(entry.properties, ilfoOf), ...entry.extraGrpprl]
49
57
  }));
50
58
  let text = "";
51
59
  const paragraphStarts = [];
@@ -129,6 +137,8 @@ function writeDocContent(document, options = {}) {
129
137
  const fcStshf = place(stsh);
130
138
  const fcPlcfSed = place(plcfSed);
131
139
  const fcSttbfFfn = fontTable !== void 0 ? place(fontTable) : 0;
140
+ const fcPlfLst = numberingTables !== void 0 ? place(numberingTables.plfLst) : 0;
141
+ const fcPlfLfo = numberingTables !== void 0 ? place(numberingTables.plfLfo) : 0;
132
142
  const table = new Uint8Array(cursor);
133
143
  table.set(clx, fcClx);
134
144
  table.set(chpxBinTable, fcPlcfBteChpx);
@@ -136,6 +146,10 @@ function writeDocContent(document, options = {}) {
136
146
  table.set(stsh, fcStshf);
137
147
  table.set(plcfSed, fcPlcfSed);
138
148
  if (fontTable !== void 0) table.set(fontTable, fcSttbfFfn);
149
+ if (numberingTables !== void 0) {
150
+ table.set(numberingTables.plfLst, fcPlfLst);
151
+ table.set(numberingTables.plfLfo, fcPlfLfo);
152
+ }
139
153
  const fib = buildFib({
140
154
  ccpText: text.length,
141
155
  cbMac: wordDocument.length,
@@ -150,7 +164,11 @@ function writeDocContent(document, options = {}) {
150
164
  fcStshf,
151
165
  lcbStshf: stsh.length,
152
166
  fcSttbfFfn,
153
- lcbSttbfFfn: fontTable?.length ?? 0
167
+ lcbSttbfFfn: fontTable?.length ?? 0,
168
+ fcPlfLst,
169
+ lcbPlfLst: numberingTables?.lcbPlfLst ?? 0,
170
+ fcPlfLfo,
171
+ lcbPlfLfo: numberingTables?.plfLfo.length ?? 0
154
172
  });
155
173
  wordDocument.set(fib, 0);
156
174
  const streams = [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "doc-codec",
3
- "version": "2.1.1",
3
+ "version": "2.2.1",
4
4
  "description": "A hand-written reader for the Word Binary File Format ([MS-DOC], .doc) against the shared document-schema.js content pivot: FIB parsing, piece-table text reconstruction, and CHPX/PAPX formatting exceptions.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -78,8 +78,8 @@
78
78
  "license": "MIT",
79
79
  "packageManager": "pnpm@11.6.0",
80
80
  "dependencies": {
81
- "archive-codec": "^1.6.0",
82
- "document-schema.js": "^6.1.0"
81
+ "archive-codec": "^1.6.1",
82
+ "document-schema.js": "^6.2.0"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@arethetypeswrong/cli": "^0.18.5",