@prose-reader/streamer 1.307.0 → 1.308.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.
Files changed (33) hide show
  1. package/dist/archives/createArchiveFromJszip/index.cjs.js +1 -1
  2. package/dist/archives/createArchiveFromJszip/index.cjs.js.map +1 -1
  3. package/dist/archives/createArchiveFromJszip/index.es.js +13 -20
  4. package/dist/archives/createArchiveFromJszip/index.es.js.map +1 -1
  5. package/dist/archives/createArchiveFromLibArchive/index.cjs.js +1 -1
  6. package/dist/archives/createArchiveFromLibArchive/index.cjs.js.map +1 -1
  7. package/dist/archives/createArchiveFromLibArchive/index.es.js +17 -20
  8. package/dist/archives/createArchiveFromLibArchive/index.es.js.map +1 -1
  9. package/dist/archives/createArchiveFromNodeUnrarJs/index.cjs.js +2 -0
  10. package/dist/archives/createArchiveFromNodeUnrarJs/index.cjs.js.map +1 -0
  11. package/dist/archives/createArchiveFromNodeUnrarJs/index.es.js +39 -0
  12. package/dist/archives/createArchiveFromNodeUnrarJs/index.es.js.map +1 -0
  13. package/dist/archives/createArchiveFromNodeUnrarJs.d.ts +7 -0
  14. package/dist/archives/createArchiveFromUnzipper/index.cjs.js +1 -1
  15. package/dist/archives/createArchiveFromUnzipper/index.cjs.js.map +1 -1
  16. package/dist/archives/createArchiveFromUnzipper/index.es.js +15 -22
  17. package/dist/archives/createArchiveFromUnzipper/index.es.js.map +1 -1
  18. package/dist/createArchive-BB7-JJjh.js +35 -0
  19. package/dist/createArchive-BB7-JJjh.js.map +1 -0
  20. package/dist/createArchive-CeuyJUIj.cjs +3 -0
  21. package/dist/createArchive-CeuyJUIj.cjs.map +1 -0
  22. package/dist/index/index.cjs.js +3 -3
  23. package/dist/index/index.cjs.js.map +1 -1
  24. package/dist/index/index.es.js +64 -64
  25. package/package.json +14 -4
  26. package/dist/printTree-CJzGASVu.js +0 -20
  27. package/dist/printTree-CJzGASVu.js.map +0 -1
  28. package/dist/printTree-DTFYKvW1.cjs +0 -3
  29. package/dist/printTree-DTFYKvW1.cjs.map +0 -1
  30. package/dist/report-Cs9DVdJl.cjs +0 -2
  31. package/dist/report-Cs9DVdJl.cjs.map +0 -1
  32. package/dist/report-uURLD5cl.js +0 -15
  33. package/dist/report-uURLD5cl.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { n as e, t } from "../report-uURLD5cl.js";
1
+ import { n as e, t } from "../createArchive-BB7-JJjh.js";
2
2
  import { i as n, n as r, r as i, t as a } from "../uri-DBZYnB1I.js";
3
3
  import { n as o, t as s } from "../fileAccessors-etcCPnpQ.js";
4
4
  import { detectMimeTypeFromName as c, escapeXmlAttributeValue as l, isMediaContentMimeType as u, isXmlBasedMimeType as d, parseContentType as f, urlJoin as p } from "@prose-reader/shared";
