docrev 0.8.1 → 0.8.5

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 (306) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/PLAN-tables-and-postprocess.md +850 -0
  3. package/README.md +33 -0
  4. package/bin/rev.js +12 -131
  5. package/bin/rev.ts +145 -0
  6. package/dist/bin/rev.d.ts +9 -0
  7. package/dist/bin/rev.d.ts.map +1 -0
  8. package/dist/bin/rev.js +118 -0
  9. package/dist/bin/rev.js.map +1 -0
  10. package/dist/lib/annotations.d.ts +91 -0
  11. package/dist/lib/annotations.d.ts.map +1 -0
  12. package/dist/lib/annotations.js +554 -0
  13. package/dist/lib/annotations.js.map +1 -0
  14. package/dist/lib/build.d.ts +171 -0
  15. package/dist/lib/build.d.ts.map +1 -0
  16. package/dist/lib/build.js +755 -0
  17. package/dist/lib/build.js.map +1 -0
  18. package/dist/lib/citations.d.ts +34 -0
  19. package/dist/lib/citations.d.ts.map +1 -0
  20. package/dist/lib/citations.js +140 -0
  21. package/dist/lib/citations.js.map +1 -0
  22. package/dist/lib/commands/build.d.ts +13 -0
  23. package/dist/lib/commands/build.d.ts.map +1 -0
  24. package/dist/lib/commands/build.js +678 -0
  25. package/dist/lib/commands/build.js.map +1 -0
  26. package/dist/lib/commands/citations.d.ts +11 -0
  27. package/dist/lib/commands/citations.d.ts.map +1 -0
  28. package/dist/lib/commands/citations.js +428 -0
  29. package/dist/lib/commands/citations.js.map +1 -0
  30. package/dist/lib/commands/comments.d.ts +11 -0
  31. package/dist/lib/commands/comments.d.ts.map +1 -0
  32. package/dist/lib/commands/comments.js +883 -0
  33. package/dist/lib/commands/comments.js.map +1 -0
  34. package/dist/lib/commands/context.d.ts +35 -0
  35. package/dist/lib/commands/context.d.ts.map +1 -0
  36. package/dist/lib/commands/context.js +59 -0
  37. package/dist/lib/commands/context.js.map +1 -0
  38. package/dist/lib/commands/core.d.ts +11 -0
  39. package/dist/lib/commands/core.d.ts.map +1 -0
  40. package/dist/lib/commands/core.js +246 -0
  41. package/dist/lib/commands/core.js.map +1 -0
  42. package/dist/lib/commands/doi.d.ts +11 -0
  43. package/dist/lib/commands/doi.d.ts.map +1 -0
  44. package/dist/lib/commands/doi.js +373 -0
  45. package/dist/lib/commands/doi.js.map +1 -0
  46. package/dist/lib/commands/history.d.ts +11 -0
  47. package/dist/lib/commands/history.d.ts.map +1 -0
  48. package/dist/lib/commands/history.js +245 -0
  49. package/dist/lib/commands/history.js.map +1 -0
  50. package/dist/lib/commands/index.d.ts +28 -0
  51. package/dist/lib/commands/index.d.ts.map +1 -0
  52. package/dist/lib/commands/index.js +35 -0
  53. package/dist/lib/commands/index.js.map +1 -0
  54. package/dist/lib/commands/init.d.ts +11 -0
  55. package/dist/lib/commands/init.d.ts.map +1 -0
  56. package/dist/lib/commands/init.js +209 -0
  57. package/dist/lib/commands/init.js.map +1 -0
  58. package/dist/lib/commands/response.d.ts +11 -0
  59. package/dist/lib/commands/response.d.ts.map +1 -0
  60. package/dist/lib/commands/response.js +317 -0
  61. package/dist/lib/commands/response.js.map +1 -0
  62. package/dist/lib/commands/sections.d.ts +11 -0
  63. package/dist/lib/commands/sections.d.ts.map +1 -0
  64. package/dist/lib/commands/sections.js +1071 -0
  65. package/dist/lib/commands/sections.js.map +1 -0
  66. package/dist/lib/commands/utilities.d.ts +19 -0
  67. package/dist/lib/commands/utilities.d.ts.map +1 -0
  68. package/dist/lib/commands/utilities.js +2009 -0
  69. package/dist/lib/commands/utilities.js.map +1 -0
  70. package/dist/lib/comment-realign.d.ts +50 -0
  71. package/dist/lib/comment-realign.d.ts.map +1 -0
  72. package/dist/lib/comment-realign.js +372 -0
  73. package/dist/lib/comment-realign.js.map +1 -0
  74. package/dist/lib/config.d.ts +41 -0
  75. package/dist/lib/config.d.ts.map +1 -0
  76. package/dist/lib/config.js +76 -0
  77. package/dist/lib/config.js.map +1 -0
  78. package/dist/lib/crossref.d.ts +108 -0
  79. package/dist/lib/crossref.d.ts.map +1 -0
  80. package/dist/lib/crossref.js +597 -0
  81. package/dist/lib/crossref.js.map +1 -0
  82. package/dist/lib/dependencies.d.ts +30 -0
  83. package/dist/lib/dependencies.d.ts.map +1 -0
  84. package/dist/lib/dependencies.js +95 -0
  85. package/dist/lib/dependencies.js.map +1 -0
  86. package/dist/lib/doi-cache.d.ts +29 -0
  87. package/dist/lib/doi-cache.d.ts.map +1 -0
  88. package/dist/lib/doi-cache.js +104 -0
  89. package/dist/lib/doi-cache.js.map +1 -0
  90. package/dist/lib/doi.d.ts +65 -0
  91. package/dist/lib/doi.d.ts.map +1 -0
  92. package/dist/lib/doi.js +710 -0
  93. package/dist/lib/doi.js.map +1 -0
  94. package/dist/lib/equations.d.ts +61 -0
  95. package/dist/lib/equations.d.ts.map +1 -0
  96. package/dist/lib/equations.js +445 -0
  97. package/dist/lib/equations.js.map +1 -0
  98. package/dist/lib/errors.d.ts +60 -0
  99. package/dist/lib/errors.d.ts.map +1 -0
  100. package/dist/lib/errors.js +303 -0
  101. package/dist/lib/errors.js.map +1 -0
  102. package/dist/lib/format.d.ts +104 -0
  103. package/dist/lib/format.d.ts.map +1 -0
  104. package/dist/lib/format.js +416 -0
  105. package/dist/lib/format.js.map +1 -0
  106. package/dist/lib/git.d.ts +88 -0
  107. package/dist/lib/git.d.ts.map +1 -0
  108. package/dist/lib/git.js +304 -0
  109. package/dist/lib/git.js.map +1 -0
  110. package/dist/lib/grammar.d.ts +62 -0
  111. package/dist/lib/grammar.d.ts.map +1 -0
  112. package/dist/lib/grammar.js +244 -0
  113. package/dist/lib/grammar.js.map +1 -0
  114. package/dist/lib/image-registry.d.ts +68 -0
  115. package/dist/lib/image-registry.d.ts.map +1 -0
  116. package/dist/lib/image-registry.js +112 -0
  117. package/dist/lib/image-registry.js.map +1 -0
  118. package/dist/lib/import.d.ts +184 -0
  119. package/dist/lib/import.d.ts.map +1 -0
  120. package/dist/lib/import.js +1581 -0
  121. package/dist/lib/import.js.map +1 -0
  122. package/dist/lib/journals.d.ts +55 -0
  123. package/dist/lib/journals.d.ts.map +1 -0
  124. package/dist/lib/journals.js +417 -0
  125. package/dist/lib/journals.js.map +1 -0
  126. package/dist/lib/merge.d.ts +138 -0
  127. package/dist/lib/merge.d.ts.map +1 -0
  128. package/dist/lib/merge.js +603 -0
  129. package/dist/lib/merge.js.map +1 -0
  130. package/dist/lib/orcid.d.ts +36 -0
  131. package/dist/lib/orcid.d.ts.map +1 -0
  132. package/dist/lib/orcid.js +117 -0
  133. package/dist/lib/orcid.js.map +1 -0
  134. package/dist/lib/pdf-comments.d.ts +95 -0
  135. package/dist/lib/pdf-comments.d.ts.map +1 -0
  136. package/dist/lib/pdf-comments.js +192 -0
  137. package/dist/lib/pdf-comments.js.map +1 -0
  138. package/dist/lib/pdf-import.d.ts +118 -0
  139. package/dist/lib/pdf-import.d.ts.map +1 -0
  140. package/dist/lib/pdf-import.js +397 -0
  141. package/dist/lib/pdf-import.js.map +1 -0
  142. package/dist/lib/plugins.d.ts +76 -0
  143. package/dist/lib/plugins.d.ts.map +1 -0
  144. package/dist/lib/plugins.js +235 -0
  145. package/dist/lib/plugins.js.map +1 -0
  146. package/dist/lib/postprocess.d.ts +42 -0
  147. package/dist/lib/postprocess.d.ts.map +1 -0
  148. package/dist/lib/postprocess.js +138 -0
  149. package/dist/lib/postprocess.js.map +1 -0
  150. package/dist/lib/pptx-template.d.ts +59 -0
  151. package/dist/lib/pptx-template.d.ts.map +1 -0
  152. package/dist/lib/pptx-template.js +613 -0
  153. package/dist/lib/pptx-template.js.map +1 -0
  154. package/dist/lib/pptx-themes.d.ts +80 -0
  155. package/dist/lib/pptx-themes.d.ts.map +1 -0
  156. package/dist/lib/pptx-themes.js +818 -0
  157. package/dist/lib/pptx-themes.js.map +1 -0
  158. package/dist/lib/protect-restore.d.ts +137 -0
  159. package/dist/lib/protect-restore.d.ts.map +1 -0
  160. package/dist/lib/protect-restore.js +394 -0
  161. package/dist/lib/protect-restore.js.map +1 -0
  162. package/dist/lib/rate-limiter.d.ts +27 -0
  163. package/dist/lib/rate-limiter.d.ts.map +1 -0
  164. package/dist/lib/rate-limiter.js +79 -0
  165. package/dist/lib/rate-limiter.js.map +1 -0
  166. package/dist/lib/response.d.ts +41 -0
  167. package/dist/lib/response.d.ts.map +1 -0
  168. package/dist/lib/response.js +150 -0
  169. package/dist/lib/response.js.map +1 -0
  170. package/dist/lib/review.d.ts +35 -0
  171. package/dist/lib/review.d.ts.map +1 -0
  172. package/dist/lib/review.js +263 -0
  173. package/dist/lib/review.js.map +1 -0
  174. package/dist/lib/schema.d.ts +66 -0
  175. package/dist/lib/schema.d.ts.map +1 -0
  176. package/dist/lib/schema.js +339 -0
  177. package/dist/lib/schema.js.map +1 -0
  178. package/dist/lib/scientific-words.d.ts +6 -0
  179. package/dist/lib/scientific-words.d.ts.map +1 -0
  180. package/dist/lib/scientific-words.js +66 -0
  181. package/dist/lib/scientific-words.js.map +1 -0
  182. package/dist/lib/sections.d.ts +40 -0
  183. package/dist/lib/sections.d.ts.map +1 -0
  184. package/dist/lib/sections.js +288 -0
  185. package/dist/lib/sections.js.map +1 -0
  186. package/dist/lib/slides.d.ts +86 -0
  187. package/dist/lib/slides.d.ts.map +1 -0
  188. package/dist/lib/slides.js +676 -0
  189. package/dist/lib/slides.js.map +1 -0
  190. package/dist/lib/spelling.d.ts +76 -0
  191. package/dist/lib/spelling.d.ts.map +1 -0
  192. package/dist/lib/spelling.js +272 -0
  193. package/dist/lib/spelling.js.map +1 -0
  194. package/dist/lib/templates.d.ts +30 -0
  195. package/dist/lib/templates.d.ts.map +1 -0
  196. package/dist/lib/templates.js +504 -0
  197. package/dist/lib/templates.js.map +1 -0
  198. package/dist/lib/themes.d.ts +85 -0
  199. package/dist/lib/themes.d.ts.map +1 -0
  200. package/dist/lib/themes.js +652 -0
  201. package/dist/lib/themes.js.map +1 -0
  202. package/dist/lib/trackchanges.d.ts +51 -0
  203. package/dist/lib/trackchanges.d.ts.map +1 -0
  204. package/dist/lib/trackchanges.js +202 -0
  205. package/dist/lib/trackchanges.js.map +1 -0
  206. package/dist/lib/tui.d.ts +76 -0
  207. package/dist/lib/tui.d.ts.map +1 -0
  208. package/dist/lib/tui.js +377 -0
  209. package/dist/lib/tui.js.map +1 -0
  210. package/dist/lib/types.d.ts +447 -0
  211. package/dist/lib/types.d.ts.map +1 -0
  212. package/dist/lib/types.js +6 -0
  213. package/dist/lib/types.js.map +1 -0
  214. package/dist/lib/undo.d.ts +57 -0
  215. package/dist/lib/undo.d.ts.map +1 -0
  216. package/dist/lib/undo.js +185 -0
  217. package/dist/lib/undo.js.map +1 -0
  218. package/dist/lib/utils.d.ts +16 -0
  219. package/dist/lib/utils.d.ts.map +1 -0
  220. package/dist/lib/utils.js +40 -0
  221. package/dist/lib/utils.js.map +1 -0
  222. package/dist/lib/variables.d.ts +42 -0
  223. package/dist/lib/variables.d.ts.map +1 -0
  224. package/dist/lib/variables.js +141 -0
  225. package/dist/lib/variables.js.map +1 -0
  226. package/dist/lib/word.d.ts +80 -0
  227. package/dist/lib/word.d.ts.map +1 -0
  228. package/dist/lib/word.js +360 -0
  229. package/dist/lib/word.js.map +1 -0
  230. package/dist/lib/wordcomments.d.ts +51 -0
  231. package/dist/lib/wordcomments.d.ts.map +1 -0
  232. package/dist/lib/wordcomments.js +587 -0
  233. package/dist/lib/wordcomments.js.map +1 -0
  234. package/eslint.config.js +27 -0
  235. package/lib/annotations.ts +622 -0
  236. package/lib/apply-buildup-colors.py +88 -0
  237. package/lib/build.ts +1013 -0
  238. package/lib/{citations.js → citations.ts} +38 -27
  239. package/lib/commands/{build.js → build.ts} +80 -27
  240. package/lib/commands/{citations.js → citations.ts} +36 -18
  241. package/lib/commands/{comments.js → comments.ts} +187 -54
  242. package/lib/commands/{context.js → context.ts} +18 -8
  243. package/lib/commands/{core.js → core.ts} +34 -20
  244. package/lib/commands/{doi.js → doi.ts} +32 -16
  245. package/lib/commands/{history.js → history.ts} +25 -12
  246. package/lib/commands/{index.js → index.ts} +9 -5
  247. package/lib/commands/{init.js → init.ts} +20 -8
  248. package/lib/commands/{response.js → response.ts} +47 -20
  249. package/lib/commands/{sections.js → sections.ts} +273 -68
  250. package/lib/commands/{utilities.js → utilities.ts} +338 -158
  251. package/lib/{comment-realign.js → comment-realign.ts} +117 -45
  252. package/lib/config.ts +84 -0
  253. package/lib/{crossref.js → crossref.ts} +213 -138
  254. package/lib/dependencies.ts +106 -0
  255. package/lib/doi-cache.ts +115 -0
  256. package/lib/{doi.js → doi.ts} +115 -281
  257. package/lib/{equations.js → equations.ts} +60 -64
  258. package/lib/{errors.js → errors.ts} +56 -48
  259. package/lib/{format.js → format.ts} +137 -63
  260. package/lib/{git.js → git.ts} +66 -63
  261. package/lib/{grammar.js → grammar.ts} +45 -32
  262. package/lib/image-registry.ts +180 -0
  263. package/lib/import.ts +2060 -0
  264. package/lib/journals.ts +505 -0
  265. package/lib/{merge.js → merge.ts} +185 -135
  266. package/lib/{orcid.js → orcid.ts} +17 -22
  267. package/lib/{pdf-comments.js → pdf-comments.ts} +76 -18
  268. package/lib/{pdf-import.js → pdf-import.ts} +148 -70
  269. package/lib/{plugins.js → plugins.ts} +82 -39
  270. package/lib/postprocess.ts +188 -0
  271. package/lib/pptx-color-filter.lua +37 -0
  272. package/lib/pptx-template.ts +625 -0
  273. package/lib/pptx-themes/academic.pptx +0 -0
  274. package/lib/pptx-themes/corporate.pptx +0 -0
  275. package/lib/pptx-themes/dark.pptx +0 -0
  276. package/lib/pptx-themes/default.pptx +0 -0
  277. package/lib/pptx-themes/minimal.pptx +0 -0
  278. package/lib/pptx-themes/plant.pptx +0 -0
  279. package/lib/pptx-themes.ts +896 -0
  280. package/lib/protect-restore.ts +516 -0
  281. package/lib/rate-limiter.ts +94 -0
  282. package/lib/{response.js → response.ts} +36 -21
  283. package/lib/{review.js → review.ts} +53 -43
  284. package/lib/{schema.js → schema.ts} +70 -25
  285. package/lib/{sections.js → sections.ts} +71 -76
  286. package/lib/slides.ts +793 -0
  287. package/lib/{spelling.js → spelling.ts} +43 -59
  288. package/lib/{templates.js → templates.ts} +20 -17
  289. package/lib/themes.ts +742 -0
  290. package/lib/{trackchanges.js → trackchanges.ts} +52 -23
  291. package/lib/types.ts +509 -0
  292. package/lib/{undo.js → undo.ts} +75 -52
  293. package/lib/utils.ts +41 -0
  294. package/lib/{variables.js → variables.ts} +60 -54
  295. package/lib/word.ts +428 -0
  296. package/lib/{wordcomments.js → wordcomments.ts} +94 -40
  297. package/package.json +15 -5
  298. package/skill/REFERENCE.md +67 -0
  299. package/tsconfig.json +26 -0
  300. package/lib/annotations.js +0 -414
  301. package/lib/build.js +0 -639
  302. package/lib/config.js +0 -79
  303. package/lib/import.js +0 -1145
  304. package/lib/journals.js +0 -629
  305. package/lib/word.js +0 -225
  306. /package/lib/{scientific-words.js → scientific-words.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pptx-themes.js","sourceRoot":"","sources":["../../lib/pptx-themes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Protection and restoration utilities for markdown elements during Word import
3
+ *
4
+ * These functions protect special markdown syntax (anchors, cross-refs, math, citations,
5
+ * images, tables) by replacing them with placeholders before diffing, then restore them after.
6
+ */
7
+ interface MarkdownPrefix {
8
+ prefix: string;
9
+ content: string;
10
+ }
11
+ interface ProtectedItem {
12
+ original: string;
13
+ placeholder: string;
14
+ }
15
+ interface ProtectedMath extends ProtectedItem {
16
+ type: 'inline' | 'display';
17
+ simplified: string;
18
+ }
19
+ interface ProtectedImage extends ProtectedItem {
20
+ label: string | null;
21
+ caption: string;
22
+ path: string;
23
+ figureNumber: string | null;
24
+ }
25
+ interface ProtectedTable extends ProtectedItem {
26
+ cellCount: number;
27
+ }
28
+ interface ProtectAnchorsResult {
29
+ text: string;
30
+ anchors: ProtectedItem[];
31
+ }
32
+ interface ProtectCrossrefsResult {
33
+ text: string;
34
+ crossrefs: ProtectedItem[];
35
+ }
36
+ interface ProtectMathResult {
37
+ text: string;
38
+ mathBlocks: ProtectedMath[];
39
+ }
40
+ interface ProtectCitationsResult {
41
+ text: string;
42
+ citations: string[];
43
+ }
44
+ interface ProtectImagesResult {
45
+ text: string;
46
+ images: ProtectedImage[];
47
+ }
48
+ interface ProtectTablesResult {
49
+ text: string;
50
+ tables: ProtectedTable[];
51
+ }
52
+ interface ImageRegistry {
53
+ byNumber?: Map<string, {
54
+ label: string;
55
+ }>;
56
+ }
57
+ /**
58
+ * Extract markdown prefix (headers, list markers) from a line
59
+ */
60
+ export declare function extractMarkdownPrefix(line: string): MarkdownPrefix;
61
+ /**
62
+ * Protect figure/table anchors before diffing
63
+ * Anchors like {#fig:heatmap} and {#tbl:results} should never be deleted
64
+ */
65
+ export declare function protectAnchors(md: string): ProtectAnchorsResult;
66
+ /**
67
+ * Restore anchors from placeholders
68
+ */
69
+ export declare function restoreAnchors(text: string, anchors: ProtectedItem[]): string;
70
+ /**
71
+ * Protect cross-references before diffing
72
+ * References like @fig:label, @tbl:label should be preserved
73
+ */
74
+ export declare function protectCrossrefs(md: string): ProtectCrossrefsResult;
75
+ /**
76
+ * Restore cross-references from placeholders
77
+ */
78
+ export declare function restoreCrossrefs(text: string, crossrefs: ProtectedItem[]): string;
79
+ /**
80
+ * Simplify LaTeX math for fuzzy matching against Word text
81
+ * Word renders math as text, so we need to match the rendered form
82
+ */
83
+ export declare function simplifyMathForMatching(latex: string): string;
84
+ /**
85
+ * Protect mathematical notation before diffing by replacing with placeholders
86
+ * Handles both inline $...$ and display $$...$$ math
87
+ */
88
+ export declare function protectMath(md: string): ProtectMathResult;
89
+ /**
90
+ * Restore math from placeholders
91
+ */
92
+ export declare function restoreMath(text: string, mathBlocks: ProtectedMath[]): string;
93
+ /**
94
+ * Replace rendered math in Word text with matching placeholders
95
+ * This is heuristic-based since Word can render math in various ways
96
+ */
97
+ export declare function replaceRenderedMath(wordText: string, mathBlocks: ProtectedMath[]): string;
98
+ /**
99
+ * Protect citations before diffing by replacing with placeholders
100
+ */
101
+ export declare function protectCitations(md: string): ProtectCitationsResult;
102
+ /**
103
+ * Restore citations from placeholders
104
+ */
105
+ export declare function restoreCitations(text: string, citations: string[]): string;
106
+ /**
107
+ * Remove rendered citations from Word text (replace with matching placeholders)
108
+ */
109
+ export declare function replaceRenderedCitations(wordText: string, count: number): string;
110
+ /**
111
+ * Protect markdown images before diffing by replacing with placeholders
112
+ * Images are treated as atomic blocks to prevent corruption during diff
113
+ *
114
+ * Matches: ![caption](path){#fig:label} or ![caption](path)
115
+ * Also matches Word-style: ![Figure N: caption](media/path)
116
+ */
117
+ export declare function protectImages(md: string, registry?: ImageRegistry | null): ProtectImagesResult;
118
+ /**
119
+ * Restore images from placeholders
120
+ */
121
+ export declare function restoreImages(text: string, images: ProtectedImage[]): string;
122
+ /**
123
+ * Match Word-extracted images to original images using registry
124
+ * Returns a mapping of Word image placeholders to original image placeholders
125
+ */
126
+ export declare function matchWordImagesToOriginal(originalImages: ProtectedImage[], wordImages: ProtectedImage[], registry?: ImageRegistry | null): Map<string, string>;
127
+ /**
128
+ * Protect markdown tables before diffing by replacing with placeholders
129
+ * Tables are treated as atomic blocks to prevent corruption during diff
130
+ */
131
+ export declare function protectTables(md: string): ProtectTablesResult;
132
+ /**
133
+ * Restore tables from placeholders
134
+ */
135
+ export declare function restoreTables(text: string, tables: ProtectedTable[]): string;
136
+ export {};
137
+ //# sourceMappingURL=protect-restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-restore.d.ts","sourceRoot":"","sources":["../../lib/protect-restore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAc,SAAQ,aAAa;IAC3C,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,cAAe,SAAQ,aAAa;IAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,cAAe,SAAQ,aAAa;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAoBlE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,CAa/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAqC7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,CAanE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,CAuBjF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB7D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAuBzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAK7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAczF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,CAQnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAO1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAahF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAE,aAAa,GAAG,IAAW,GAAG,mBAAmB,CAwCpG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAc5E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,EAAE,EAChC,UAAU,EAAE,cAAc,EAAE,EAC5B,QAAQ,GAAE,aAAa,GAAG,IAAW,GACpC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuDrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAwB7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAc5E"}
@@ -0,0 +1,394 @@
1
+ /**
2
+ * Protection and restoration utilities for markdown elements during Word import
3
+ *
4
+ * These functions protect special markdown syntax (anchors, cross-refs, math, citations,
5
+ * images, tables) by replacing them with placeholders before diffing, then restore them after.
6
+ */
7
+ // =============================================================================
8
+ // Public Functions
9
+ // =============================================================================
10
+ /**
11
+ * Extract markdown prefix (headers, list markers) from a line
12
+ */
13
+ export function extractMarkdownPrefix(line) {
14
+ // Headers
15
+ const headerMatch = line.match(/^(#{1,6}\s+)/);
16
+ if (headerMatch && headerMatch[1]) {
17
+ return { prefix: headerMatch[1], content: line.slice(headerMatch[1].length) };
18
+ }
19
+ // List items
20
+ const listMatch = line.match(/^(\s*[-*+]\s+|\s*\d+\.\s+)/);
21
+ if (listMatch && listMatch[1]) {
22
+ return { prefix: listMatch[1], content: line.slice(listMatch[1].length) };
23
+ }
24
+ // Blockquotes
25
+ const quoteMatch = line.match(/^(>\s*)/);
26
+ if (quoteMatch && quoteMatch[1]) {
27
+ return { prefix: quoteMatch[1], content: line.slice(quoteMatch[1].length) };
28
+ }
29
+ return { prefix: '', content: line };
30
+ }
31
+ /**
32
+ * Protect figure/table anchors before diffing
33
+ * Anchors like {#fig:heatmap} and {#tbl:results} should never be deleted
34
+ */
35
+ export function protectAnchors(md) {
36
+ const anchors = [];
37
+ // Match {#fig:label}, {#tbl:label}, {#eq:label}, {#sec:label} etc.
38
+ // Also match with additional attributes like {#fig:label width=50%}
39
+ const text = md.replace(/\{#(fig|tbl|eq|sec|lst):[^}]+\}/g, (match) => {
40
+ const idx = anchors.length;
41
+ const placeholder = `ANCHORBLOCK${idx}ENDANCHOR`;
42
+ anchors.push({ original: match, placeholder });
43
+ return placeholder;
44
+ });
45
+ return { text, anchors };
46
+ }
47
+ /**
48
+ * Restore anchors from placeholders
49
+ */
50
+ export function restoreAnchors(text, anchors) {
51
+ for (const anchor of anchors) {
52
+ // Handle case where anchor is inside a deletion annotation
53
+ // {--...ANCHORBLOCK0ENDANCHOR--} should become {--...--}{#fig:label}
54
+ const deletionPattern = new RegExp(`\\{--([^}]*?)${anchor.placeholder}([^}]*?)--\\}`, 'g');
55
+ text = text.replace(deletionPattern, (match, before, after) => {
56
+ const cleanBefore = before.trim();
57
+ const cleanAfter = after.trim();
58
+ let result = '';
59
+ if (cleanBefore)
60
+ result += `{--${cleanBefore}--}`;
61
+ result += anchor.original;
62
+ if (cleanAfter)
63
+ result += `{--${cleanAfter}--}`;
64
+ return result;
65
+ });
66
+ // Handle case where anchor is inside a substitution
67
+ // {~~old ANCHORBLOCK0ENDANCHOR~>new~~} -> {~~old~>new~~}{#fig:label}
68
+ const substitutionPattern = new RegExp(`\\{~~([^~]*?)${anchor.placeholder}([^~]*?)~>([^~]*)~~\\}`, 'g');
69
+ text = text.replace(substitutionPattern, (match, oldBefore, oldAfter, newText) => {
70
+ const cleanOldBefore = (oldBefore ?? '').trim();
71
+ const cleanOldAfter = (oldAfter ?? '').trim();
72
+ const cleanNew = (newText ?? '').trim();
73
+ const oldText = (cleanOldBefore + ' ' + cleanOldAfter).trim();
74
+ let result = '';
75
+ if (oldText !== cleanNew) {
76
+ result += `{~~${oldText}~>${cleanNew}~~}`;
77
+ }
78
+ else {
79
+ result += cleanNew;
80
+ }
81
+ result += anchor.original;
82
+ return result;
83
+ });
84
+ // Normal replacement
85
+ text = text.split(anchor.placeholder).join(anchor.original);
86
+ }
87
+ return text;
88
+ }
89
+ /**
90
+ * Protect cross-references before diffing
91
+ * References like @fig:label, @tbl:label should be preserved
92
+ */
93
+ export function protectCrossrefs(md) {
94
+ const crossrefs = [];
95
+ // Match @fig:label, @tbl:label, @eq:label, @sec:label
96
+ // Can appear as @fig:label or (@fig:label) or [@fig:label]
97
+ const text = md.replace(/@(fig|tbl|eq|sec|lst):[a-zA-Z0-9_-]+/g, (match) => {
98
+ const idx = crossrefs.length;
99
+ const placeholder = `XREFBLOCK${idx}ENDXREF`;
100
+ crossrefs.push({ original: match, placeholder });
101
+ return placeholder;
102
+ });
103
+ return { text, crossrefs };
104
+ }
105
+ /**
106
+ * Restore cross-references from placeholders
107
+ */
108
+ export function restoreCrossrefs(text, crossrefs) {
109
+ for (const xref of crossrefs) {
110
+ // Handle deletions - restore the reference even if marked deleted
111
+ const deletionPattern = new RegExp(`\\{--([^}]*?)${xref.placeholder}([^}]*?)--\\}`, 'g');
112
+ text = text.replace(deletionPattern, (match, before, after) => {
113
+ const cleanBefore = before.trim();
114
+ const cleanAfter = after.trim();
115
+ let result = '';
116
+ if (cleanBefore)
117
+ result += `{--${cleanBefore}--}`;
118
+ result += xref.original;
119
+ if (cleanAfter)
120
+ result += `{--${cleanAfter}--}`;
121
+ return result;
122
+ });
123
+ // Handle substitutions where rendered form (Figure 1) replaced the reference
124
+ // {~~XREFBLOCK0ENDXREF~>Figure 1~~} -> @fig:label
125
+ const substitutionPattern = new RegExp(`\\{~~${xref.placeholder}~>[^~]+~~\\}`, 'g');
126
+ text = text.replace(substitutionPattern, xref.original);
127
+ // Normal replacement
128
+ text = text.split(xref.placeholder).join(xref.original);
129
+ }
130
+ return text;
131
+ }
132
+ /**
133
+ * Simplify LaTeX math for fuzzy matching against Word text
134
+ * Word renders math as text, so we need to match the rendered form
135
+ */
136
+ export function simplifyMathForMatching(latex) {
137
+ return latex
138
+ // Remove common LaTeX commands
139
+ .replace(/\\text\{([^}]+)\}/g, '$1')
140
+ .replace(/\\hat\{([^}]+)\}/g, '$1')
141
+ .replace(/\\bar\{([^}]+)\}/g, '$1')
142
+ .replace(/\\frac\{([^}]+)\}\{([^}]+)\}/g, '$1/$2')
143
+ .replace(/\\sum_([a-z])/g, 'Σ')
144
+ .replace(/\\sum/g, 'Σ')
145
+ .replace(/\\cdot/g, '·')
146
+ .replace(/\\quad/g, ' ')
147
+ .replace(/\\,/g, ' ')
148
+ .replace(/\\_/g, '_')
149
+ .replace(/\\{/g, '{')
150
+ .replace(/\\}/g, '}')
151
+ .replace(/\\/g, '') // Remove remaining backslashes
152
+ .replace(/[{}]/g, '') // Remove braces
153
+ .replace(/\s+/g, ' ')
154
+ .trim();
155
+ }
156
+ /**
157
+ * Protect mathematical notation before diffing by replacing with placeholders
158
+ * Handles both inline $...$ and display $$...$$ math
159
+ */
160
+ export function protectMath(md) {
161
+ const mathBlocks = [];
162
+ // First protect display math ($$...$$) - must be done before inline math
163
+ let text = md.replace(/\$\$([^$]+)\$\$/g, (match, content) => {
164
+ const idx = mathBlocks.length;
165
+ const placeholder = `MATHBLOCK${idx}ENDMATH`;
166
+ // Create simplified version for matching in Word text
167
+ const simplified = simplifyMathForMatching(content);
168
+ mathBlocks.push({ original: match, placeholder, type: 'display', simplified });
169
+ return placeholder;
170
+ });
171
+ // Then protect inline math ($...$)
172
+ text = text.replace(/\$([^$\n]+)\$/g, (match, content) => {
173
+ const idx = mathBlocks.length;
174
+ const placeholder = `MATHBLOCK${idx}ENDMATH`;
175
+ const simplified = simplifyMathForMatching(content);
176
+ mathBlocks.push({ original: match, placeholder, type: 'inline', simplified });
177
+ return placeholder;
178
+ });
179
+ return { text, mathBlocks };
180
+ }
181
+ /**
182
+ * Restore math from placeholders
183
+ */
184
+ export function restoreMath(text, mathBlocks) {
185
+ for (const block of mathBlocks) {
186
+ text = text.split(block.placeholder).join(block.original);
187
+ }
188
+ return text;
189
+ }
190
+ /**
191
+ * Replace rendered math in Word text with matching placeholders
192
+ * This is heuristic-based since Word can render math in various ways
193
+ */
194
+ export function replaceRenderedMath(wordText, mathBlocks) {
195
+ let result = wordText;
196
+ for (const block of mathBlocks) {
197
+ // For inline math, try to find the simplified form in Word text
198
+ if (block.simplified.length >= 2) {
199
+ // Try exact match first
200
+ if (result.includes(block.simplified)) {
201
+ result = result.replace(block.simplified, block.placeholder);
202
+ }
203
+ }
204
+ }
205
+ return result;
206
+ }
207
+ /**
208
+ * Protect citations before diffing by replacing with placeholders
209
+ */
210
+ export function protectCitations(md) {
211
+ const citations = [];
212
+ const text = md.replace(/\[@[^\]]+\]/g, (match) => {
213
+ const idx = citations.length;
214
+ citations.push(match);
215
+ return `CITEREF${idx}ENDCITE`;
216
+ });
217
+ return { text, citations };
218
+ }
219
+ /**
220
+ * Restore citations from placeholders
221
+ */
222
+ export function restoreCitations(text, citations) {
223
+ for (let i = 0; i < citations.length; i++) {
224
+ // Handle cases where placeholder might be inside annotations
225
+ const placeholder = `CITEREF${i}ENDCITE`;
226
+ text = text.split(placeholder).join(citations[i]);
227
+ }
228
+ return text;
229
+ }
230
+ /**
231
+ * Remove rendered citations from Word text (replace with matching placeholders)
232
+ */
233
+ export function replaceRenderedCitations(wordText, count) {
234
+ // Match rendered citation patterns: (Author 2021), (Author et al. 2021), etc.
235
+ const pattern = /\((?:[A-Z][a-zé]+(?:\s+et\s+al\.?)?(?:\s*[&,;]\s*[A-Z][a-zé]+(?:\s+et\s+al\.?)?)*\s+\d{4}(?:[a-z])?(?:\s*[,;]\s*(?:[A-Z][a-zé]+(?:\s+et\s+al\.?)?\s+)?\d{4}(?:[a-z])?)*)\)/g;
236
+ let idx = 0;
237
+ return wordText.replace(pattern, (match) => {
238
+ if (idx < count) {
239
+ const placeholder = `CITEREF${idx}ENDCITE`;
240
+ idx++;
241
+ return placeholder;
242
+ }
243
+ return match;
244
+ });
245
+ }
246
+ /**
247
+ * Protect markdown images before diffing by replacing with placeholders
248
+ * Images are treated as atomic blocks to prevent corruption during diff
249
+ *
250
+ * Matches: ![caption](path){#fig:label} or ![caption](path)
251
+ * Also matches Word-style: ![Figure N: caption](media/path)
252
+ */
253
+ export function protectImages(md, registry = null) {
254
+ const images = [];
255
+ // Match markdown images: ![caption](path){#anchor} or ![caption](path)
256
+ // The anchor is optional and can have additional attributes
257
+ const imagePattern = /!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g;
258
+ const text = md.replace(imagePattern, (match, caption, path, anchor) => {
259
+ const idx = images.length;
260
+ const placeholder = `IMAGEBLOCK${idx}ENDIMAGE`;
261
+ // Extract label from anchor if present (e.g., "#fig:map" -> "map")
262
+ let label = null;
263
+ if (anchor) {
264
+ const labelMatch = anchor.match(/#(fig|tbl):([a-zA-Z0-9_-]+)/);
265
+ if (labelMatch) {
266
+ label = labelMatch[2];
267
+ }
268
+ }
269
+ // Try to extract figure number from Word-style caption "Figure N: ..."
270
+ let figureNumber = null;
271
+ const figNumMatch = caption.match(/^(?:Figure|Fig\.?|Table|Tbl\.?)\s+(\d+|S\d+)[:\.]?\s*/i);
272
+ if (figNumMatch) {
273
+ figureNumber = figNumMatch[1];
274
+ }
275
+ images.push({
276
+ original: match,
277
+ placeholder,
278
+ label,
279
+ caption: caption.trim(),
280
+ path,
281
+ figureNumber,
282
+ });
283
+ return placeholder;
284
+ });
285
+ return { text, images };
286
+ }
287
+ /**
288
+ * Restore images from placeholders
289
+ */
290
+ export function restoreImages(text, images) {
291
+ for (const img of images) {
292
+ // Handle cases where placeholder might be inside annotations
293
+ // {--IMAGEBLOCK0ENDIMAGE--} should restore the original image
294
+ const deletionPattern = new RegExp(`\\{--[^}]*?${img.placeholder}[^}]*?--\\}`, 'g');
295
+ text = text.replace(deletionPattern, img.original);
296
+ const insertionPattern = new RegExp(`\\{\\+\\+[^}]*?${img.placeholder}[^}]*?\\+\\+\\}`, 'g');
297
+ text = text.replace(insertionPattern, img.original);
298
+ // Normal replacement
299
+ text = text.split(img.placeholder).join(img.original);
300
+ }
301
+ return text;
302
+ }
303
+ /**
304
+ * Match Word-extracted images to original images using registry
305
+ * Returns a mapping of Word image placeholders to original image placeholders
306
+ */
307
+ export function matchWordImagesToOriginal(originalImages, wordImages, registry = null) {
308
+ const mapping = new Map();
309
+ const usedOriginals = new Set();
310
+ for (const wordImg of wordImages) {
311
+ let bestMatch = null;
312
+ let bestScore = 0;
313
+ for (const origImg of originalImages) {
314
+ if (usedOriginals.has(origImg.placeholder))
315
+ continue;
316
+ let score = 0;
317
+ // Match by label (most reliable)
318
+ if (wordImg.label && origImg.label && wordImg.label === origImg.label) {
319
+ score += 100;
320
+ }
321
+ // Match by figure number via registry
322
+ if (wordImg.figureNumber && registry) {
323
+ const entry = registry.byNumber?.get(`fig:${wordImg.figureNumber}`);
324
+ if (entry && entry.label === origImg.label) {
325
+ score += 90;
326
+ }
327
+ }
328
+ // Match by caption similarity (first 50 chars, normalized)
329
+ const wordCaption = wordImg.caption.replace(/^(?:Figure|Fig\.?|Table|Tbl\.?)\s+\d+[:\.]?\s*/i, '').toLowerCase().slice(0, 50);
330
+ const origCaption = origImg.caption.toLowerCase().slice(0, 50);
331
+ if (wordCaption && origCaption && wordCaption === origCaption) {
332
+ score += 80;
333
+ }
334
+ else if (wordCaption && origCaption && (wordCaption.includes(origCaption.slice(0, 30)) || origCaption.includes(wordCaption.slice(0, 30)))) {
335
+ score += 40;
336
+ }
337
+ // Match by path similarity (filename)
338
+ const wordFile = wordImg.path.split('/').pop()?.toLowerCase() || '';
339
+ const origFile = origImg.path.split('/').pop()?.toLowerCase() || '';
340
+ if (wordFile === origFile) {
341
+ score += 30;
342
+ }
343
+ if (score > bestScore) {
344
+ bestScore = score;
345
+ bestMatch = origImg;
346
+ }
347
+ }
348
+ if (bestMatch && bestScore >= 40) {
349
+ mapping.set(wordImg.placeholder, bestMatch.placeholder);
350
+ usedOriginals.add(bestMatch.placeholder);
351
+ }
352
+ }
353
+ return mapping;
354
+ }
355
+ /**
356
+ * Protect markdown tables before diffing by replacing with placeholders
357
+ * Tables are treated as atomic blocks to prevent corruption during diff
358
+ */
359
+ export function protectTables(md) {
360
+ const tables = [];
361
+ // Match markdown tables: lines starting with | and containing |
362
+ // A table is: optional caption, header row, separator row (|---|), data rows
363
+ const tablePattern = /(?:^(?:\*\*)?Table[^\n]*\n\n?)?(?:^\|[^\n]+\|\n)+/gm;
364
+ const text = md.replace(tablePattern, (match) => {
365
+ // Verify it's actually a table (has separator row with dashes)
366
+ if (!match.includes('|---') && !match.includes('| ---') && !match.includes('|:--')) {
367
+ return match; // Not a real table, just lines with pipes
368
+ }
369
+ const idx = tables.length;
370
+ const placeholder = `\n\nTABLEBLOCK${idx}ENDTABLE\n\n`;
371
+ // Count cells for matching in Word (approximate)
372
+ const cellCount = (match.match(/\|/g) || []).length;
373
+ tables.push({ original: match.trim(), placeholder: placeholder.trim(), cellCount });
374
+ return placeholder;
375
+ });
376
+ return { text, tables };
377
+ }
378
+ /**
379
+ * Restore tables from placeholders
380
+ */
381
+ export function restoreTables(text, tables) {
382
+ for (const table of tables) {
383
+ // Handle cases where placeholder might be inside annotations
384
+ // For tables, we want to preserve the original if it wasn't changed
385
+ const deletionPattern = new RegExp(`\\{--[^}]*?${table.placeholder}[^}]*?--\\}`, 'g');
386
+ text = text.replace(deletionPattern, table.original);
387
+ const insertionPattern = new RegExp(`\\{\\+\\+[^}]*?${table.placeholder}[^}]*?\\+\\+\\}`, 'g');
388
+ text = text.replace(insertionPattern, table.original);
389
+ // Normal replacement
390
+ text = text.split(table.placeholder).join(table.original);
391
+ }
392
+ return text;
393
+ }
394
+ //# sourceMappingURL=protect-restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-restore.js","sourceRoot":"","sources":["../../lib/protect-restore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Rate Limiter - Prevents API abuse with exponential backoff
3
+ */
4
+ export interface RateLimiterOptions {
5
+ minDelay?: number;
6
+ maxDelay?: number;
7
+ maxRetries?: number;
8
+ backoffFactor?: number;
9
+ }
10
+ export declare class RateLimiter {
11
+ private minDelay;
12
+ private maxDelay;
13
+ private maxRetries;
14
+ private backoffFactor;
15
+ private lastRequestTime;
16
+ private currentDelay;
17
+ private consecutiveErrors;
18
+ constructor(options?: RateLimiterOptions);
19
+ wait(): Promise<void>;
20
+ onSuccess(): void;
21
+ onError(statusCode: number): boolean;
22
+ fetchWithRetry(url: string, options?: RequestInit): Promise<Response>;
23
+ }
24
+ export declare const crossrefLimiter: RateLimiter;
25
+ export declare const dataciteLimiter: RateLimiter;
26
+ export declare const doiOrgLimiter: RateLimiter;
27
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../lib/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,OAAO,GAAE,kBAAuB;IAUtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,SAAS,IAAI,IAAI;IAMjB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkChF;AAGD,eAAO,MAAM,eAAe,aAAsD,CAAC;AACnF,eAAO,MAAM,eAAe,aAAsD,CAAC;AACnF,eAAO,MAAM,aAAa,aAAsD,CAAC"}