@eightyfourthousand/data-access 2026.3.1 → 2026.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/{src/index.ts → index.d.ts} +1 -2
  2. package/index.js +18 -0
  3. package/index.js.map +1 -0
  4. package/lib/auth.d.ts +59 -0
  5. package/lib/auth.js +135 -0
  6. package/lib/auth.js.map +1 -0
  7. package/lib/bibliography.d.ts +9 -0
  8. package/lib/bibliography.js +31 -0
  9. package/lib/bibliography.js.map +1 -0
  10. package/lib/client-browser.d.ts +1 -0
  11. package/lib/client-browser.js +10 -0
  12. package/lib/client-browser.js.map +1 -0
  13. package/lib/client-server.d.ts +4 -0
  14. package/lib/client-server.js +19 -0
  15. package/lib/client-server.js.map +1 -0
  16. package/lib/client-ssr.d.ts +1 -0
  17. package/lib/client-ssr.js +24 -0
  18. package/lib/client-ssr.js.map +1 -0
  19. package/lib/client-token.d.ts +7 -0
  20. package/lib/client-token.js +21 -0
  21. package/lib/client-token.js.map +1 -0
  22. package/lib/feedback.d.ts +6 -0
  23. package/lib/feedback.js +50 -0
  24. package/lib/feedback.js.map +1 -0
  25. package/lib/folio.d.ts +11 -0
  26. package/lib/folio.js +32 -0
  27. package/lib/folio.js.map +1 -0
  28. package/lib/glossary/batch.d.ts +5 -0
  29. package/lib/glossary/batch.js +24 -0
  30. package/lib/glossary/batch.js.map +1 -0
  31. package/lib/glossary/index.d.ts +4 -0
  32. package/lib/glossary/index.js +5 -0
  33. package/lib/glossary/index.js.map +1 -0
  34. package/lib/glossary/instance.d.ts +10 -0
  35. package/lib/glossary/instance.js +29 -0
  36. package/lib/glossary/instance.js.map +1 -0
  37. package/lib/glossary/landing.d.ts +5 -0
  38. package/lib/glossary/landing.js +33 -0
  39. package/lib/glossary/landing.js.map +1 -0
  40. package/lib/glossary/pagination.d.ts +55 -0
  41. package/lib/glossary/pagination.js +255 -0
  42. package/lib/glossary/pagination.js.map +1 -0
  43. package/lib/imprint.d.ts +10 -0
  44. package/lib/imprint.js +24 -0
  45. package/lib/imprint.js.map +1 -0
  46. package/lib/library.d.ts +58 -0
  47. package/lib/library.js +119 -0
  48. package/lib/library.js.map +1 -0
  49. package/lib/local-storage.d.ts +10 -0
  50. package/lib/local-storage.js +25 -0
  51. package/lib/local-storage.js.map +1 -0
  52. package/lib/lookup-entity.d.ts +7 -0
  53. package/lib/lookup-entity.js +94 -0
  54. package/lib/lookup-entity.js.map +1 -0
  55. package/lib/panel-url.d.ts +10 -0
  56. package/lib/panel-url.js +23 -0
  57. package/lib/panel-url.js.map +1 -0
  58. package/lib/passage/batch.d.ts +17 -0
  59. package/lib/passage/batch.js +159 -0
  60. package/lib/passage/batch.js.map +1 -0
  61. package/lib/passage/index.d.ts +5 -0
  62. package/lib/passage/index.js +6 -0
  63. package/lib/passage/index.js.map +1 -0
  64. package/lib/passage/pagination.d.ts +43 -0
  65. package/lib/passage/pagination.js +170 -0
  66. package/lib/passage/pagination.js.map +1 -0
  67. package/lib/passage/read.d.ts +15 -0
  68. package/lib/passage/read.js +61 -0
  69. package/lib/passage/read.js.map +1 -0
  70. package/lib/passage/replace-persistence.d.ts +46 -0
  71. package/lib/passage/replace-persistence.js +94 -0
  72. package/lib/passage/replace-persistence.js.map +1 -0
  73. package/lib/passage/save.d.ts +16 -0
  74. package/lib/passage/save.js +231 -0
  75. package/lib/passage/save.js.map +1 -0
  76. package/lib/proxy.d.ts +7 -0
  77. package/lib/proxy.js +48 -0
  78. package/lib/proxy.js.map +1 -0
  79. package/lib/publications.d.ts +86 -0
  80. package/lib/publications.js +226 -0
  81. package/lib/publications.js.map +1 -0
  82. package/lib/replace.d.ts +31 -0
  83. package/lib/replace.js +134 -0
  84. package/lib/replace.js.map +1 -0
  85. package/lib/storage.d.ts +7 -0
  86. package/lib/storage.js +11 -0
  87. package/lib/storage.js.map +1 -0
  88. package/lib/types/alignment.d.ts +18 -0
  89. package/lib/types/alignment.js +13 -0
  90. package/lib/types/alignment.js.map +1 -0
  91. package/lib/types/annotation/abbreviation.d.ts +3 -0
  92. package/lib/types/annotation/abbreviation.js +20 -0
  93. package/lib/types/annotation/abbreviation.js.map +1 -0
  94. package/lib/types/annotation/annotation-type.d.ts +31 -0
  95. package/lib/types/annotation/annotation-type.js +81 -0
  96. package/lib/types/annotation/annotation-type.js.map +1 -0
  97. package/lib/types/annotation/annotation.d.ts +142 -0
  98. package/lib/types/annotation/annotation.js +23 -0
  99. package/lib/types/annotation/annotation.js.map +1 -0
  100. package/lib/types/annotation/audio.d.ts +3 -0
  101. package/lib/types/annotation/audio.js +24 -0
  102. package/lib/types/annotation/audio.js.map +1 -0
  103. package/lib/types/annotation/blockquote.d.ts +3 -0
  104. package/lib/types/annotation/blockquote.js +8 -0
  105. package/lib/types/annotation/blockquote.js.map +1 -0
  106. package/lib/types/annotation/code.d.ts +3 -0
  107. package/lib/types/annotation/code.js +8 -0
  108. package/lib/types/annotation/code.js.map +1 -0
  109. package/lib/types/annotation/deprecated.d.ts +3 -0
  110. package/lib/types/annotation/deprecated.js +8 -0
  111. package/lib/types/annotation/deprecated.js.map +1 -0
  112. package/lib/types/annotation/end-note-link.d.ts +3 -0
  113. package/lib/types/annotation/end-note-link.js +23 -0
  114. package/lib/types/annotation/end-note-link.js.map +1 -0
  115. package/lib/types/annotation/export.d.ts +3 -0
  116. package/{src/lib/types/annotation/export.ts → lib/types/annotation/export.js} +34 -36
  117. package/lib/types/annotation/export.js.map +1 -0
  118. package/lib/types/annotation/glossary-instance.d.ts +3 -0
  119. package/lib/types/annotation/glossary-instance.js +23 -0
  120. package/lib/types/annotation/glossary-instance.js.map +1 -0
  121. package/lib/types/annotation/has-abbreviation.d.ts +3 -0
  122. package/lib/types/annotation/has-abbreviation.js +20 -0
  123. package/lib/types/annotation/has-abbreviation.js.map +1 -0
  124. package/lib/types/annotation/heading.d.ts +3 -0
  125. package/lib/types/annotation/heading.js +23 -0
  126. package/lib/types/annotation/heading.js.map +1 -0
  127. package/lib/types/annotation/image.d.ts +3 -0
  128. package/lib/types/annotation/image.js +20 -0
  129. package/lib/types/annotation/image.js.map +1 -0
  130. package/lib/types/annotation/indent.d.ts +3 -0
  131. package/lib/types/annotation/indent.js +8 -0
  132. package/lib/types/annotation/indent.js.map +1 -0
  133. package/lib/types/annotation/index.js +5 -0
  134. package/lib/types/annotation/index.js.map +1 -0
  135. package/lib/types/annotation/inline-title.d.ts +3 -0
  136. package/lib/types/annotation/inline-title.js +21 -0
  137. package/lib/types/annotation/inline-title.js.map +1 -0
  138. package/lib/types/annotation/internal-link.d.ts +3 -0
  139. package/lib/types/annotation/internal-link.js +62 -0
  140. package/lib/types/annotation/internal-link.js.map +1 -0
  141. package/lib/types/annotation/leading-space.d.ts +3 -0
  142. package/lib/types/annotation/leading-space.js +8 -0
  143. package/lib/types/annotation/leading-space.js.map +1 -0
  144. package/lib/types/annotation/line-group.d.ts +3 -0
  145. package/lib/types/annotation/line-group.js +8 -0
  146. package/lib/types/annotation/line-group.js.map +1 -0
  147. package/lib/types/annotation/line.d.ts +3 -0
  148. package/lib/types/annotation/line.js +8 -0
  149. package/lib/types/annotation/line.js.map +1 -0
  150. package/lib/types/annotation/link.d.ts +3 -0
  151. package/lib/types/annotation/link.js +27 -0
  152. package/lib/types/annotation/link.js.map +1 -0
  153. package/lib/types/annotation/list-item.d.ts +3 -0
  154. package/lib/types/annotation/list-item.js +8 -0
  155. package/lib/types/annotation/list-item.js.map +1 -0
  156. package/lib/types/annotation/list.d.ts +3 -0
  157. package/lib/types/annotation/list.js +31 -0
  158. package/lib/types/annotation/list.js.map +1 -0
  159. package/lib/types/annotation/mantra.d.ts +3 -0
  160. package/lib/types/annotation/mantra.js +21 -0
  161. package/lib/types/annotation/mantra.js.map +1 -0
  162. package/lib/types/annotation/mention.d.ts +3 -0
  163. package/lib/types/annotation/mention.js +50 -0
  164. package/lib/types/annotation/mention.js.map +1 -0
  165. package/lib/types/annotation/paragraph.d.ts +3 -0
  166. package/lib/types/annotation/paragraph.js +8 -0
  167. package/lib/types/annotation/paragraph.js.map +1 -0
  168. package/lib/types/annotation/quote.d.ts +3 -0
  169. package/lib/types/annotation/quote.js +21 -0
  170. package/lib/types/annotation/quote.js.map +1 -0
  171. package/lib/types/annotation/quoted.d.ts +3 -0
  172. package/lib/types/annotation/quoted.js +21 -0
  173. package/lib/types/annotation/quoted.js.map +1 -0
  174. package/lib/types/annotation/reference.d.ts +3 -0
  175. package/lib/types/annotation/reference.js +8 -0
  176. package/lib/types/annotation/reference.js.map +1 -0
  177. package/lib/types/annotation/span.d.ts +3 -0
  178. package/lib/types/annotation/span.js +29 -0
  179. package/lib/types/annotation/span.js.map +1 -0
  180. package/lib/types/annotation/table-body-data.d.ts +3 -0
  181. package/lib/types/annotation/table-body-data.js +8 -0
  182. package/lib/types/annotation/table-body-data.js.map +1 -0
  183. package/lib/types/annotation/table-body-header.d.ts +3 -0
  184. package/lib/types/annotation/table-body-header.js +8 -0
  185. package/lib/types/annotation/table-body-header.js.map +1 -0
  186. package/lib/types/annotation/table-body-row.d.ts +3 -0
  187. package/lib/types/annotation/table-body-row.js +8 -0
  188. package/lib/types/annotation/table-body-row.js.map +1 -0
  189. package/lib/types/annotation/table.d.ts +3 -0
  190. package/lib/types/annotation/table.js +8 -0
  191. package/lib/types/annotation/table.js.map +1 -0
  192. package/lib/types/annotation/trailer.d.ts +3 -0
  193. package/lib/types/annotation/trailer.js +8 -0
  194. package/lib/types/annotation/trailer.js.map +1 -0
  195. package/lib/types/annotation/transform.d.ts +6 -0
  196. package/lib/types/annotation/transform.js +108 -0
  197. package/lib/types/annotation/transform.js.map +1 -0
  198. package/lib/types/annotation/unknown.d.ts +3 -0
  199. package/lib/types/annotation/unknown.js +8 -0
  200. package/lib/types/annotation/unknown.js.map +1 -0
  201. package/lib/types/bibliography.d.ts +41 -0
  202. package/lib/types/bibliography.js +30 -0
  203. package/lib/types/bibliography.js.map +1 -0
  204. package/{src/lib/types/client.ts → lib/types/client.d.ts} +0 -1
  205. package/lib/types/client.js +2 -0
  206. package/lib/types/client.js.map +1 -0
  207. package/{src/lib/types/editor-content.ts → lib/types/editor-content.d.ts} +7 -11
  208. package/lib/types/editor-content.js +2 -0
  209. package/lib/types/editor-content.js.map +1 -0
  210. package/lib/types/folio.d.ts +17 -0
  211. package/lib/types/folio.js +11 -0
  212. package/lib/types/folio.js.map +1 -0
  213. package/lib/types/glossary-page.d.ts +48 -0
  214. package/lib/types/glossary-page.js +21 -0
  215. package/lib/types/glossary-page.js.map +1 -0
  216. package/lib/types/glossary.d.ts +76 -0
  217. package/lib/types/glossary.js +32 -0
  218. package/lib/types/glossary.js.map +1 -0
  219. package/lib/types/imprint.d.ts +78 -0
  220. package/lib/types/imprint.js +71 -0
  221. package/lib/types/imprint.js.map +1 -0
  222. package/{src/lib/types/index.ts → lib/types/index.d.ts} +0 -3
  223. package/lib/types/index.js +20 -0
  224. package/lib/types/index.js.map +1 -0
  225. package/lib/types/language.d.ts +9 -0
  226. package/lib/types/language.js +41 -0
  227. package/lib/types/language.js.map +1 -0
  228. package/lib/types/layout.d.ts +5 -0
  229. package/lib/types/layout.js +23 -0
  230. package/lib/types/layout.js.map +1 -0
  231. package/lib/types/library.d.ts +19 -0
  232. package/lib/types/library.js +8 -0
  233. package/lib/types/library.js.map +1 -0
  234. package/lib/types/passage.d.ts +73 -0
  235. package/lib/types/passage.js +120 -0
  236. package/lib/types/passage.js.map +1 -0
  237. package/lib/types/semver.js +2 -0
  238. package/lib/types/semver.js.map +1 -0
  239. package/lib/types/title.d.ts +21 -0
  240. package/lib/types/title.js +22 -0
  241. package/lib/types/title.js.map +1 -0
  242. package/lib/types/toh.js +2 -0
  243. package/lib/types/toh.js.map +1 -0
  244. package/{src/lib/types/translation.ts → lib/types/translation.d.ts} +5 -7
  245. package/lib/types/translation.js +2 -0
  246. package/lib/types/translation.js.map +1 -0
  247. package/{src/lib/types/user.ts → lib/types/user.d.ts} +2 -11
  248. package/lib/types/user.js +9 -0
  249. package/lib/types/user.js.map +1 -0
  250. package/lib/types/work.d.ts +37 -0
  251. package/lib/types/work.js +15 -0
  252. package/lib/types/work.js.map +1 -0
  253. package/lib/use-bookmark.d.ts +10 -0
  254. package/lib/use-bookmark.js +31 -0
  255. package/lib/use-bookmark.js.map +1 -0
  256. package/package.json +25 -3
  257. package/ssr.js +6 -0
  258. package/ssr.js.map +1 -0
  259. package/.babelrc +0 -12
  260. package/.eslintrc.json +0 -18
  261. package/README.md +0 -9
  262. package/jest.config.ts +0 -10
  263. package/project.json +0 -21
  264. package/src/lib/auth.ts +0 -203
  265. package/src/lib/bibliography.ts +0 -57
  266. package/src/lib/canon.ts +0 -111
  267. package/src/lib/client-browser.ts +0 -12
  268. package/src/lib/client-server.ts +0 -30
  269. package/src/lib/client-ssr.ts +0 -24
  270. package/src/lib/client-token.ts +0 -24
  271. package/src/lib/feedback.ts +0 -71
  272. package/src/lib/folio.ts +0 -43
  273. package/src/lib/glossary.ts +0 -147
  274. package/src/lib/imprint.ts +0 -42
  275. package/src/lib/library.ts +0 -209
  276. package/src/lib/local-storage.ts +0 -33
  277. package/src/lib/lookup-entity.ts +0 -122
  278. package/src/lib/panel-url.ts +0 -43
  279. package/src/lib/passage.ts +0 -122
  280. package/src/lib/projects.ts +0 -107
  281. package/src/lib/proxy.ts +0 -68
  282. package/src/lib/publications.ts +0 -213
  283. package/src/lib/storage.ts +0 -23
  284. package/src/lib/types/alignment.ts +0 -32
  285. package/src/lib/types/annotation/abbreviation.ts +0 -30
  286. package/src/lib/types/annotation/annotation-type.ts +0 -219
  287. package/src/lib/types/annotation/annotation.ts +0 -244
  288. package/src/lib/types/annotation/audio.ts +0 -33
  289. package/src/lib/types/annotation/blockquote.ts +0 -18
  290. package/src/lib/types/annotation/code.ts +0 -16
  291. package/src/lib/types/annotation/deprecated.ts +0 -18
  292. package/src/lib/types/annotation/end-note-link.ts +0 -35
  293. package/src/lib/types/annotation/glossary-instance.ts +0 -34
  294. package/src/lib/types/annotation/has-abbreviation.ts +0 -30
  295. package/src/lib/types/annotation/heading.ts +0 -37
  296. package/src/lib/types/annotation/image.ts +0 -29
  297. package/src/lib/types/annotation/indent.ts +0 -16
  298. package/src/lib/types/annotation/inline-title.ts +0 -34
  299. package/src/lib/types/annotation/internal-link.ts +0 -86
  300. package/src/lib/types/annotation/leading-space.ts +0 -18
  301. package/src/lib/types/annotation/line-group.ts +0 -18
  302. package/src/lib/types/annotation/line.ts +0 -16
  303. package/src/lib/types/annotation/link.ts +0 -38
  304. package/src/lib/types/annotation/list-item.ts +0 -16
  305. package/src/lib/types/annotation/list.ts +0 -43
  306. package/src/lib/types/annotation/mantra.ts +0 -31
  307. package/src/lib/types/annotation/mention.ts +0 -64
  308. package/src/lib/types/annotation/paragraph.ts +0 -18
  309. package/src/lib/types/annotation/quote.ts +0 -30
  310. package/src/lib/types/annotation/quoted.ts +0 -30
  311. package/src/lib/types/annotation/reference.ts +0 -18
  312. package/src/lib/types/annotation/span.ts +0 -39
  313. package/src/lib/types/annotation/table-body-data.ts +0 -18
  314. package/src/lib/types/annotation/table-body-header.ts +0 -18
  315. package/src/lib/types/annotation/table-body-row.ts +0 -18
  316. package/src/lib/types/annotation/table.ts +0 -16
  317. package/src/lib/types/annotation/trailer.ts +0 -16
  318. package/src/lib/types/annotation/transform.ts +0 -140
  319. package/src/lib/types/annotation/unknown.ts +0 -16
  320. package/src/lib/types/bibliography.ts +0 -86
  321. package/src/lib/types/canon.ts +0 -148
  322. package/src/lib/types/contributor.ts +0 -84
  323. package/src/lib/types/folio.ts +0 -28
  324. package/src/lib/types/glossary-page.ts +0 -204
  325. package/src/lib/types/glossary.ts +0 -114
  326. package/src/lib/types/imprint.ts +0 -159
  327. package/src/lib/types/language.ts +0 -64
  328. package/src/lib/types/layout.ts +0 -37
  329. package/src/lib/types/library.ts +0 -29
  330. package/src/lib/types/passage.ts +0 -220
  331. package/src/lib/types/project.ts +0 -200
  332. package/src/lib/types/title.ts +0 -47
  333. package/src/lib/types/work.ts +0 -38
  334. package/src/lib/use-bookmark.ts +0 -45
  335. package/tsconfig.json +0 -20
  336. package/tsconfig.lib.json +0 -26
  337. package/tsconfig.spec.json +0 -22
  338. /package/{src/lib/types/annotation/index.ts → lib/types/annotation/index.d.ts} +0 -0
  339. /package/{src/lib/types/semver.ts → lib/types/semver.d.ts} +0 -0
  340. /package/{src/lib/types/toh.ts → lib/types/toh.d.ts} +0 -0
  341. /package/{src/ssr.ts → ssr.d.ts} +0 -0