@@ -6,9 +6,9 @@ import { APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME as m, COMIC_INFO_FILENAME as h, K
6
6
  import { XmlDocument as v, XmlElement as ae, XmlTextNode as oe } from "xmldoc";
7
7
  import { BehaviorSubject as se, EMPTY as y, NEVER as b, Subject as x, catchError as S, distinctUntilChanged as ce, filter as C, finalize as le, first as w, from as T, ignoreElements as ue, lastValueFrom as de, map as E, merge as D, mergeMap as O, of as fe, pairwise as pe, shareReplay as me, startWith as he, switchMap as k, takeUntil as ge, tap as A, timer as _e } from "rxjs";
8
8
  //#region src/archives/createArchiveFromArrayBufferList.ts
9
- var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
10
- let l = t;
11
- return i && (l = l.slice().sort((e, t) => n(e.name, t.name))), e({
9
+ var ve = async (e, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
10
+ let l = e;
11
+ return i && (l = l.slice().sort((e, t) => n(e.name, t.name))), t({
12
12
  filename: a,
13
13
  encodingFormat: o,
14
14
  records: l.map((e) => {
@@ -28,7 +28,7 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
28
28
  }),
29
29
  close: () => Promise.resolve()
30
30
  });
31
- }, ye = async (t, { mimeType: n, direction: i } = { mimeType: "text/plain" }) => {
31
+ }, ye = async (e, { mimeType: n, direction: i } = { mimeType: "text/plain" }) => {
32
32
  let a = `
33
33
  <?xml version="1.0" encoding="UTF-8"?>
34
34
  <package xmlns="http://www.idpf.org/2007/opf" version="3.0" xml:lang="ja" prefix="rendition: http://www.idpf.org/vocab/rendition/#"
@@ -45,7 +45,7 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
45
45
  </spine>
46
46
  </package>
47
47
  `;
48
- return e({
48
+ return t({
49
49
  filename: "content.txt",
50
50
  encodingFormat: n,
51
51
  records: [{
@@ -58,9 +58,9 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
58
58
  dir: !1,
59
59
  basename: r("p01.txt"),
60
60
  uri: "p01.txt",
61
- size: typeof t == "string" ? new Blob([t]).size : t.size,
61
+ size: typeof e == "string" ? new Blob([e]).size : e.size,
62
62
  encodingFormat: n,
63
- ...o(async () => typeof t == "string" ? new Blob([t]) : t)
63
+ ...o(async () => typeof e == "string" ? new Blob([e]) : e)
64
64
  }],
65
65
  close: () => Promise.resolve()
66
66
  });
@@ -77,8 +77,8 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
77
77
  }, F = () => {
78
78
  let e = /* @__PURE__ */ new Set();
79
79
  return (t) => P(t, e);
80
- }, Te = async (t, n) => {
81
- let i = F(), a = t.map((e) => ({
80
+ }, Te = async (e, n) => {
81
+ let i = F(), a = e.map((e) => ({
82
82
  id: i(e),
83
83
  url: e
84
84
  })), s = `
@@ -97,7 +97,7 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
97
97
  ${a.map(({ id: e }) => `<itemref idref="${e}" />`).join("\n")}
98
98
  </spine>
99
99
  </package>
100
- `, u = t.map((e) => ({
100
+ `, u = e.map((e) => ({
101
101
  dir: !1,
102
102
  basename: r(e),
103
103
  encodingFormat: c(e),
@@ -105,7 +105,7 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
105
105
  size: 0,
106
106
  ...o(async () => (await fetch(e)).blob())
107
107
  }));
108
- return e({
108
+ return t({
109
109
  records: [{
110
110
  dir: !1,
111
111
  basename: "content.opf",
@@ -118,8 +118,8 @@ var ve = async (t, { orderByAlpha: i, name: a, encodingFormat: o } = {}) => {
118
118
  }, I = (e) => !e.dir, Ee = (e) => e.dir, L = (e, t) => {
119
119
  let n = e.recordsByUri.get(t);
120
120
  return n && I(n) ? n : void 0;
121
- }, De = h.toLowerCase(), R = (e) => e.records.find((e) => I(e) && e.basename.toLowerCase() === De), z = async (e) => new TextDecoder().decode(await e.arrayBuffer()), Oe = ({ enableReport: e } = {}) => {
122
- t.enable(!!e);
121
+ }, De = h.toLowerCase(), R = (e) => e.records.find((e) => I(e) && e.basename.toLowerCase() === De), z = async (e) => new TextDecoder().decode(await e.arrayBuffer()), Oe = ({ enableReport: t } = {}) => {
122
+ e.enable(!!t);
123
123
  }, B = (e) => {
124
124
  let t = e.records.filter((e) => !e.dir).find((e) => e.uri.endsWith(".opf"));
125
125
  return {
@@ -226,12 +226,12 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
226
226
  }, Le = (e) => {
227
227
  let t = e?.trim();
228
228
  if (t === "cover" || t === "title-page" || t === "copyright-page" || t === "text") return t;
229
- }, Re = ({ archive: e, baseUrl: n, archiveOpf: r }) => async (i) => {
229
+ }, Re = ({ archive: t, baseUrl: n, archiveOpf: r }) => async (i) => {
230
230
  if (!r) return i;
231
231
  let { opf: a, basePath: o } = r, s = _(a);
232
- t.groupCollapsed(...t.getGroupArgs("OPF parsed")), t.log("opf", a), t.groupEnd();
233
- let c = a.renditionLayoutMeta?.trim(), l = c === "reflowable" || c === "pre-paginated" ? c : s.renditionLayout, u = a.title?.trim() || e.records.find(({ dir: e }) => e)?.basename || "", d = s.readingDirection ?? i.readingDirection, f = (await H({
234
- archive: e,
232
+ e.groupCollapsed(...e.getGroupArgs("OPF parsed")), e.log("opf", a), e.groupEnd();
233
+ let c = a.renditionLayoutMeta?.trim(), l = c === "reflowable" || c === "pre-paginated" ? c : s.renditionLayout, u = a.title?.trim() || t.records.find(({ dir: e }) => e)?.basename || "", d = s.readingDirection ?? i.readingDirection, f = (await H({
234
+ archive: t,
235
235
  archiveOpf: r
236
236
  })).filter(I).reduce((e, t) => t.size + e, 0), p = a.guide, m = [];
237
237
  for (let e of p) {
@@ -243,27 +243,27 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
243
243
  });
244
244
  }
245
245
  return {
246
- filename: e.filename ?? "",
246
+ filename: t.filename ?? "",
247
247
  renditionLayout: l,
248
248
  renditionFlow: Fe(a.renditionFlowMeta),
249
249
  renditionSpread: Ie(a.renditionSpreadMeta),
250
250
  title: u,
251
251
  readingDirection: d,
252
- spineItems: a.spineRows.map((t, r) => {
253
- let i = L(e, o ? `${o}/${t.href}` : t.href), s = i ? i.size : 0, c = n || (/^https?:\/\//.test(t.href) ? "" : "file://");
252
+ spineItems: a.spineRows.map((e, r) => {
253
+ let i = L(t, o ? `${o}/${e.href}` : e.href), s = i ? i.size : 0, c = n || (/^https?:\/\//.test(e.href) ? "" : "file://");
254
254
  return {
255
- id: t.id,
255
+ id: e.id,
256
256
  index: r,
257
- href: t.href.startsWith("https://") ? t.href : o ? `${c}${o}/${t.href}` : `${c}${t.href}`,
258
- renditionLayout: t.renditionLayout ?? l,
259
- ...t.renditionFlow === void 0 ? {} : { renditionFlow: t.renditionFlow },
257
+ href: e.href.startsWith("https://") ? e.href : o ? `${c}${o}/${e.href}` : `${c}${e.href}`,
258
+ renditionLayout: e.renditionLayout ?? l,
259
+ ...e.renditionFlow === void 0 ? {} : { renditionFlow: e.renditionFlow },
260
260
  progressionWeight: f > 0 ? s / f : 1 / a.spineRows.length,
261
- pageSpreadLeft: t.pageSpreadLeft,
262
- pageSpreadRight: t.pageSpreadRight,
263
- mediaType: t.mediaType
261
+ pageSpreadLeft: e.pageSpreadLeft,
262
+ pageSpreadRight: e.pageSpreadRight,
263
+ mediaType: e.mediaType
264
264
  };
265
265
  }),
266
- items: U(a.manifestItems, e, (e) => /^https?:\/\//.test(e) ? "" : n || "file://"),
266
+ items: U(a.manifestItems, t, (e) => /^https?:\/\//.test(e) ? "" : n || "file://"),
267
267
  guide: m.length > 0 ? m : void 0
268
268
  };
269
269
  }, ze = (e) => {
@@ -451,43 +451,43 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
451
451
  ...r,
452
452
  nav: { toc: i }
453
453
  } : r;
454
- }, it = (e) => e ? e.endsWith("/") ? e : `${e}/` : "", J = async (e, { baseUrl: n = "", hooks: r = {} } = {}) => {
455
- t.log("Generating manifest from archive", e);
456
- let i = await V(e), a = it(n), o = (t) => (t ?? []).map((t) => t({
457
- archive: e,
454
+ }, it = (e) => e ? e.endsWith("/") ? e : `${e}/` : "", J = async (t, { baseUrl: n = "", hooks: r = {} } = {}) => {
455
+ e.log("Generating manifest from archive", t);
456
+ let i = await V(t), a = it(n), o = (e) => (e ?? []).map((e) => e({
457
+ archive: t,
458
458
  baseUrl: a
459
459
  })), s = [
460
460
  Re({
461
- archive: e,
461
+ archive: t,
462
462
  baseUrl: a,
463
463
  archiveOpf: i
464
464
  }),
465
465
  Me({
466
- archive: e,
466
+ archive: t,
467
467
  baseUrl: a
468
468
  }),
469
469
  Ae({
470
- archive: e,
470
+ archive: t,
471
471
  baseUrl: a
472
472
  }),
473
473
  Ke({
474
- archive: e,
474
+ archive: t,
475
475
  baseUrl: a
476
476
  }),
477
477
  ...o(r.content)
478
478
  ], c = o(r.spine), l = [
479
479
  Ve({
480
- archive: e,
480
+ archive: t,
481
481
  baseUrl: a,
482
482
  archiveOpf: i
483
483
  }),
484
484
  We({
485
- archive: e,
485
+ archive: t,
486
486
  baseUrl: a
487
487
  }),
488
488
  ...o(r.presentation)
489
489
  ], u = [rt({
490
- archive: e,
490
+ archive: t,
491
491
  baseUrl: a,
492
492
  archiveOpf: i
493
493
  }), ...o(r.navigation)], d = [
@@ -499,16 +499,16 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
499
499
  ];
500
500
  try {
501
501
  let n = Pe({
502
- archive: e,
502
+ archive: t,
503
503
  baseUrl: a
504
504
  })(), r = await d.reduce(async (e, t) => await t(await e), n);
505
- if (t.log("Generated manifest", r), process.env.NODE_ENV === "development" && t.isEnabled()) {
506
- let e = JSON.stringify(r, null, 2);
507
- t.groupCollapsed(...t.getGroupArgs("Generated manifest")), t.log(`\n${e}`), t.groupEnd();
505
+ if (e.log("Generated manifest", r), process.env.NODE_ENV === "development" && e.isEnabled()) {
506
+ let t = JSON.stringify(r, null, 2);
507
+ e.groupCollapsed(...e.getGroupArgs("Generated manifest")), e.log(`\n${t}`), e.groupEnd();
508
508
  }
509
509
  return r;
510
- } catch (e) {
511
- throw t.error(e), e;
510
+ } catch (t) {
511
+ throw e.error(t), t;
512
512
  }
513
513
  }, at = (e) => {
514
514
  let t = e.descendantWithPath("head")?.childrenNamed("meta").find((e) => e.attr.name === "calibre:cover");
@@ -576,40 +576,40 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
576
576
  };
577
577
  }
578
578
  return n;
579
- }, X = async (e, n, { hooks: r = [] } = {}) => {
579
+ }, X = async (t, n, { hooks: r = [] } = {}) => {
580
580
  let i = { params: {} }, a = [
581
- ...r.map((t) => t({
582
- archive: e,
581
+ ...r.map((e) => e({
582
+ archive: t,
583
583
  resourcePath: n
584
584
  })),
585
585
  ft({
586
- archive: e,
586
+ archive: t,
587
587
  resourcePath: n
588
588
  }),
589
589
  pt({
590
- archive: e,
590
+ archive: t,
591
591
  resourcePath: n
592
592
  }),
593
593
  lt({
594
- archive: e,
594
+ archive: t,
595
595
  resourcePath: n
596
596
  }),
597
597
  ct({
598
- archive: e,
598
+ archive: t,
599
599
  resourcePath: n
600
600
  })
601
601
  ];
602
602
  try {
603
603
  let r = await a.reduce(async (e, t) => await t(await e), Promise.resolve(i));
604
- if (t.log("Generated resource", n, r), r.body !== void 0) return r;
605
- let o = L(e, n);
604
+ if (e.log("Generated resource", n, r), r.body !== void 0) return r;
605
+ let o = L(t, n);
606
606
  if (!o) throw Error(`no file found for resourcePath:${n}`);
607
607
  return {
608
608
  ...r,
609
609
  body: await o.blob()
610
610
  };
611
- } catch (e) {
612
- throw t.error(e), e;
611
+ } catch (t) {
612
+ throw e.error(t), t;
613
613
  }
614
614
  }, mt = class {
615
615
  constructor(e) {
@@ -636,19 +636,19 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
636
636
  get overTTL$() {
637
637
  return this.isUnlocked$.pipe(k((e) => e ? this.cleanArchiveAfter === Infinity ? b : _e(this.cleanArchiveAfter) : b));
638
638
  }
639
- }, ht = ({ getArchive: e, cleanArchiveAfter: n = 300 * 1e3 }) => {
639
+ }, ht = ({ getArchive: t, cleanArchiveAfter: n = 300 * 1e3 }) => {
640
640
  let r = new x(), i = new x(), a = new x(), o = {};
641
641
  return r.pipe(O((n) => {
642
642
  let r = o[n];
643
643
  if (!r || r.state.status !== "idle") return y;
644
- let i = !1, s = (e) => {
645
- t.debug(`Cleaning up archive with key: ${e}`);
646
- let n = o[e];
647
- delete o[e], i ||= (n?.state.archive?.close(), !0);
644
+ let i = !1, s = (t) => {
645
+ e.debug(`Cleaning up archive with key: ${t}`);
646
+ let n = o[t];
647
+ delete o[t], i ||= (n?.state.archive?.close(), !0);
648
648
  };
649
649
  r.update({ status: "loading" });
650
650
  let c = r.locks$, l = r.isUnlocked$, u = c.pipe(pe(), C(([e, t]) => t > e), he(!0));
651
- return T(e(n)).pipe(A((e) => {
651
+ return T(t(n)).pipe(A((e) => {
652
652
  r.update({
653
653
  archive: e,
654
654
  status: "success"
@@ -822,6 +822,6 @@ var ke = m.toLowerCase(), Ae = ({ archive: e }) => async (t) => {
822
822
  }
823
823
  };
824
824
  //#endregion
825
- export { Ct as ServiceWorkerStreamer, $ as Streamer, s as arrayBufferFileAccessors, o as blobFileAccessors, Oe as configure, e as createArchive, ve as createArchiveFromArrayBufferList, ye as createArchiveFromText, Te as createArchiveFromUrls, P as createUniqueXmlSafeId, N as createXmlSafeId, F as createXmlSafeIdFactory, J as generateManifestFromArchive, X as generateResourceFromArchive, L as getArchiveFileRecordByUri, R as getArchiveHasComicInfo, B as getArchiveOpfInfo, a as getUriBasePath, r as getUriBasename, Ee as isDirectoryRecord, I as isFileRecord, z as readRecordAsText, i as removeTrailingSlash, n as sortByTitleComparator };
825
+ export { Ct as ServiceWorkerStreamer, $ as Streamer, s as arrayBufferFileAccessors, o as blobFileAccessors, Oe as configure, t as createArchive, ve as createArchiveFromArrayBufferList, ye as createArchiveFromText, Te as createArchiveFromUrls, P as createUniqueXmlSafeId, N as createXmlSafeId, F as createXmlSafeIdFactory, J as generateManifestFromArchive, X as generateResourceFromArchive, L as getArchiveFileRecordByUri, R as getArchiveHasComicInfo, B as getArchiveOpfInfo, a as getUriBasePath, r as getUriBasename, Ee as isDirectoryRecord, I as isFileRecord, z as readRecordAsText, i as removeTrailingSlash, n as sortByTitleComparator };
826
826
 
827
827
  //# sourceMappingURL=index.es.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/streamer",
3
- "version": "1.307.0",
3
+ "version": "1.308.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index/index.cjs.js",
6
6
  "module": "./dist/index/index.es.js",
@@ -24,6 +24,11 @@
24
24
  "types": "./dist/archives/createArchiveFromUnzipper.d.ts",
25
25
  "import": "./dist/archives/createArchiveFromUnzipper/index.es.js",
26
26
  "require": "./dist/archives/createArchiveFromUnzipper/index.cjs.js"
27
+ },
28
+ "./archives/createArchiveFromNodeUnrarJs": {
29
+ "types": "./dist/archives/createArchiveFromNodeUnrarJs.d.ts",
30
+ "import": "./dist/archives/createArchiveFromNodeUnrarJs/index.es.js",
31
+ "require": "./dist/archives/createArchiveFromNodeUnrarJs/index.cjs.js"
27
32
  }
28
33
  },
29
34
  "types": "./dist/index.d.ts",
@@ -39,14 +44,15 @@
39
44
  "test:watch": "vitest watch"
40
45
  },
41
46
  "dependencies": {
42
- "@prose-reader/archive-parser": "^1.307.0",
43
- "@prose-reader/shared": "^1.307.0",
47
+ "@prose-reader/archive-parser": "^1.308.0",
48
+ "@prose-reader/shared": "^1.308.0",
44
49
  "xmldoc": "^2.0.0"
45
50
  },
46
51
  "peerDependencies": {
47
52
  "buffer": "^6.0.3",
48
53
  "jszip": "^3.10.0",
49
54
  "libarchive.js": "^2.0.2",
55
+ "node-unrar-js": "^2.0.2",
50
56
  "rxjs": "*",
51
57
  "unzipper": "^0.12.3"
52
58
  },
@@ -59,15 +65,19 @@
59
65
  },
60
66
  "libarchive.js": {
61
67
  "optional": true
68
+ },
69
+ "node-unrar-js": {
70
+ "optional": true
62
71
  }
63
72
  },
64
- "gitHead": "2589a3a1ee950ebfa8c6ad1a3b77e12345226bf6",
73
+ "gitHead": "cac46ce4cf4cbfb4e2163cedcacb5b2c37374150",
65
74
  "devDependencies": {
66
75
  "@types/unzipper": "^0.10.11",
67
76
  "buffer": "^6.0.3",
68
77
  "isomorphic-fetch": "^3.0.0",
69
78
  "jszip": "^3.10.0",
70
79
  "libarchive.js": "^2.0.2",
80
+ "node-unrar-js": "^2.0.2",
71
81
  "unzipper": "^0.12.3"
72
82
  }
73
83
  }
@@ -1,20 +0,0 @@
1
- //#region src/archives/printTree.ts
2
- var e = (e) => {
3
- let t = {};
4
- for (let n of e) {
5
- let e = n.split("/"), r = t;
6
- for (let t = 0; t < e.length; t++) {
7
- let n = e[t];
8
- n !== void 0 && (r[n] || (r[n] = {}), r = r[n]);
9
- }
10
- }
11
- let n = (e, t = "") => Object.keys(e).sort().map((r, i, a) => {
12
- let o = i === a.length - 1, s = t + (o ? "└── " : "├── "), c = t + (o ? " " : "│ "), l = e[r];
13
- return l && Object.keys(l).length > 0 ? `${s}${r}/\n${n(l, c)}` : `${s}${r}`;
14
- }).join("\n");
15
- return n(t);
16
- };
17
- //#endregion
18
- export { e as t };
19
-
20
- //# sourceMappingURL=printTree-CJzGASVu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"printTree-CJzGASVu.js","names":[],"sources":["../src/archives/printTree.ts"],"sourcesContent":["interface TreeNode {\n [key: string]: TreeNode\n}\n\nexport const printTree = (paths: string[]): string => {\n // Split and collect all parts for tree reconstruction\n const tree: TreeNode = {}\n for (const path of paths) {\n const parts = path.split(\"/\")\n let node = tree\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]\n if (part === undefined) continue\n if (!node[part]) {\n node[part] = {}\n }\n node = node[part]\n }\n }\n\n // Recursively build the tree string\n const render = (node: TreeNode, indent = \"\"): string => {\n return Object.keys(node)\n .sort()\n .map((key, i, arr) => {\n const isLast = i === arr.length - 1\n const prefix = indent + (isLast ? \"└── \" : \"├── \")\n const nextIndent = indent + (isLast ? \" \" : \"│ \")\n const value = node[key]\n if (value && Object.keys(value).length > 0) {\n return `${prefix}${key}/\\n${render(value, nextIndent)}`\n }\n return `${prefix}${key}`\n })\n .join(\"\\n\")\n }\n\n return render(tree)\n}\n"],"mappings":";AAIA,IAAa,KAAa,MAA4B;CAEpD,IAAM,IAAiB,CAAC;CACxB,KAAK,IAAM,KAAQ,GAAO;EACxB,IAAM,IAAQ,EAAK,MAAM,GAAG,GACxB,IAAO;EACX,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;GACrC,IAAM,IAAO,EAAM;GACf,MAAS,KAAA,MACR,EAAK,OACR,EAAK,KAAQ,CAAC,IAEhB,IAAO,EAAK;EACd;CACF;CAGA,IAAM,KAAU,GAAgB,IAAS,OAChC,OAAO,KAAK,CAAI,EACpB,KAAK,EACL,KAAK,GAAK,GAAG,MAAQ;EACpB,IAAM,IAAS,MAAM,EAAI,SAAS,GAC5B,IAAS,KAAU,IAAS,SAAS,SACrC,IAAa,KAAU,IAAS,SAAS,SACzC,IAAQ,EAAK;EAInB,OAHI,KAAS,OAAO,KAAK,CAAK,EAAE,SAAS,IAChC,GAAG,IAAS,EAAI,KAAK,EAAO,GAAO,CAAU,MAE/C,GAAG,IAAS;CACrB,CAAC,EACA,KAAK,IAAI;CAGd,OAAO,EAAO,CAAI;AACpB"}
@@ -1,3 +0,0 @@
1
- var e=e=>{let t={};for(let n of e){let e=n.split(`/`),r=t;for(let t=0;t<e.length;t++){let n=e[t];n!==void 0&&(r[n]||(r[n]={}),r=r[n])}}let n=(e,t=``)=>Object.keys(e).sort().map((r,i,a)=>{let o=i===a.length-1,s=t+(o?`└── `:`├── `),c=t+(o?` `:`│ `),l=e[r];return l&&Object.keys(l).length>0?`${s}${r}/\n${n(l,c)}`:`${s}${r}`}).join(`
2
- `);return n(t)};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return e}});
3
- //# sourceMappingURL=printTree-DTFYKvW1.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"printTree-DTFYKvW1.cjs","names":[],"sources":["../src/archives/printTree.ts"],"sourcesContent":["interface TreeNode {\n [key: string]: TreeNode\n}\n\nexport const printTree = (paths: string[]): string => {\n // Split and collect all parts for tree reconstruction\n const tree: TreeNode = {}\n for (const path of paths) {\n const parts = path.split(\"/\")\n let node = tree\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]\n if (part === undefined) continue\n if (!node[part]) {\n node[part] = {}\n }\n node = node[part]\n }\n }\n\n // Recursively build the tree string\n const render = (node: TreeNode, indent = \"\"): string => {\n return Object.keys(node)\n .sort()\n .map((key, i, arr) => {\n const isLast = i === arr.length - 1\n const prefix = indent + (isLast ? \"└── \" : \"├── \")\n const nextIndent = indent + (isLast ? \" \" : \"│ \")\n const value = node[key]\n if (value && Object.keys(value).length > 0) {\n return `${prefix}${key}/\\n${render(value, nextIndent)}`\n }\n return `${prefix}${key}`\n })\n .join(\"\\n\")\n }\n\n return render(tree)\n}\n"],"mappings":"AAIA,IAAa,EAAa,GAA4B,CAEpD,IAAM,EAAiB,CAAC,EACxB,IAAK,IAAM,KAAQ,EAAO,CACxB,IAAM,EAAQ,EAAK,MAAM,GAAG,EACxB,EAAO,EACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,IAAM,EAAO,EAAM,GACf,IAAS,IAAA,KACR,EAAK,KACR,EAAK,GAAQ,CAAC,GAEhB,EAAO,EAAK,GACd,CACF,CAGA,IAAM,GAAU,EAAgB,EAAS,KAChC,OAAO,KAAK,CAAI,EACpB,KAAK,EACL,KAAK,EAAK,EAAG,IAAQ,CACpB,IAAM,EAAS,IAAM,EAAI,OAAS,EAC5B,EAAS,GAAU,EAAS,OAAS,QACrC,EAAa,GAAU,EAAS,OAAS,QACzC,EAAQ,EAAK,GAInB,OAHI,GAAS,OAAO,KAAK,CAAK,EAAE,OAAS,EAChC,GAAG,IAAS,EAAI,KAAK,EAAO,EAAO,CAAU,IAE/C,GAAG,IAAS,GACrB,CAAC,EACA,KAAK;CAAI,EAGd,OAAO,EAAO,CAAI,CACpB"}
@@ -1,2 +0,0 @@
1
- let e=require("@prose-reader/shared");var t=({records:e,...t})=>{let n=new Map;for(let t of e)n.has(t.uri)||n.set(t.uri,t);return{...t,records:e,recordsByUri:n}},n=e.Report.namespace(`@prose-reader/streamer`,!1,{color:`#ffae42`});Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
2
- //# sourceMappingURL=report-Cs9DVdJl.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-Cs9DVdJl.cjs","names":[],"sources":["../src/archives/createArchive.ts","../package.json","../src/report.ts"],"sourcesContent":["import type { Archive, ArchiveRecord } from \"./types\"\n\ntype ArchiveInit = Omit<Archive, \"recordsByUri\">\n\n/**\n * Builds an {@link Archive} from its records and derives the `recordsByUri`\n * lookup index once, so consumers resolve records in O(1) on the hot path\n * instead of scanning {@link Archive.records}. Duplicate URIs keep the first\n * record, matching the previous `Array.prototype.find` semantics.\n */\nexport const createArchive = ({ records, ...rest }: ArchiveInit): Archive => {\n const recordsByUri = new Map<string, ArchiveRecord>()\n\n for (const record of records) {\n if (!recordsByUri.has(record.uri)) {\n recordsByUri.set(record.uri, record)\n }\n }\n\n return {\n ...rest,\n records,\n recordsByUri,\n }\n}\n","{\n \"name\": \"@prose-reader/streamer\",\n \"version\": \"1.306.0\",\n \"type\": \"module\",\n \"main\": \"./dist/index/index.cjs.js\",\n \"module\": \"./dist/index/index.es.js\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index/index.es.js\",\n \"require\": \"./dist/index/index.cjs.js\"\n },\n \"./archives/createArchiveFromJszip\": {\n \"types\": \"./dist/archives/createArchiveFromJszip.d.ts\",\n \"import\": \"./dist/archives/createArchiveFromJszip/index.es.js\",\n \"require\": \"./dist/archives/createArchiveFromJszip/index.cjs.js\"\n },\n \"./archives/createArchiveFromLibArchive\": {\n \"types\": \"./dist/archives/createArchiveFromLibArchive.d.ts\",\n \"import\": \"./dist/archives/createArchiveFromLibArchive/index.es.js\",\n \"require\": \"./dist/archives/createArchiveFromLibArchive/index.cjs.js\"\n },\n \"./archives/createArchiveFromUnzipper\": {\n \"types\": \"./dist/archives/createArchiveFromUnzipper.d.ts\",\n \"import\": \"./dist/archives/createArchiveFromUnzipper/index.es.js\",\n \"require\": \"./dist/archives/createArchiveFromUnzipper/index.cjs.js\"\n }\n },\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"files\": [\n \"/dist\"\n ],\n \"scripts\": {\n \"start\": \"vite build --watch --mode development\",\n \"build\": \"tsc && vite build\",\n \"test\": \"vitest run --coverage\",\n \"tsc\": \"tsc\",\n \"test:watch\": \"vitest watch\"\n },\n \"dependencies\": {\n \"@prose-reader/archive-parser\": \"^1.306.0\",\n \"@prose-reader/shared\": \"^1.306.0\",\n \"xmldoc\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"buffer\": \"^6.0.3\",\n \"jszip\": \"^3.10.0\",\n \"libarchive.js\": \"^2.0.2\",\n \"rxjs\": \"*\",\n \"unzipper\": \"^0.12.3\"\n },\n \"peerDependenciesMeta\": {\n \"jszip\": {\n \"optional\": true\n },\n \"unzipper\": {\n \"optional\": true\n },\n \"libarchive.js\": {\n \"optional\": true\n }\n },\n \"gitHead\": \"4601e14dcacf50b2295cb343582a7ef2c7e1eedc\",\n \"devDependencies\": {\n \"@types/unzipper\": \"^0.10.11\",\n \"buffer\": \"^6.0.3\",\n \"isomorphic-fetch\": \"^3.0.0\",\n \"jszip\": \"^3.10.0\",\n \"libarchive.js\": \"^2.0.2\",\n \"unzipper\": \"^0.12.3\"\n }\n}\n","import { Report as SharedReport } from \"@prose-reader/shared\"\nimport { name } from \"../package.json\"\n\nexport const Report = SharedReport.namespace(name, false, {\n color: \"#ffae42\",\n})\n"],"mappings":"sCAUA,IAAa,GAAiB,CAAE,UAAS,GAAG,KAAiC,CAC3E,IAAM,EAAe,IAAI,IAEzB,IAAK,IAAM,KAAU,EACd,EAAa,IAAI,EAAO,GAAG,GAC9B,EAAa,IAAI,EAAO,IAAK,CAAM,EAIvC,MAAO,CACL,GAAG,EACH,UACA,cACF,CACF,EErBa,EAAS,EAAA,OAAa,UAAU,yBAAM,GAAO,CACxD,MAAO,SACT,CAAC"}
@@ -1,15 +0,0 @@
1
- import { Report as e } from "@prose-reader/shared";
2
- //#region src/archives/createArchive.ts
3
- var t = ({ records: e, ...t }) => {
4
- let n = /* @__PURE__ */ new Map();
5
- for (let t of e) n.has(t.uri) || n.set(t.uri, t);
6
- return {
7
- ...t,
8
- records: e,
9
- recordsByUri: n
10
- };
11
- }, n = e.namespace("@prose-reader/streamer", !1, { color: "#ffae42" });
12
- //#endregion
13
- export { t as n, n as t };
14
-
15
- //# sourceMappingURL=report-uURLD5cl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-uURLD5cl.js","names":[],"sources":["../src/archives/createArchive.ts","../package.json","../src/report.ts"],"sourcesContent":["import type { Archive, ArchiveRecord } from \"./types\"\n\ntype ArchiveInit = Omit<Archive, \"recordsByUri\">\n\n/**\n * Builds an {@link Archive} from its records and derives the `recordsByUri`\n * lookup index once, so consumers resolve records in O(1) on the hot path\n * instead of scanning {@link Archive.records}. Duplicate URIs keep the first\n * record, matching the previous `Array.prototype.find` semantics.\n */\nexport const createArchive = ({ records, ...rest }: ArchiveInit): Archive => {\n const recordsByUri = new Map<string, ArchiveRecord>()\n\n for (const record of records) {\n if (!recordsByUri.has(record.uri)) {\n recordsByUri.set(record.uri, record)\n }\n }\n\n return {\n ...rest,\n records,\n recordsByUri,\n }\n}\n","{\n \"name\": \"@prose-reader/streamer\",\n \"version\": \"1.306.0\",\n \"type\": \"module\",\n \"main\": \"./dist/index/index.cjs.js\",\n \"module\": \"./dist/index/index.es.js\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index/index.es.js\",\n \"require\": \"./dist/index/index.cjs.js\"\n },\n \"./archives/createArchiveFromJszip\": {\n \"types\": \"./dist/archives/createArchiveFromJszip.d.ts\",\n \"import\": \"./dist/archives/createArchiveFromJszip/index.es.js\",\n \"require\": \"./dist/archives/createArchiveFromJszip/index.cjs.js\"\n },\n \"./archives/createArchiveFromLibArchive\": {\n \"types\": \"./dist/archives/createArchiveFromLibArchive.d.ts\",\n \"import\": \"./dist/archives/createArchiveFromLibArchive/index.es.js\",\n \"require\": \"./dist/archives/createArchiveFromLibArchive/index.cjs.js\"\n },\n \"./archives/createArchiveFromUnzipper\": {\n \"types\": \"./dist/archives/createArchiveFromUnzipper.d.ts\",\n \"import\": \"./dist/archives/createArchiveFromUnzipper/index.es.js\",\n \"require\": \"./dist/archives/createArchiveFromUnzipper/index.cjs.js\"\n }\n },\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"files\": [\n \"/dist\"\n ],\n \"scripts\": {\n \"start\": \"vite build --watch --mode development\",\n \"build\": \"tsc && vite build\",\n \"test\": \"vitest run --coverage\",\n \"tsc\": \"tsc\",\n \"test:watch\": \"vitest watch\"\n },\n \"dependencies\": {\n \"@prose-reader/archive-parser\": \"^1.306.0\",\n \"@prose-reader/shared\": \"^1.306.0\",\n \"xmldoc\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"buffer\": \"^6.0.3\",\n \"jszip\": \"^3.10.0\",\n \"libarchive.js\": \"^2.0.2\",\n \"rxjs\": \"*\",\n \"unzipper\": \"^0.12.3\"\n },\n \"peerDependenciesMeta\": {\n \"jszip\": {\n \"optional\": true\n },\n \"unzipper\": {\n \"optional\": true\n },\n \"libarchive.js\": {\n \"optional\": true\n }\n },\n \"gitHead\": \"4601e14dcacf50b2295cb343582a7ef2c7e1eedc\",\n \"devDependencies\": {\n \"@types/unzipper\": \"^0.10.11\",\n \"buffer\": \"^6.0.3\",\n \"isomorphic-fetch\": \"^3.0.0\",\n \"jszip\": \"^3.10.0\",\n \"libarchive.js\": \"^2.0.2\",\n \"unzipper\": \"^0.12.3\"\n }\n}\n","import { Report as SharedReport } from \"@prose-reader/shared\"\nimport { name } from \"../package.json\"\n\nexport const Report = SharedReport.namespace(name, false, {\n color: \"#ffae42\",\n})\n"],"mappings":";;AAUA,IAAa,KAAiB,EAAE,YAAS,GAAG,QAAiC;CAC3E,IAAM,oBAAe,IAAI,IAA2B;CAEpD,KAAK,IAAM,KAAU,GACnB,AAAK,EAAa,IAAI,EAAO,GAAG,KAC9B,EAAa,IAAI,EAAO,KAAK,CAAM;CAIvC,OAAO;EACL,GAAG;EACH;EACA;CACF;AACF,GErBa,IAAS,EAAa,UAAU,0BAAM,IAAO,EACxD,OAAO,UACT,CAAC"}