@fiduswriter/books-document 0.1.26 → 0.1.28

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
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="https://git.fiduswriter.org/fiduswriter/fiduswriter-books-plugin-ts/raw/branch/main/logo.svg" alt="@fiduswriter/books-document" width="100" height="100">
2
+ <img src="https://git.fiduswriter.org/fiduswriter/fiduswriter-books-ts/raw/branch/main/logo.svg" alt="@fiduswriter/books-document" width="100" height="100">
3
3
  </p>
4
4
 
5
5
  <h1 align="center">@fiduswriter/books-document</h1>
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/native/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAM7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAEjE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,8CAA8C,CAAA;AAalF,OAAO,EAAC,iBAAiB,EAAC,CAAA;AAE1B,qBAAa,kBAAkB;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IAEf,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAEnC,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,iBAAiB,EAAE,EACjC,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,gBAAgB,EAQtC;IAED,IAAI,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvD;IAED,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4G9B;IAED,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAIzB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/native/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAM7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAEjE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,8CAA8C,CAAA;AAalF,OAAO,EAAC,iBAAiB,EAAC,CAAA;AAE1B,qBAAa,kBAAkB;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IAEf,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAEnC,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,iBAAiB,EAAE,EACjC,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,gBAAgB,EAQtC;IAED,IAAI,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvD;IAED,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA+H9B;IAED,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAIzB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ"}
@@ -52,7 +52,14 @@ export class NativeBookExporter {
52
52
  path: this.book.path || "/",
53
53
  metadata: this.book.metadata || {},
54
54
  settings: this.book.settings || {},
55
+ // `text` is the chapter's document id and must be persisted: the
56
+ // reader rebuilds the document list from the chapter entries and
57
+ // `getMissingChapterData` matches them with
58
+ // `documentList.find(doc => doc.id === chapter.text)`. Omitting it
59
+ // makes every re-read of a written book fail to resolve its
60
+ // chapters, so the book cannot be exported again.
55
61
  chapters: sortedChapters.map((chapter, index) => ({
62
+ text: chapter.text,
56
63
  number: chapter.number,
57
64
  part: chapter.part || "",
58
65
  chapter_index: index
@@ -87,9 +94,20 @@ export class NativeBookExporter {
87
94
  httpIncludes.forEach(include => {
88
95
  include.filename = `chapters/${index}/${include.filename}`;
89
96
  });
97
+ // `ShrinkFidus` drops the document `id`, but the reader
98
+ // rebuilds each document-list entry with
99
+ // `id: docJson.id || 0` and `getMissingChapterData`
100
+ // matches chapters by `doc.id === chapter.text`. A
101
+ // chapter written without its id therefore reads back
102
+ // as 0 and cannot be resolved, so re-exporting a book
103
+ // would fail. Re-attach it before serializing.
104
+ const chapterDoc = {
105
+ id: doc.id,
106
+ ...shrunkDoc
107
+ };
90
108
  textFiles.push({
91
109
  filename: `chapters/${index}/document.json`,
92
- contents: JSON.stringify(shrunkDoc)
110
+ contents: JSON.stringify(chapterDoc)
93
111
  }, {
94
112
  filename: `chapters/${index}/images.json`,
95
113
  contents: JSON.stringify(shrunkImageDB)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/native/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/native/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAC,WAAW,EAAC,MAAM,8CAA8C,CAAA;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAA;AACpE,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AAcjD,OAAO,EAAC,iBAAiB,EAAC,CAAA;AAE1B,MAAM,OAAO,kBAAkB;IAC3B,MAAM,CAAQ;IACd,IAAI,CAAM;IACV,IAAI,CAAM;IACV,YAAY,CAAqB;IACjC,OAAO,CAAQ;IAEf,gBAAgB,CAAmB;IAEnC,YACI,MAAc,EACd,IAAU,EACV,IAAU,EACV,YAAiC,EACjC,OAAe,EACf,gBAAmC;QAEnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC5C,CAAC;IAED,IAAI,CAAC,gBAAmC;QACpC,IAAI,gBAAgB,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,EAAE,CACnB,OAAO,CAAC,kDAAkD,CAAC,EAC3D,GAAG,CACN,CAAA;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CACnB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,sCAAsC,CAAC,EAAE,EACxE,CAAC,CACJ,CAAA;QAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;aAClE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,EAAE;YACT,IAAI,CAAC,gBAAgB,EAAE,CACnB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,4BAA4B,CAAC,EAAE,EAC9D,GAAG,CACN,CAAA;YACD,OAAO,IAAI,CAAA;QACf,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,CAAC,gBAAgB,EAAE,CACnB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,0BAA0B,CAAC,EAAE,EAC5D,GAAG,CACN,CAAA;YACD,MAAM,KAAK,CAAA;QACf,CAAC,CAAC,CAAA;IACV,CAAC;IAED,cAAc;QACV,MAAM,SAAS,GAAe,EAAE,CAAA;QAChC,MAAM,SAAS,GAAkB,EAAE,CAAA;QAEnC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAChC,CAAA;QAED,MAAM,QAAQ,GAA4B;YACtC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG;YAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;YAClC,iEAAiE;YACjE,iEAAiE;YACjE,4CAA4C;YAC5C,mEAAmE;YACnE,4DAA4D;YAC5D,kDAAkD;YAClD,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,aAAa,EAAE,KAAK;aACvB,CAAC,CAAC;SACN,CAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAA;YAC7C,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAA;YACrD,QAAQ,CAAC,WAAW,GAAG;gBACnB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;gBAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,EAAE;gBACnC,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,KAAK,EAAE,SAAS,QAAQ,EAAE;aAC7B,CAAA;YACD,SAAS,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAAC,CAAC,CAAA;QAClE,CAAC;QAED,MAAM,cAAc,GAAG,CAAC,KAAa,EAAiB,EAAE;YACpD,IAAI,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;YAC5B,CAAC;YACD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;YAC9D,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CACnB,OAAO,CAAC,+BAA+B,CAAC,EACxC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CACnD,CAAA;YAED,MAAM,QAAQ,GAAG,IAAI,WAAW,CAC5B,GAA8D,EAC9D,EAAC,EAAE,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAC,EACtB,EAAC,EAAE,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,EAAC,EAC5B,IAAI,CAAC,gBAAgB,CACxB,CAAA;YAED,OAAO,QAAQ;iBACV,IAAI,EAAE;iBACN,IAAI,CACD,CAAC,EACG,GAAG,EAAE,SAAS,EACd,aAAa,EACb,WAAW,EACX,YAAY,EAMf,EAAE,EAAE;gBACD,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC3B,OAAO,CAAC,QAAQ,GAAG,YAAY,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAC9D,CAAC,CAAC,CAAA;gBAEF,wDAAwD;gBACxD,yCAAyC;gBACzC,oDAAoD;gBACpD,mDAAmD;gBACnD,sDAAsD;gBACtD,sDAAsD;gBACtD,+CAA+C;gBAC/C,MAAM,UAAU,GAA4B;oBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,GAAG,SAAS;iBACf,CAAA;gBAED,SAAS,CAAC,IAAI,CACV;oBACI,QAAQ,EAAE,YAAY,KAAK,gBAAgB;oBAC3C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;iBACvC,EACD;oBACI,QAAQ,EAAE,YAAY,KAAK,cAAc;oBACzC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;iBAC1C,EACD;oBACI,QAAQ,EAAE,YAAY,KAAK,oBAAoB;oBAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;iBACxC,CACJ,CAAA;gBACD,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;YACnC,CAAC,CACJ;iBACA,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC,CAAA;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,SAAS,CAAC,IAAI,CACV,EAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAC,EAC3D,EAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAC,CAC9D,CAAA;YAED,MAAM,MAAM,GAAG,IAAI,cAAc,CAC7B,SAAS,EACT,SAAS,EACT,EAAE,EACF,sCAAsC,EACtC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAChC,CAAA;YACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACN,CAAC;IAED,QAAQ,CAAC,IAAU;QACf,oEAAoE;QACpE,mDAAmD;QACnD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,eAAe;QACf,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;IACrD,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiduswriter/books-document",
3
- "version": "0.1.26",
3
+ "version": "0.1.28",
4
4
  "description": "Fidus Writer book importers and exporters",
5
5
  "keywords": [
6
6
  "fiduswriter",
@@ -15,13 +15,13 @@
15
15
  "export",
16
16
  "import"
17
17
  ],
18
- "homepage": "https://git.fiduswriter.org/fiduswriter/fiduswriter-books-plugin-ts",
18
+ "homepage": "https://git.fiduswriter.org/fiduswriter/fiduswriter-books-ts",
19
19
  "bugs": {
20
- "url": "https://git.fiduswriter.org/fiduswriter/fiduswriter-books-plugin-ts/issues"
20
+ "url": "https://git.fiduswriter.org/fiduswriter/fiduswriter-books-ts/issues"
21
21
  },
22
22
  "repository": {
23
23
  "type": "git",
24
- "url": "https://git.fiduswriter.org/fiduswriter/fiduswriter-books-plugin-ts.git"
24
+ "url": "https://git.fiduswriter.org/fiduswriter/fiduswriter-books-ts.git"
25
25
  },
26
26
  "license": "AGPL-3.0",
27
27
  "author": "Johannes Wilm",
@@ -109,30 +109,30 @@
109
109
  "extract-i18n": "node scripts/extract-i18n.js"
110
110
  },
111
111
  "dependencies": {
112
- "@fiduswriter/document": "^0.3.17",
113
- "bibliojson": "^4.0.4",
112
+ "@fiduswriter/document": "^0.3.19",
113
+ "bibliojson": "^4.1.0",
114
114
  "downloadjs": "^1.4.7",
115
115
  "fast-deep-equal": "^3.1.3",
116
116
  "fwtoolkit": "^0.2.26",
117
- "jszip": "^3.10.1",
118
- "js-beautify": "^2.0.3"
117
+ "js-beautify": "^2.0.3",
118
+ "jszip": "^3.10.2"
119
119
  },
120
120
  "devDependencies": {
121
121
  "@eslint/js": "^10.0.1",
122
- "@swc/core": "^1.16.1",
122
+ "@swc/core": "^1.16.13",
123
123
  "@swc/jest": "^0.2.39",
124
- "@types/node": "^26.0.1",
124
+ "@types/node": "^26.6.4",
125
125
  "@typescript/native": "npm:typescript@^7.0.2",
126
- "eslint": "^10.6.0",
126
+ "eslint": "^10.12.0",
127
127
  "gettext-parser": "^9.1.1",
128
- "globals": "^17.0.0",
128
+ "globals": "^17.13.0",
129
129
  "husky": "^9.1.7",
130
130
  "jest": "^30.5.2",
131
- "lint-staged": "^17.0.8",
132
- "prettier": "^3.8.5",
133
- "prosemirror-model": "^1.25.0",
131
+ "lint-staged": "^17.6.0",
132
+ "prettier": "^3.9.9",
133
+ "prosemirror-model": "^1.25.12",
134
134
  "typescript": "npm:@typescript/typescript6@^6.0.2",
135
- "typescript-eslint": "^8.67.0"
135
+ "typescript-eslint": "^8.71.0"
136
136
  },
137
137
  "lint-staged": {
138
138
  "*.{ts,js,mjs,css,md,json,html}": [
@@ -99,7 +99,14 @@ export class NativeBookExporter {
99
99
  path: this.book.path || "/",
100
100
  metadata: this.book.metadata || {},
101
101
  settings: this.book.settings || {},
102
+ // `text` is the chapter's document id and must be persisted: the
103
+ // reader rebuilds the document list from the chapter entries and
104
+ // `getMissingChapterData` matches them with
105
+ // `documentList.find(doc => doc.id === chapter.text)`. Omitting it
106
+ // makes every re-read of a written book fail to resolve its
107
+ // chapters, so the book cannot be exported again.
102
108
  chapters: sortedChapters.map((chapter, index) => ({
109
+ text: chapter.text,
103
110
  number: chapter.number,
104
111
  part: chapter.part || "",
105
112
  chapter_index: index
@@ -159,10 +166,22 @@ export class NativeBookExporter {
159
166
  include.filename = `chapters/${index}/${include.filename}`
160
167
  })
161
168
 
169
+ // `ShrinkFidus` drops the document `id`, but the reader
170
+ // rebuilds each document-list entry with
171
+ // `id: docJson.id || 0` and `getMissingChapterData`
172
+ // matches chapters by `doc.id === chapter.text`. A
173
+ // chapter written without its id therefore reads back
174
+ // as 0 and cannot be resolved, so re-exporting a book
175
+ // would fail. Re-attach it before serializing.
176
+ const chapterDoc: Record<string, unknown> = {
177
+ id: doc.id,
178
+ ...shrunkDoc
179
+ }
180
+
162
181
  textFiles.push(
163
182
  {
164
183
  filename: `chapters/${index}/document.json`,
165
- contents: JSON.stringify(shrunkDoc)
184
+ contents: JSON.stringify(chapterDoc)
166
185
  },
167
186
  {
168
187
  filename: `chapters/${index}/images.json`,