@@ -0,0 +1,94 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createServerClient } from './client-ssr';
3
+ import { getBibliographyEntry } from './bibliography';
4
+ import { getPassage, getPassageUuidByXmlId } from './passage';
5
+ import { getTranslationMetadataByToh, getTranslationMetadataByUuid, } from './publications';
6
+ import { panelAndTabForContentType } from './panel-url';
7
+ import { getGlossaryInstance } from './glossary';
8
+ const ALLOWED_TYPES = ['bibliography', 'glossary', 'passage', 'translation', 'work'];
9
+ export const lookupEntity = (_a) => __awaiter(void 0, [_a], void 0, function* ({ type, entity, prefix = '', xmlId, searchParams, }) {
10
+ if (!ALLOWED_TYPES.includes(type)) {
11
+ return;
12
+ }
13
+ const client = yield createServerClient();
14
+ let path = '';
15
+ const query = searchParams || new URLSearchParams();
16
+ switch (type) {
17
+ case 'bibliography':
18
+ {
19
+ const item = yield getBibliographyEntry({ client, uuid: entity });
20
+ if (!(item === null || item === void 0 ? void 0 : item.workUuid) || !item.uuid) {
21
+ return;
22
+ }
23
+ query.set('right', `open:bibliography:${item.uuid}`);
24
+ path = `${prefix}/${item.workUuid}?${query.toString()}`;
25
+ }
26
+ break;
27
+ case 'glossary':
28
+ {
29
+ const item = yield getGlossaryInstance({ client, uuid: entity });
30
+ if (!(item === null || item === void 0 ? void 0 : item.workUuid) || !item.authority) {
31
+ return;
32
+ }
33
+ query.set('right', `open:glossary:${item.authority}`);
34
+ path = `${prefix}/${item.workUuid}?${query.toString()}`;
35
+ }
36
+ break;
37
+ case 'passage':
38
+ {
39
+ const item = yield getPassage({ client, uuid: entity });
40
+ if (!(item === null || item === void 0 ? void 0 : item.workUuid) || !item.uuid) {
41
+ return;
42
+ }
43
+ const queryTab = query.get('tab') || undefined;
44
+ const { panel, tab } = panelAndTabForContentType(item.type, queryTab);
45
+ query.delete('tab');
46
+ query.set(panel, `open:${tab}:${item.uuid}`);
47
+ if (item.toh) {
48
+ query.set('toh', item.toh);
49
+ }
50
+ path = `${prefix}/${item.workUuid}?${query.toString()}`;
51
+ }
52
+ break;
53
+ case 'translation':
54
+ {
55
+ const toh = entity.replace('.html', '');
56
+ query.set('toh', toh);
57
+ if (xmlId) {
58
+ const item = yield getPassageUuidByXmlId({ client, xmlId });
59
+ const queryTab = query.get('tab') || undefined;
60
+ const { panel, tab } = panelAndTabForContentType(item.type, queryTab);
61
+ if ((item === null || item === void 0 ? void 0 : item.uuid) && (item === null || item === void 0 ? void 0 : item.workUuid)) {
62
+ const { uuid, workUuid } = item;
63
+ query.delete('tab');
64
+ query.set(panel, `open:${tab}:${uuid}`);
65
+ path = `${prefix}/${workUuid}?${query.toString()}`;
66
+ return path;
67
+ }
68
+ }
69
+ const item = yield getTranslationMetadataByToh({ client, toh });
70
+ if (!(item === null || item === void 0 ? void 0 : item.uuid)) {
71
+ return;
72
+ }
73
+ path = `${prefix}/${item.uuid}?${query.toString()}`;
74
+ }
75
+ break;
76
+ case 'work':
77
+ {
78
+ const item = yield getTranslationMetadataByUuid({
79
+ client,
80
+ uuid: entity,
81
+ });
82
+ if (!(item === null || item === void 0 ? void 0 : item.uuid)) {
83
+ return;
84
+ }
85
+ path = `${prefix}/${item.uuid}?${query.toString()}`;
86
+ }
87
+ break;
88
+ default: {
89
+ return;
90
+ }
91
+ }
92
+ return path;
93
+ });
94
+ //# sourceMappingURL=lookup-entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-entity.js","sourceRoot":"","sources":["../../../../libs/data-access/src/lib/lookup-entity.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,YAAY,GAAG,KAYzB,EAAE,4CAZ8B,EACjC,IAAI,EACJ,MAAM,EACN,MAAM,GAAG,EAAE,EACX,KAAK,EACL,YAAY,GAOb;IACC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC1C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,KAAK,GAAG,YAAY,IAAI,IAAI,eAAe,EAAE,CAAC;IAEpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,CAAC;gBACC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrD,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1D,CAAC;YACD,MAAM;QACR,KAAK,UAAU;YACb,CAAC;gBACC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACvC,OAAO;gBACT,CAAC;gBAED,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtD,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1D,CAAC;YACD,MAAM;QACR,KAAK,SAAS;YACZ,CAAC;gBACC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;gBAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAEtE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAED,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1D,CAAC;YACD,MAAM;QACR,KAAK,aAAa;YAChB,CAAC;gBACC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACxC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAEtB,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;oBAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAEtE,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,EAAE,CAAC;wBACjC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;wBAChC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACpB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;wBAExC,IAAI,GAAG,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;wBACnD,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,2BAA2B,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE,CAAC;oBAChB,OAAO;gBACT,CAAC;gBAED,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,CAAC;YACD,MAAM;QACR,KAAK,MAAM;YACT,CAAC;gBACC,MAAM,IAAI,GAAG,MAAM,4BAA4B,CAAC;oBAC9C,MAAM;oBACN,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBACH,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE,CAAC;oBAChB,OAAO;gBACT,CAAC;gBAED,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,CAAC;YACD,MAAM;QACR,OAAO,CAAC,CAAC,CAAC;YACR,OAAO;QACT,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { PanelContentType } from './types';
2
+ export declare const panelAndTabForContentType: (contentType: PanelContentType, desiredTab?: string) => {
3
+ panel: string;
4
+ tab: string;
5
+ };
6
+ export declare const urlForPanelContent: ({ location, hash, contentType, }: {
7
+ location: Location;
8
+ hash: string;
9
+ contentType?: PanelContentType;
10
+ }) => string;
@@ -0,0 +1,23 @@
1
+ import { PANEL_FOR_CONTENT_SECTION, TAB_FOR_CONTENT_SECTION, VARIANT_TABS_FOR_TAB, } from './types';
2
+ export const panelAndTabForContentType = (contentType, desiredTab) => {
3
+ const section = contentType.replace('Header', '');
4
+ const panel = PANEL_FOR_CONTENT_SECTION[section] || 'main';
5
+ const defaultTab = TAB_FOR_CONTENT_SECTION[section] || 'translation';
6
+ const variantTabs = VARIANT_TABS_FOR_TAB[section] || [];
7
+ const tab = desiredTab && variantTabs.includes(desiredTab) ? desiredTab : defaultTab;
8
+ return { panel, tab };
9
+ };
10
+ export const urlForPanelContent = ({ location, hash, contentType, }) => {
11
+ const { href, search } = location;
12
+ const baseUrl = new URL(href);
13
+ const searchParams = new URLSearchParams(search);
14
+ if (!contentType) {
15
+ baseUrl.hash = `#${hash}`;
16
+ return baseUrl.toString();
17
+ }
18
+ const { panel, tab } = panelAndTabForContentType(contentType);
19
+ searchParams.set(panel, `open:${tab}:${hash}`);
20
+ baseUrl.search = searchParams.toString();
21
+ return baseUrl.toString();
22
+ };
23
+ //# sourceMappingURL=panel-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-url.js","sourceRoot":"","sources":["../../../../libs/data-access/src/lib/panel-url.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAEzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,WAA6B,EAC7B,UAAmB,EACa,EAAE;IAClC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;IAC3D,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC;IACrE,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,GAAG,GACP,UAAU,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAE3E,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,QAAQ,EACR,IAAI,EACJ,WAAW,GAKZ,EAAU,EAAE;IACX,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAC9D,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AlignmentDTO, AnnotationDTO, DataClient, Passages } from '../types';
2
+ export declare const getAnnotationsByPassageUuids: ({ client, passageUuids, }: {
3
+ client: DataClient;
4
+ passageUuids: readonly string[];
5
+ }) => Promise<Map<string, AnnotationDTO[]>>;
6
+ export declare const getAlignmentsByPassageUuids: ({ client, passageUuids, }: {
7
+ client: DataClient;
8
+ passageUuids: readonly string[];
9
+ }) => Promise<Map<string, AlignmentDTO[]>>;
10
+ export declare const getPassageLabelsByUuids: ({ client, passageUuids, }: {
11
+ client: DataClient;
12
+ passageUuids: readonly string[];
13
+ }) => Promise<Map<string, string>>;
14
+ export declare const getPassageReferencesByTargetUuids: ({ client, passageUuids, }: {
15
+ client: DataClient;
16
+ passageUuids: readonly string[];
17
+ }) => Promise<Map<string, Passages>>;
@@ -0,0 +1,159 @@
1
+ import { __awaiter } from "tslib";
2
+ import { passageFromDTO, } from '../types';
3
+ export const getAnnotationsByPassageUuids = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, passageUuids, }) {
4
+ var _b;
5
+ const annotationsByPassage = new Map();
6
+ if (passageUuids.length === 0) {
7
+ return annotationsByPassage;
8
+ }
9
+ const pageSize = 1000;
10
+ let allData = [];
11
+ let offset = 0;
12
+ let hasMore = true;
13
+ while (hasMore) {
14
+ const { data, error } = yield client
15
+ .from('passage_annotations')
16
+ .select('uuid, passage_uuid, type, start, end, content, toh')
17
+ .in('passage_uuid', passageUuids)
18
+ .not('type', 'like', 'deprecated%')
19
+ .range(offset, offset + pageSize - 1);
20
+ if (error) {
21
+ console.error('Error batch loading annotations:', error);
22
+ return new Map();
23
+ }
24
+ allData = allData.concat((data !== null && data !== void 0 ? data : []));
25
+ hasMore = ((_b = data === null || data === void 0 ? void 0 : data.length) !== null && _b !== void 0 ? _b : 0) === pageSize;
26
+ offset += pageSize;
27
+ }
28
+ for (const annotation of allData) {
29
+ const passageUuid = annotation.passage_uuid;
30
+ if (!passageUuid)
31
+ continue;
32
+ const existing = annotationsByPassage.get(passageUuid);
33
+ if (existing) {
34
+ existing.push(annotation);
35
+ }
36
+ else {
37
+ annotationsByPassage.set(passageUuid, [annotation]);
38
+ }
39
+ }
40
+ for (const annotations of annotationsByPassage.values()) {
41
+ annotations.sort((a, b) => {
42
+ if (a.start !== b.start)
43
+ return a.start - b.start;
44
+ return b.end - a.end;
45
+ });
46
+ }
47
+ return annotationsByPassage;
48
+ });
49
+ export const getAlignmentsByPassageUuids = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, passageUuids, }) {
50
+ var _b;
51
+ const alignmentsByPassage = new Map();
52
+ if (passageUuids.length === 0) {
53
+ return alignmentsByPassage;
54
+ }
55
+ const pageSize = 1000;
56
+ let allData = [];
57
+ let offset = 0;
58
+ let hasMore = true;
59
+ while (hasMore) {
60
+ const { data, error } = yield client
61
+ .from('passage_alignments')
62
+ .select('passage_uuid, folio_uuid, toh, tibetan, folio_number, volume_number')
63
+ .in('passage_uuid', passageUuids)
64
+ .range(offset, offset + pageSize - 1);
65
+ if (error) {
66
+ console.error('Error batch loading alignments:', error);
67
+ return new Map();
68
+ }
69
+ allData = allData.concat((data !== null && data !== void 0 ? data : []));
70
+ hasMore = ((_b = data === null || data === void 0 ? void 0 : data.length) !== null && _b !== void 0 ? _b : 0) === pageSize;
71
+ offset += pageSize;
72
+ }
73
+ for (const row of allData) {
74
+ const existing = alignmentsByPassage.get(row.passage_uuid);
75
+ if (existing) {
76
+ existing.push(row);
77
+ }
78
+ else {
79
+ alignmentsByPassage.set(row.passage_uuid, [row]);
80
+ }
81
+ }
82
+ return alignmentsByPassage;
83
+ });
84
+ export const getPassageLabelsByUuids = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, passageUuids, }) {
85
+ const labelsByUuid = new Map();
86
+ if (passageUuids.length === 0) {
87
+ return labelsByUuid;
88
+ }
89
+ const { data, error } = yield client
90
+ .from('passages')
91
+ .select('uuid, label')
92
+ .in('uuid', passageUuids);
93
+ if (error) {
94
+ console.error('Error batch loading passage labels:', error);
95
+ return labelsByUuid;
96
+ }
97
+ for (const passage of data !== null && data !== void 0 ? data : []) {
98
+ if (passage.label) {
99
+ labelsByUuid.set(passage.uuid, passage.label);
100
+ }
101
+ }
102
+ return labelsByUuid;
103
+ });
104
+ export const getPassageReferencesByTargetUuids = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, passageUuids, }) {
105
+ var _b;
106
+ const referencesByTargetUuid = new Map();
107
+ if (passageUuids.length === 0) {
108
+ return referencesByTargetUuid;
109
+ }
110
+ const { data: annotations, error: annotationsError } = yield client.rpc('get_passage_annotations_by_content_uuids', {
111
+ annotation_type: 'end-note-link',
112
+ target_uuids: passageUuids,
113
+ });
114
+ if (annotationsError) {
115
+ console.error('Error batch loading passage reference annotations:', annotationsError);
116
+ return referencesByTargetUuid;
117
+ }
118
+ const targetToSourceUuids = new Map();
119
+ const allSourceUuids = new Set();
120
+ for (const row of (annotations !== null && annotations !== void 0 ? annotations : [])) {
121
+ if (!row.target_uuid || !row.passage_uuid)
122
+ continue;
123
+ allSourceUuids.add(row.passage_uuid);
124
+ const sourceSet = (_b = targetToSourceUuids.get(row.target_uuid)) !== null && _b !== void 0 ? _b : new Set();
125
+ sourceSet.add(row.passage_uuid);
126
+ targetToSourceUuids.set(row.target_uuid, sourceSet);
127
+ }
128
+ const sourceUuidArray = Array.from(allSourceUuids);
129
+ const passageMap = new Map();
130
+ const inBatchSize = 300;
131
+ for (let i = 0; i < sourceUuidArray.length; i += inBatchSize) {
132
+ const batch = sourceUuidArray.slice(i, i + inBatchSize);
133
+ const { data, error } = yield client
134
+ .from('passages')
135
+ .select('uuid, content, label, sort, type, toh, xmlId, work_uuid')
136
+ .in('uuid', batch);
137
+ if (error) {
138
+ console.error('Error batch loading passage reference data:', error);
139
+ return new Map();
140
+ }
141
+ for (const row of (data !== null && data !== void 0 ? data : [])) {
142
+ passageMap.set(row.uuid, passageFromDTO(row));
143
+ }
144
+ }
145
+ for (const targetUuid of passageUuids) {
146
+ const sourceUuids = targetToSourceUuids.get(targetUuid);
147
+ if (!sourceUuids)
148
+ continue;
149
+ const references = [];
150
+ for (const sourceUuid of sourceUuids) {
151
+ const passage = passageMap.get(sourceUuid);
152
+ if (passage)
153
+ references.push(passage);
154
+ }
155
+ referencesByTargetUuid.set(targetUuid, references.sort((a, b) => a.sort - b.sort));
156
+ }
157
+ return referencesByTargetUuid;
158
+ });
159
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './batch';
2
+ export * from './pagination';
3
+ export * from './read';
4
+ export * from './replace-persistence';
5
+ export * from './save';
@@ -0,0 +1,6 @@
1
+ export * from './batch';
2
+ export * from './pagination';
3
+ export * from './read';
4
+ export * from './replace-persistence';
5
+ export * from './save';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { DataClient } from '../types';
2
+ type ApiPaginationDirection = 'FORWARD' | 'BACKWARD' | 'AROUND';
3
+ export type PassageConnectionNode = {
4
+ uuid: string;
5
+ workUuid: string;
6
+ content: string;
7
+ label: string | null;
8
+ sort: number;
9
+ type: string;
10
+ toh: string | null;
11
+ xmlId: string | null;
12
+ };
13
+ export type PassageConnectionPage = {
14
+ nodes: PassageConnectionNode[];
15
+ nextCursor: string | null;
16
+ prevCursor: string | null;
17
+ hasMoreAfter: boolean;
18
+ hasMoreBefore: boolean;
19
+ };
20
+ export declare const getWorkPassagesConnection: ({ client, workUuid, cursor, limit, filter, direction, }: {
21
+ client: DataClient;
22
+ workUuid: string;
23
+ cursor?: string;
24
+ limit?: number;
25
+ filter?: {
26
+ type?: string;
27
+ types?: string[];
28
+ label?: string;
29
+ };
30
+ direction?: ApiPaginationDirection;
31
+ }) => Promise<PassageConnectionPage>;
32
+ export declare const getWorkPassagesAround: ({ client, workUuid, cursor, limit, filter, }: {
33
+ client: DataClient;
34
+ workUuid: string;
35
+ cursor?: string;
36
+ limit: number;
37
+ filter?: {
38
+ type?: string;
39
+ types?: string[];
40
+ label?: string;
41
+ };
42
+ }) => Promise<PassageConnectionPage>;
43
+ export {};
@@ -0,0 +1,170 @@
1
+ import { __awaiter } from "tslib";
2
+ const EMPTY_PASSAGE_CONNECTION = {
3
+ nodes: [],
4
+ nextCursor: null,
5
+ prevCursor: null,
6
+ hasMoreAfter: false,
7
+ hasMoreBefore: false,
8
+ };
9
+ const DEFAULT_PASSAGE_CONNECTION_LIMIT = 20;
10
+ const MAX_PASSAGE_CONNECTION_LIMIT = 100;
11
+ function buildPassageConnection(nodes, nextCursor, prevCursor, hasMoreAfter, hasMoreBefore) {
12
+ return {
13
+ nodes,
14
+ nextCursor,
15
+ prevCursor,
16
+ hasMoreAfter,
17
+ hasMoreBefore,
18
+ };
19
+ }
20
+ function rowToPassageConnectionNode(row, workUuid) {
21
+ var _a, _b;
22
+ return {
23
+ uuid: row.uuid,
24
+ workUuid,
25
+ content: row.content,
26
+ label: row.label,
27
+ sort: row.sort,
28
+ type: row.type,
29
+ toh: (_a = row.toh) !== null && _a !== void 0 ? _a : null,
30
+ xmlId: (_b = row.xmlId) !== null && _b !== void 0 ? _b : null,
31
+ };
32
+ }
33
+ export const getWorkPassagesConnection = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, workUuid, cursor, limit = DEFAULT_PASSAGE_CONNECTION_LIMIT, filter, direction = 'FORWARD', }) {
34
+ const clampedLimit = Math.min(Math.max(limit, 1), MAX_PASSAGE_CONNECTION_LIMIT);
35
+ if (direction === 'AROUND') {
36
+ return getWorkPassagesAround({
37
+ client,
38
+ workUuid,
39
+ cursor,
40
+ limit: clampedLimit,
41
+ filter,
42
+ });
43
+ }
44
+ const isForward = direction === 'FORWARD';
45
+ let cursorSort = null;
46
+ if (cursor) {
47
+ const { data: cursorPassage } = yield client
48
+ .from('passages')
49
+ .select('sort')
50
+ .eq('uuid', cursor)
51
+ .single();
52
+ if (cursorPassage) {
53
+ cursorSort = cursorPassage.sort;
54
+ }
55
+ }
56
+ let query = client
57
+ .from('passages')
58
+ .select('uuid, content, label, sort, type, toh, xmlId, work_uuid')
59
+ .eq('work_uuid', workUuid)
60
+ .order('sort', { ascending: isForward })
61
+ .limit(clampedLimit + 1);
62
+ if (cursorSort !== null) {
63
+ query = isForward
64
+ ? query.gt('sort', cursorSort)
65
+ : query.lt('sort', cursorSort);
66
+ }
67
+ if ((filter === null || filter === void 0 ? void 0 : filter.types) && filter.types.length > 0) {
68
+ query = query.in('type', filter.types);
69
+ }
70
+ else if (filter === null || filter === void 0 ? void 0 : filter.type) {
71
+ query = query.filter('type', 'match', `${filter.type}.*`);
72
+ }
73
+ if (filter === null || filter === void 0 ? void 0 : filter.label) {
74
+ query = query.ilike('label', filter.label);
75
+ }
76
+ const { data, error } = yield query;
77
+ if (error) {
78
+ console.error('Error fetching passages:', error);
79
+ return EMPTY_PASSAGE_CONNECTION;
80
+ }
81
+ const passages = (data !== null && data !== void 0 ? data : []);
82
+ const hasMore = passages.length > clampedLimit;
83
+ let resultPassages = hasMore ? passages.slice(0, clampedLimit) : passages;
84
+ if (!isForward) {
85
+ resultPassages = resultPassages.reverse();
86
+ }
87
+ const hasMoreAfter = isForward ? hasMore : cursorSort !== null;
88
+ const hasMoreBefore = isForward ? cursorSort !== null : hasMore;
89
+ if (resultPassages.length === 0) {
90
+ return buildPassageConnection([], null, null, false, hasMoreBefore);
91
+ }
92
+ const nodes = resultPassages.map((row) => rowToPassageConnectionNode(row, workUuid));
93
+ const firstPassage = resultPassages[0];
94
+ const lastPassage = resultPassages[resultPassages.length - 1];
95
+ return buildPassageConnection(nodes, hasMoreAfter ? lastPassage.uuid : null, hasMoreBefore ? firstPassage.uuid : null, hasMoreAfter, hasMoreBefore);
96
+ });
97
+ export const getWorkPassagesAround = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, workUuid, cursor, limit, filter, }) {
98
+ var _b, _c;
99
+ if (!cursor) {
100
+ console.error('AROUND direction requires a cursor');
101
+ return EMPTY_PASSAGE_CONNECTION;
102
+ }
103
+ const { data: cursorPassage } = yield client
104
+ .from('passages')
105
+ .select('sort')
106
+ .eq('uuid', cursor)
107
+ .single();
108
+ if (!cursorPassage) {
109
+ console.error('Cursor passage not found');
110
+ return EMPTY_PASSAGE_CONNECTION;
111
+ }
112
+ const cursorSort = cursorPassage.sort;
113
+ const limitBefore = Math.floor(limit / 2);
114
+ const limitAfter = limit - limitBefore;
115
+ const baseSelect = 'uuid, content, label, sort, type, toh, xmlId, work_uuid';
116
+ let beforeQuery = client
117
+ .from('passages')
118
+ .select(baseSelect)
119
+ .eq('work_uuid', workUuid)
120
+ .lt('sort', cursorSort)
121
+ .order('sort', { ascending: false })
122
+ .limit(limitBefore + 1);
123
+ let afterQuery = client
124
+ .from('passages')
125
+ .select(baseSelect)
126
+ .eq('work_uuid', workUuid)
127
+ .gte('sort', cursorSort)
128
+ .order('sort', { ascending: true })
129
+ .limit(limitAfter + 1);
130
+ if ((filter === null || filter === void 0 ? void 0 : filter.types) && filter.types.length > 0) {
131
+ beforeQuery = beforeQuery.in('type', filter.types);
132
+ afterQuery = afterQuery.in('type', filter.types);
133
+ }
134
+ else if (filter === null || filter === void 0 ? void 0 : filter.type) {
135
+ const pattern = `${filter.type}.*`;
136
+ beforeQuery = beforeQuery.filter('type', 'match', pattern);
137
+ afterQuery = afterQuery.filter('type', 'match', pattern);
138
+ }
139
+ if (filter === null || filter === void 0 ? void 0 : filter.label) {
140
+ beforeQuery = beforeQuery.ilike('label', filter.label);
141
+ afterQuery = afterQuery.ilike('label', filter.label);
142
+ }
143
+ const [beforeResult, afterResult] = yield Promise.all([
144
+ beforeQuery,
145
+ afterQuery,
146
+ ]);
147
+ if (beforeResult.error || afterResult.error) {
148
+ console.error('Error fetching passages around:', beforeResult.error || afterResult.error);
149
+ return EMPTY_PASSAGE_CONNECTION;
150
+ }
151
+ const passagesBefore = ((_b = beforeResult.data) !== null && _b !== void 0 ? _b : []);
152
+ const passagesAfter = ((_c = afterResult.data) !== null && _c !== void 0 ? _c : []);
153
+ const hasMoreBefore = passagesBefore.length > limitBefore;
154
+ const hasMoreAfter = passagesAfter.length > limitAfter;
155
+ const trimmedBefore = hasMoreBefore
156
+ ? passagesBefore.slice(0, limitBefore)
157
+ : passagesBefore;
158
+ const trimmedAfter = hasMoreAfter
159
+ ? passagesAfter.slice(0, limitAfter)
160
+ : passagesAfter;
161
+ const resultPassages = [...trimmedBefore.reverse(), ...trimmedAfter];
162
+ if (resultPassages.length === 0) {
163
+ return EMPTY_PASSAGE_CONNECTION;
164
+ }
165
+ const nodes = resultPassages.map((row) => rowToPassageConnectionNode(row, workUuid));
166
+ const firstPassage = resultPassages[0];
167
+ const lastPassage = resultPassages[resultPassages.length - 1];
168
+ return buildPassageConnection(nodes, hasMoreAfter ? lastPassage.uuid : null, hasMoreBefore ? firstPassage.uuid : null, hasMoreAfter, hasMoreBefore);
169
+ });
170
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { DataClient } from '../types';
2
+ import { PassageConnectionNode } from './pagination';
3
+ export declare const getPassage: ({ client, uuid, }: {
4
+ client: DataClient;
5
+ uuid: string;
6
+ }) => Promise<import("../types").Passage | undefined>;
7
+ export declare const getPassageByUuidOrXmlId: ({ client, uuid, xmlId, }: {
8
+ client: DataClient;
9
+ uuid?: string;
10
+ xmlId?: string;
11
+ }) => Promise<PassageConnectionNode | null>;
12
+ export declare const getPassageUuidByXmlId: ({ client, xmlId, }: {
13
+ client: DataClient;
14
+ xmlId: string;
15
+ }) => Promise<any>;
@@ -0,0 +1,61 @@
1
+ import { __awaiter } from "tslib";
2
+ import { annotationsFromDTO, passageFromDTO, } from '../types';
3
+ export const getPassage = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, uuid, }) {
4
+ const { data } = yield client
5
+ .rpc('get_passage_with_annotations', {
6
+ uuid_input: uuid,
7
+ })
8
+ .single();
9
+ if (!data) {
10
+ console.warn(`No passage found for uuid: ${uuid}`);
11
+ return undefined;
12
+ }
13
+ const dto = data;
14
+ return passageFromDTO(dto, annotationsFromDTO((dto === null || dto === void 0 ? void 0 : dto.annotations) || [], (dto === null || dto === void 0 ? void 0 : dto.content.length) || 0));
15
+ });
16
+ export const getPassageByUuidOrXmlId = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, uuid, xmlId, }) {
17
+ var _b, _c;
18
+ if (!uuid && !xmlId) {
19
+ return null;
20
+ }
21
+ let query = client
22
+ .from('passages')
23
+ .select('uuid, content, label, sort, type, xmlId, toh, work_uuid');
24
+ if (uuid) {
25
+ query = query.eq('uuid', uuid);
26
+ }
27
+ else if (xmlId) {
28
+ query = query.eq('xmlId', xmlId);
29
+ }
30
+ const { data, error } = yield query.single();
31
+ if (error) {
32
+ console.error(`Error fetching passage ${uuid || xmlId}:`, error);
33
+ return null;
34
+ }
35
+ if (!data) {
36
+ return null;
37
+ }
38
+ return {
39
+ uuid: data.uuid,
40
+ workUuid: data.work_uuid,
41
+ content: data.content,
42
+ label: data.label,
43
+ sort: data.sort,
44
+ type: data.type,
45
+ toh: (_b = data.toh) !== null && _b !== void 0 ? _b : null,
46
+ xmlId: (_c = data.xmlId) !== null && _c !== void 0 ? _c : null,
47
+ };
48
+ });
49
+ export const getPassageUuidByXmlId = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, xmlId, }) {
50
+ const { data, error } = yield client
51
+ .from('passages')
52
+ .select('uuid, workUuid:work_uuid')
53
+ .eq('xmlId', xmlId)
54
+ .single();
55
+ if (error) {
56
+ console.error(`Error fetching passage uuid for xmlId: ${xmlId}`, error);
57
+ return;
58
+ }
59
+ return data === null || data === void 0 ? void 0 : data.uuid;
60
+ });
61
+ //# sourceMappingURL=read.js.map