postext 0.3.38 → 0.3.40

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 (135) hide show
  1. package/dist/__bench__/chapter.bench.test.d.ts +2 -0
  2. package/dist/__bench__/chapter.bench.test.d.ts.map +1 -0
  3. package/dist/__bench__/chapter.bench.test.js +80 -0
  4. package/dist/__bench__/chapter.bench.test.js.map +1 -0
  5. package/dist/__tests__/buildAsync.test.d.ts +2 -0
  6. package/dist/__tests__/buildAsync.test.d.ts.map +1 -0
  7. package/dist/__tests__/buildAsync.test.js +50 -0
  8. package/dist/__tests__/buildAsync.test.js.map +1 -0
  9. package/dist/__tests__/exports.test.js +5 -0
  10. package/dist/__tests__/exports.test.js.map +1 -1
  11. package/dist/__tests__/hyphenateMemo.test.d.ts +2 -0
  12. package/dist/__tests__/hyphenateMemo.test.d.ts.map +1 -0
  13. package/dist/__tests__/hyphenateMemo.test.js +21 -0
  14. package/dist/__tests__/hyphenateMemo.test.js.map +1 -0
  15. package/dist/__tests__/knuthPlassMerge.test.d.ts +2 -0
  16. package/dist/__tests__/knuthPlassMerge.test.d.ts.map +1 -0
  17. package/dist/__tests__/knuthPlassMerge.test.js +55 -0
  18. package/dist/__tests__/knuthPlassMerge.test.js.map +1 -0
  19. package/dist/__tests__/memos.test.d.ts +2 -0
  20. package/dist/__tests__/memos.test.d.ts.map +1 -0
  21. package/dist/__tests__/memos.test.js +37 -0
  22. package/dist/__tests__/memos.test.js.map +1 -0
  23. package/dist/__tests__/pipeline/rotatedResource.test.d.ts +2 -0
  24. package/dist/__tests__/pipeline/rotatedResource.test.d.ts.map +1 -0
  25. package/dist/__tests__/pipeline/rotatedResource.test.js +242 -0
  26. package/dist/__tests__/pipeline/rotatedResource.test.js.map +1 -0
  27. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  28. package/dist/canvas-backend/blockRender.js +7 -1
  29. package/dist/canvas-backend/blockRender.js.map +1 -1
  30. package/dist/canvas-backend/index.d.ts +5 -0
  31. package/dist/canvas-backend/index.d.ts.map +1 -1
  32. package/dist/canvas-backend/index.js +7 -4
  33. package/dist/canvas-backend/index.js.map +1 -1
  34. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  35. package/dist/canvas-backend/renderResourceBlock.js +21 -4
  36. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  37. package/dist/canvas-backend/swatch.d.ts +8 -0
  38. package/dist/canvas-backend/swatch.d.ts.map +1 -0
  39. package/dist/canvas-backend/swatch.js +20 -0
  40. package/dist/canvas-backend/swatch.js.map +1 -0
  41. package/dist/html-backend.d.ts.map +1 -1
  42. package/dist/html-backend.js +38 -10
  43. package/dist/html-backend.js.map +1 -1
  44. package/dist/hyphenate.d.ts.map +1 -1
  45. package/dist/hyphenate.js +50 -1
  46. package/dist/hyphenate.js.map +1 -1
  47. package/dist/index.d.ts +5 -4
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
  52. package/dist/knuthPlass/breakpoints.js +7 -1
  53. package/dist/knuthPlass/breakpoints.js.map +1 -1
  54. package/dist/knuthPlass/richAdapter.d.ts +4 -0
  55. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  56. package/dist/knuthPlass/richAdapter.js +2 -1
  57. package/dist/knuthPlass/richAdapter.js.map +1 -1
  58. package/dist/knuthPlass/types.d.ts +8 -0
  59. package/dist/knuthPlass/types.d.ts.map +1 -1
  60. package/dist/measure/plain.d.ts.map +1 -1
  61. package/dist/measure/plain.js +1 -0
  62. package/dist/measure/plain.js.map +1 -1
  63. package/dist/measure/rich.d.ts +8 -0
  64. package/dist/measure/rich.d.ts.map +1 -1
  65. package/dist/measure/rich.js +25 -2
  66. package/dist/measure/rich.js.map +1 -1
  67. package/dist/parse/blockParser.d.ts +5 -3
  68. package/dist/parse/blockParser.d.ts.map +1 -1
  69. package/dist/parse/blockParser.js +45 -30
  70. package/dist/parse/blockParser.js.map +1 -1
  71. package/dist/parse/index.d.ts +2 -0
  72. package/dist/parse/index.d.ts.map +1 -1
  73. package/dist/parse/index.js +1 -0
  74. package/dist/parse/index.js.map +1 -1
  75. package/dist/parse/inlineFormatting.d.ts +26 -0
  76. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  77. package/dist/parse/inlineFormatting.js +45 -0
  78. package/dist/parse/inlineFormatting.js.map +1 -1
  79. package/dist/parse/inlineSnippet.d.ts +1 -1
  80. package/dist/parse/inlineSnippet.d.ts.map +1 -1
  81. package/dist/parse/inlineSnippet.js +4 -3
  82. package/dist/parse/inlineSnippet.js.map +1 -1
  83. package/dist/parse/sourceMapping.d.ts.map +1 -1
  84. package/dist/parse/sourceMapping.js +19 -1
  85. package/dist/parse/sourceMapping.js.map +1 -1
  86. package/dist/parse/types.d.ts +10 -0
  87. package/dist/parse/types.d.ts.map +1 -1
  88. package/dist/pipeline/bandCaps.d.ts +16 -0
  89. package/dist/pipeline/bandCaps.d.ts.map +1 -1
  90. package/dist/pipeline/bandCaps.js +22 -0
  91. package/dist/pipeline/bandCaps.js.map +1 -1
  92. package/dist/pipeline/build.d.ts +33 -0
  93. package/dist/pipeline/build.d.ts.map +1 -1
  94. package/dist/pipeline/build.js +140 -38
  95. package/dist/pipeline/build.js.map +1 -1
  96. package/dist/pipeline/config.d.ts.map +1 -1
  97. package/dist/pipeline/config.js +18 -0
  98. package/dist/pipeline/config.js.map +1 -1
  99. package/dist/pipeline/floatPlacement.d.ts +10 -3
  100. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  101. package/dist/pipeline/floatPlacement.js +10 -5
  102. package/dist/pipeline/floatPlacement.js.map +1 -1
  103. package/dist/pipeline/floatSlots.d.ts +3 -0
  104. package/dist/pipeline/floatSlots.d.ts.map +1 -1
  105. package/dist/pipeline/floatSlots.js.map +1 -1
  106. package/dist/pipeline/index.d.ts +2 -2
  107. package/dist/pipeline/index.d.ts.map +1 -1
  108. package/dist/pipeline/index.js +1 -1
  109. package/dist/pipeline/index.js.map +1 -1
  110. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  111. package/dist/pipeline/measureContentBlock.js +6 -2
  112. package/dist/pipeline/measureContentBlock.js.map +1 -1
  113. package/dist/pipeline/resourceLayout.d.ts +16 -2
  114. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  115. package/dist/pipeline/resourceLayout.js +51 -4
  116. package/dist/pipeline/resourceLayout.js.map +1 -1
  117. package/dist/table/model.d.ts +7 -1
  118. package/dist/table/model.d.ts.map +1 -1
  119. package/dist/table/model.js +19 -0
  120. package/dist/table/model.js.map +1 -1
  121. package/dist/types.d.ts +18 -0
  122. package/dist/types.d.ts.map +1 -1
  123. package/dist/vdt.d.ts +50 -1
  124. package/dist/vdt.d.ts.map +1 -1
  125. package/dist/vdt.js +29 -0
  126. package/dist/vdt.js.map +1 -1
  127. package/dist/worker/client.d.ts +18 -2
  128. package/dist/worker/client.d.ts.map +1 -1
  129. package/dist/worker/client.js +28 -3
  130. package/dist/worker/client.js.map +1 -1
  131. package/dist/worker/layout.worker.js +135 -56
  132. package/dist/worker/layout.worker.js.map +1 -1
  133. package/dist/worker/protocol.d.ts +27 -2
  134. package/dist/worker/protocol.d.ts.map +1 -1
  135. package/package.json +3 -2
@@ -1,6 +1,15 @@
1
1
  import type { PostextContent, PostextConfig } from '../types';
2
2
  import type { VDTDocument } from '../vdt';
3
- import type { BuildProgress } from '../pipeline/build';
3
+ import type { BuildPassInfo, BuildProgress } from '../pipeline/build';
4
+ /** Where a build's time went (dev tooling; always attached, cheap). */
5
+ export interface BuildStats {
6
+ /** Every placement pass, in build order. */
7
+ passes: BuildPassInfo[];
8
+ /** Wall time of the whole build inside the worker, in ms. */
9
+ totalMs: number;
10
+ /** The document came from the worker's cache (no pass was run). */
11
+ cached?: boolean;
12
+ }
4
13
  export interface FontPayload {
5
14
  family: string;
6
15
  weight: string;
@@ -26,6 +35,20 @@ export type RequestMessage = {
26
35
  id: number;
27
36
  content: PostextContent;
28
37
  config?: PostextConfig;
38
+ /** Fingerprint of `content.resources`. When it matches the list the
39
+ * worker last received, `content.resources` may be left out and the
40
+ * worker lays out with the list it already holds — the resources of
41
+ * a book (hundreds of tables and figures) are the bulk of a build
42
+ * message and change far less often than the text. */
43
+ resourcesKey?: string;
44
+ /** Fingerprint of everything the document depends on. The worker
45
+ * keeps the last few documents by it: a build whose key it holds
46
+ * is answered from the cache, and a finished build is stored under
47
+ * it. Omit for a document not worth keeping (screen geometry). */
48
+ cacheKey?: string;
49
+ /** False: build (and cache) the document but do not send it back —
50
+ * warming the cache for a chapter the reader may open next. */
51
+ wantDoc?: boolean;
29
52
  } | {
30
53
  kind: 'cancel';
31
54
  /** Id of the in-flight build to cancel. */
@@ -36,7 +59,9 @@ export type RequestMessage = {
36
59
  export type ResponseMessage = {
37
60
  kind: 'built';
38
61
  id: number;
39
- doc: VDTDocument;
62
+ /** Null when the build asked for no document (`wantDoc: false`). */
63
+ doc: VDTDocument | null;
64
+ stats: BuildStats;
40
65
  } | {
41
66
  kind: 'progress';
42
67
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX;;;wDAGoD;IACpD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,WAAW,CAAC;CAClB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;CACzB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEtE,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX;;;wDAGoD;IACpD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;2DAIuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;uEAGmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;oEACgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;CACnB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;CACzB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "postext",
3
- "version": "0.3.38",
3
+ "version": "0.3.40",
4
4
  "description": "A programmable typesetter for the web. Layout engine that applies professional editorial rules — columns, orphan/widow prevention, resource placement, footnotes — to semantic content. Built on @chenglou/pretext for DOM-free text measurement.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -60,6 +60,7 @@
60
60
  "dev": "tsc --watch",
61
61
  "check-types": "tsc --noEmit",
62
62
  "lint": "eslint .",
63
- "test": "vitest run"
63
+ "test": "vitest run",
64
+ "bench": "BENCH=1 vitest run __bench__"
64
65
  }
65
66
  }