@fgbg/mdocs 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/bin/mdocs.js +6 -0
  4. package/dist/server/access/access-control.js +186 -0
  5. package/dist/server/access/access-control.js.map +1 -0
  6. package/dist/server/access/access-control.test.js +197 -0
  7. package/dist/server/access/access-control.test.js.map +1 -0
  8. package/dist/server/access/domain-access.js +53 -0
  9. package/dist/server/access/domain-access.js.map +1 -0
  10. package/dist/server/app.js +78 -0
  11. package/dist/server/app.js.map +1 -0
  12. package/dist/server/cli/main.js +126 -0
  13. package/dist/server/cli/main.js.map +1 -0
  14. package/dist/server/config/index.js +66 -0
  15. package/dist/server/config/index.js.map +1 -0
  16. package/dist/server/db/connection.js +34 -0
  17. package/dist/server/db/connection.js.map +1 -0
  18. package/dist/server/db/repositories/audit.repo.js +20 -0
  19. package/dist/server/db/repositories/audit.repo.js.map +1 -0
  20. package/dist/server/db/repositories/cli-token.repo.js +21 -0
  21. package/dist/server/db/repositories/cli-token.repo.js.map +1 -0
  22. package/dist/server/db/repositories/diagram.repo.js +21 -0
  23. package/dist/server/db/repositories/diagram.repo.js.map +1 -0
  24. package/dist/server/db/repositories/document.repo.js +231 -0
  25. package/dist/server/db/repositories/document.repo.js.map +1 -0
  26. package/dist/server/db/repositories/domain-member-template.repo.js +85 -0
  27. package/dist/server/db/repositories/domain-member-template.repo.js.map +1 -0
  28. package/dist/server/db/repositories/domain.repo.js +95 -0
  29. package/dist/server/db/repositories/domain.repo.js.map +1 -0
  30. package/dist/server/db/repositories/visitor.repo.js +69 -0
  31. package/dist/server/db/repositories/visitor.repo.js.map +1 -0
  32. package/dist/server/db/schema.js +224 -0
  33. package/dist/server/db/schema.js.map +1 -0
  34. package/dist/server/diagrams/diagram.service.js +156 -0
  35. package/dist/server/diagrams/diagram.service.js.map +1 -0
  36. package/dist/server/documents/document.service.integration.test.js +307 -0
  37. package/dist/server/documents/document.service.integration.test.js.map +1 -0
  38. package/dist/server/documents/document.service.js +339 -0
  39. package/dist/server/documents/document.service.js.map +1 -0
  40. package/dist/server/documents/document.service.test.js +170 -0
  41. package/dist/server/documents/document.service.test.js.map +1 -0
  42. package/dist/server/documents/markdown-to-lexical.js +252 -0
  43. package/dist/server/documents/markdown-to-lexical.js.map +1 -0
  44. package/dist/server/documents/markdown-to-lexical.test.js +182 -0
  45. package/dist/server/documents/markdown-to-lexical.test.js.map +1 -0
  46. package/dist/server/documents/tree-and-folders.test.js +363 -0
  47. package/dist/server/documents/tree-and-folders.test.js.map +1 -0
  48. package/dist/server/documents/tree.service.js +146 -0
  49. package/dist/server/documents/tree.service.js.map +1 -0
  50. package/dist/server/domains/personal-domain.service.js +27 -0
  51. package/dist/server/domains/personal-domain.service.js.map +1 -0
  52. package/dist/server/identity/auth.middleware.js +97 -0
  53. package/dist/server/identity/auth.middleware.js.map +1 -0
  54. package/dist/server/identity/cli-token.service.js +101 -0
  55. package/dist/server/identity/cli-token.service.js.map +1 -0
  56. package/dist/server/identity/token.js +58 -0
  57. package/dist/server/identity/token.js.map +1 -0
  58. package/dist/server/identity/visitor.service.js +200 -0
  59. package/dist/server/identity/visitor.service.js.map +1 -0
  60. package/dist/server/identity/visitor.service.test.js +108 -0
  61. package/dist/server/identity/visitor.service.test.js.map +1 -0
  62. package/dist/server/logger/logger.js +276 -0
  63. package/dist/server/logger/logger.js.map +1 -0
  64. package/dist/server/main.js +24 -0
  65. package/dist/server/main.js.map +1 -0
  66. package/dist/server/middleware/document-auth.middleware.js +45 -0
  67. package/dist/server/middleware/document-auth.middleware.js.map +1 -0
  68. package/dist/server/migrations/visitor-migration.service.js +212 -0
  69. package/dist/server/migrations/visitor-migration.service.js.map +1 -0
  70. package/dist/server/routes/assets.routes.js +350 -0
  71. package/dist/server/routes/assets.routes.js.map +1 -0
  72. package/dist/server/routes/cli-tokens.routes.js +73 -0
  73. package/dist/server/routes/cli-tokens.routes.js.map +1 -0
  74. package/dist/server/routes/diagrams.routes.js +122 -0
  75. package/dist/server/routes/diagrams.routes.js.map +1 -0
  76. package/dist/server/routes/documents.routes.js +296 -0
  77. package/dist/server/routes/documents.routes.js.map +1 -0
  78. package/dist/server/routes/domain-member-templates.routes.js +163 -0
  79. package/dist/server/routes/domain-member-templates.routes.js.map +1 -0
  80. package/dist/server/routes/domains.routes.js +317 -0
  81. package/dist/server/routes/domains.routes.js.map +1 -0
  82. package/dist/server/routes/folders.routes.js +210 -0
  83. package/dist/server/routes/folders.routes.js.map +1 -0
  84. package/dist/server/routes/tree.routes.js +25 -0
  85. package/dist/server/routes/tree.routes.js.map +1 -0
  86. package/dist/server/routes/visitors.routes.js +119 -0
  87. package/dist/server/routes/visitors.routes.js.map +1 -0
  88. package/dist/server/search/document-index-manager.js +234 -0
  89. package/dist/server/search/document-index-manager.js.map +1 -0
  90. package/dist/server/search/document-index-manager.test.js +114 -0
  91. package/dist/server/search/document-index-manager.test.js.map +1 -0
  92. package/dist/server/search/search.service.js +138 -0
  93. package/dist/server/search/search.service.js.map +1 -0
  94. package/dist/server/storage/file-store.js +61 -0
  95. package/dist/server/storage/file-store.js.map +1 -0
  96. package/dist/server/storage/paths.js +39 -0
  97. package/dist/server/storage/paths.js.map +1 -0
  98. package/dist/server/test-utils/lexical-structure-compare.js +89 -0
  99. package/dist/server/test-utils/lexical-structure-compare.js.map +1 -0
  100. package/dist/server/test-utils/lexical-structure-compare.test.js +93 -0
  101. package/dist/server/test-utils/lexical-structure-compare.test.js.map +1 -0
  102. package/dist/server/test-utils/markdown-vs-lobe-golden.test.js +35 -0
  103. package/dist/server/test-utils/markdown-vs-lobe-golden.test.js.map +1 -0
  104. package/dist/shared/docPath.js +45 -0
  105. package/dist/shared/docPath.js.map +1 -0
  106. package/dist/shared/domainUi.js +13 -0
  107. package/dist/shared/domainUi.js.map +1 -0
  108. package/dist/shared/folderDesc.js +7 -0
  109. package/dist/shared/folderDesc.js.map +1 -0
  110. package/dist/shared/personalDomain.js +20 -0
  111. package/dist/shared/personalDomain.js.map +1 -0
  112. package/dist/shared/storagePath.js +88 -0
  113. package/dist/shared/storagePath.js.map +1 -0
  114. package/dist/shared/types/api.js +2 -0
  115. package/dist/shared/types/api.js.map +1 -0
  116. package/dist/shared/types/diagram.js +2 -0
  117. package/dist/shared/types/diagram.js.map +1 -0
  118. package/dist/shared/types/document.js +2 -0
  119. package/dist/shared/types/document.js.map +1 -0
  120. package/dist/shared/types/domain.js +3 -0
  121. package/dist/shared/types/domain.js.map +1 -0
  122. package/dist/shared/types/domainMemberTemplate.js +2 -0
  123. package/dist/shared/types/domainMemberTemplate.js.map +1 -0
  124. package/dist/shared/types/tree.js +2 -0
  125. package/dist/shared/types/tree.js.map +1 -0
  126. package/dist/shared/types/visitor.js +2 -0
  127. package/dist/shared/types/visitor.js.map +1 -0
  128. package/dist/web/assets/_baseUniq-Cup7Zdgn.js +1 -0
  129. package/dist/web/assets/abap-BXYWi5l2.js +1 -0
  130. package/dist/web/assets/abap-BdImnpbu.js +1 -0
  131. package/dist/web/assets/actionscript-3-CRLSHa9e.js +1 -0
  132. package/dist/web/assets/actionscript-3-CoDkCxhg.js +1 -0
  133. package/dist/web/assets/ada-DeReRNhg.js +1 -0
  134. package/dist/web/assets/ada-bCR0ucgS.js +1 -0
  135. package/dist/web/assets/andromeeda-C4gqWexZ.js +1 -0
  136. package/dist/web/assets/andromeeda-CF6_y_Qj.js +1 -0
  137. package/dist/web/assets/angular-html-CU67Zn6k.js +1 -0
  138. package/dist/web/assets/angular-html-DA-rfuFy.js +1 -0
  139. package/dist/web/assets/angular-ts-BrjP3tb8.js +1 -0
  140. package/dist/web/assets/angular-ts-BwZT4LLn.js +1 -0
  141. package/dist/web/assets/apache-CCUDgqAf.js +1 -0
  142. package/dist/web/assets/apache-Pmp26Uib.js +1 -0
  143. package/dist/web/assets/apex-Bh6oOW3o.js +1 -0
  144. package/dist/web/assets/apex-D8_7TLub.js +1 -0
  145. package/dist/web/assets/apl-CORt7UWP.js +1 -0
  146. package/dist/web/assets/apl-dKokRX4l.js +1 -0
  147. package/dist/web/assets/applescript-Co6uUVPk.js +1 -0
  148. package/dist/web/assets/applescript-Dd26Nb5t.js +1 -0
  149. package/dist/web/assets/ara-BRHolxvo.js +1 -0
  150. package/dist/web/assets/ara-D6vCOKVX.js +1 -0
  151. package/dist/web/assets/arc-D-XPSXGQ.js +1 -0
  152. package/dist/web/assets/architectureDiagram-Q4EWVU46-A7yghGXe.js +36 -0
  153. package/dist/web/assets/asciidoc-DSG2rbEP.js +1 -0
  154. package/dist/web/assets/asciidoc-Ve4PFQV2.js +1 -0
  155. package/dist/web/assets/asm-CbVMAfFB.js +1 -0
  156. package/dist/web/assets/asm-D_Q5rh1f.js +1 -0
  157. package/dist/web/assets/astro-CbQHKStN.js +1 -0
  158. package/dist/web/assets/astro-HNnZUWAn.js +1 -0
  159. package/dist/web/assets/aurora-x-D-2ljcwZ.js +1 -0
  160. package/dist/web/assets/aurora-x-DOuLBLNn.js +1 -0
  161. package/dist/web/assets/awk-DMzUqQB5.js +1 -0
  162. package/dist/web/assets/awk-UmR4Ublb.js +1 -0
  163. package/dist/web/assets/ayu-dark-BXQCOcka.js +1 -0
  164. package/dist/web/assets/ayu-dark-DYE7WIF3.js +1 -0
  165. package/dist/web/assets/ayu-light-BA47KaF1.js +1 -0
  166. package/dist/web/assets/ayu-light-McBaoK3Y.js +1 -0
  167. package/dist/web/assets/ayu-mirage-32ctXXKs.js +1 -0
  168. package/dist/web/assets/ayu-mirage-urwrJgdN.js +1 -0
  169. package/dist/web/assets/ballerina-BFfxhgS-.js +1 -0
  170. package/dist/web/assets/ballerina-BMbY-1wP.js +1 -0
  171. package/dist/web/assets/bat-BkioyH1T.js +1 -0
  172. package/dist/web/assets/bat-Dcnh2ot_.js +1 -0
  173. package/dist/web/assets/beancount-B92nBv9q.js +1 -0
  174. package/dist/web/assets/beancount-k_qm7-4y.js +1 -0
  175. package/dist/web/assets/berry-C9fz7p0n.js +1 -0
  176. package/dist/web/assets/berry-uYugtg8r.js +1 -0
  177. package/dist/web/assets/bibtex-CHM0blh-.js +1 -0
  178. package/dist/web/assets/bibtex-DELXwv0g.js +1 -0
  179. package/dist/web/assets/bicep-Bmn6On1c.js +1 -0
  180. package/dist/web/assets/bicep-D2njIRU5.js +1 -0
  181. package/dist/web/assets/bird2-BIv1doCn.js +1 -0
  182. package/dist/web/assets/bird2-DPOp833l.js +1 -0
  183. package/dist/web/assets/blade-BjGOyj-B.js +1 -0
  184. package/dist/web/assets/blade-D4QpJJKB.js +1 -0
  185. package/dist/web/assets/blockDiagram-DXYQGD6D-BK9NuGKk.js +132 -0
  186. package/dist/web/assets/bsl-BO_Y6i37.js +1 -0
  187. package/dist/web/assets/bsl-C4qeDxuX.js +1 -0
  188. package/dist/web/assets/c-BIGW1oBm.js +1 -0
  189. package/dist/web/assets/c-CyUOlKFr.js +1 -0
  190. package/dist/web/assets/c3-B1fh2zee.js +1 -0
  191. package/dist/web/assets/c3-eo99z4R2.js +1 -0
  192. package/dist/web/assets/c4Diagram-AHTNJAMY-D1g8FUcA.js +10 -0
  193. package/dist/web/assets/cadence-Bv_4Rxtq.js +1 -0
  194. package/dist/web/assets/cadence-bIHbUj02.js +1 -0
  195. package/dist/web/assets/cairo-C_mOTUpN.js +1 -0
  196. package/dist/web/assets/cairo-KRGpt6FW.js +1 -0
  197. package/dist/web/assets/catppuccin-frappe-BCqV45_h.js +1 -0
  198. package/dist/web/assets/catppuccin-frappe-DFWUc33u.js +1 -0
  199. package/dist/web/assets/catppuccin-latte-BWlfbWlw.js +1 -0
  200. package/dist/web/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
  201. package/dist/web/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
  202. package/dist/web/assets/catppuccin-macchiato-L0ooYkqX.js +1 -0
  203. package/dist/web/assets/catppuccin-mocha-CPxVXonm.js +1 -0
  204. package/dist/web/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
  205. package/dist/web/assets/channel-CYomWw6B.js +1 -0
  206. package/dist/web/assets/chunk-4BX2VUAB-D8437XiS.js +1 -0
  207. package/dist/web/assets/chunk-4TB4RGXK-D8j0X_JF.js +206 -0
  208. package/dist/web/assets/chunk-55IACEB6-EP85l2ZE.js +1 -0
  209. package/dist/web/assets/chunk-EDXVE4YY-D1UabyyO.js +1 -0
  210. package/dist/web/assets/chunk-FMBD7UC4-Cql5pyNC.js +15 -0
  211. package/dist/web/assets/chunk-OYMX7WX6-BzVf0469.js +231 -0
  212. package/dist/web/assets/chunk-QZHKN3VN-Dsod-vG9.js +1 -0
  213. package/dist/web/assets/chunk-YZCP3GAM-DxkFYWqU.js +1 -0
  214. package/dist/web/assets/clarity-A4x-rz24.js +1 -0
  215. package/dist/web/assets/clarity-D53aC0YG.js +1 -0
  216. package/dist/web/assets/classDiagram-6PBFFD2Q-B-F2wCtf.js +1 -0
  217. package/dist/web/assets/classDiagram-v2-HSJHXN6E-B-F2wCtf.js +1 -0
  218. package/dist/web/assets/clojure-Bb2-3A0I.js +1 -0
  219. package/dist/web/assets/clojure-P80f7IUj.js +1 -0
  220. package/dist/web/assets/clone-CUIlTbQ3.js +1 -0
  221. package/dist/web/assets/cmake-Cv5ljclQ.js +1 -0
  222. package/dist/web/assets/cmake-D1j8_8rp.js +1 -0
  223. package/dist/web/assets/cobol-nBiQ_Alo.js +1 -0
  224. package/dist/web/assets/cobol-nwyudZeR.js +1 -0
  225. package/dist/web/assets/codeowners-Bp6g37R7.js +1 -0
  226. package/dist/web/assets/codeowners-CKT8dJip.js +1 -0
  227. package/dist/web/assets/codeql-DXd8ggn3.js +1 -0
  228. package/dist/web/assets/codeql-DsOJ9woJ.js +1 -0
  229. package/dist/web/assets/coffee-CSg58a7P.js +1 -0
  230. package/dist/web/assets/coffee-Ch7k5sss.js +1 -0
  231. package/dist/web/assets/common-lisp-Cg-RD9OK.js +1 -0
  232. package/dist/web/assets/common-lisp-v102bg8X.js +1 -0
  233. package/dist/web/assets/coq-CxCehFeR.js +1 -0
  234. package/dist/web/assets/coq-DkFqJrB1.js +1 -0
  235. package/dist/web/assets/cose-bilkent-S5V4N54A-B3XaX01L.js +1 -0
  236. package/dist/web/assets/cpp-C28rag7_.js +1 -0
  237. package/dist/web/assets/cpp-CofmeUqb.js +1 -0
  238. package/dist/web/assets/crystal-DNxU26gB.js +1 -0
  239. package/dist/web/assets/crystal-tKQVLTB8.js +1 -0
  240. package/dist/web/assets/csharp-COcwbKMJ.js +1 -0
  241. package/dist/web/assets/csharp-DieIJxYJ.js +1 -0
  242. package/dist/web/assets/css-CLj8gQPS.js +1 -0
  243. package/dist/web/assets/css-DPfMkruS.js +1 -0
  244. package/dist/web/assets/csv-AZNL9t8Q.js +1 -0
  245. package/dist/web/assets/csv-fuZLfV_i.js +1 -0
  246. package/dist/web/assets/cue-D82EKSYY.js +1 -0
  247. package/dist/web/assets/cue-nzsbQn5T.js +1 -0
  248. package/dist/web/assets/cypher-BM7Pwunj.js +1 -0
  249. package/dist/web/assets/cypher-COkxafJQ.js +1 -0
  250. package/dist/web/assets/cytoscape.esm-BiciSPf8.js +331 -0
  251. package/dist/web/assets/d-85-TOEBH.js +1 -0
  252. package/dist/web/assets/d-TG9YRPoI.js +1 -0
  253. package/dist/web/assets/dagre-KV5264BT-B18BdYW8.js +4 -0
  254. package/dist/web/assets/dark-plus-C3mMm8J8.js +1 -0
  255. package/dist/web/assets/dark-plus-DNUujdjh.js +1 -0
  256. package/dist/web/assets/dart-CF10PKvl.js +1 -0
  257. package/dist/web/assets/dart-bE4Kk8sk.js +1 -0
  258. package/dist/web/assets/dax-B28Cho4e.js +1 -0
  259. package/dist/web/assets/dax-CEL-wOlO.js +1 -0
  260. package/dist/web/assets/defaultLocale-DX6XiGOO.js +1 -0
  261. package/dist/web/assets/desktop-BmXAJ9_W.js +1 -0
  262. package/dist/web/assets/desktop-Z9LhWKWr.js +1 -0
  263. package/dist/web/assets/diagram-5BDNPKRD-BZCutOe6.js +10 -0
  264. package/dist/web/assets/diagram-G4DWMVQ6-DdMvOZu4.js +24 -0
  265. package/dist/web/assets/diagram-MMDJMWI5-WaS_VBZt.js +43 -0
  266. package/dist/web/assets/diagram-TYMM5635-C7c9TYGF.js +24 -0
  267. package/dist/web/assets/diff-BlzBhZx2.js +1 -0
  268. package/dist/web/assets/diff-D97Zzqfu.js +1 -0
  269. package/dist/web/assets/docker-BcOcwvcX.js +1 -0
  270. package/dist/web/assets/docker-DIG_IqVK.js +1 -0
  271. package/dist/web/assets/dotenv-Bf0GLMGc.js +1 -0
  272. package/dist/web/assets/dotenv-Da5cRb03.js +1 -0
  273. package/dist/web/assets/dracula-BzJJZx-M.js +1 -0
  274. package/dist/web/assets/dracula-Dl-8puSV.js +1 -0
  275. package/dist/web/assets/dracula-soft-BXkSAIEj.js +1 -0
  276. package/dist/web/assets/dracula-soft-CSMZw4vz.js +1 -0
  277. package/dist/web/assets/dream-maker-BtqSS_iP.js +1 -0
  278. package/dist/web/assets/dream-maker-DBhfoDN-.js +1 -0
  279. package/dist/web/assets/edge-BkV0erSs.js +1 -0
  280. package/dist/web/assets/edge-FbVlp4U3.js +1 -0
  281. package/dist/web/assets/elixir-CDX3lj18.js +1 -0
  282. package/dist/web/assets/elixir-CkH2-t6x.js +1 -0
  283. package/dist/web/assets/elm-BX_9EnK8.js +1 -0
  284. package/dist/web/assets/elm-DbKCFpqz.js +1 -0
  285. package/dist/web/assets/emacs-lisp-C9XAeP06.js +1 -0
  286. package/dist/web/assets/emacs-lisp-CXvaQtF9.js +1 -0
  287. package/dist/web/assets/erDiagram-SMLLAGMA-Cp6LqXT_.js +85 -0
  288. package/dist/web/assets/erb-B12qg9BL.js +1 -0
  289. package/dist/web/assets/erb-BYCe7drp.js +1 -0
  290. package/dist/web/assets/erlang-Dh270pQQ.js +1 -0
  291. package/dist/web/assets/erlang-DsQrWhSR.js +1 -0
  292. package/dist/web/assets/everforest-dark-BgDCqdQA.js +1 -0
  293. package/dist/web/assets/everforest-dark-BxQkAq-6.js +1 -0
  294. package/dist/web/assets/everforest-light-C8M2exoo.js +1 -0
  295. package/dist/web/assets/everforest-light-CcLVmqFl.js +1 -0
  296. package/dist/web/assets/fennel-BYunw83y.js +1 -0
  297. package/dist/web/assets/fennel-CKW7gc4E.js +1 -0
  298. package/dist/web/assets/fish-BiaFC76h.js +1 -0
  299. package/dist/web/assets/fish-BvzEVeQv.js +1 -0
  300. package/dist/web/assets/flowDiagram-DWJPFMVM-gjAUKZD3.js +162 -0
  301. package/dist/web/assets/fluent-C1VbA1FI.js +1 -0
  302. package/dist/web/assets/fluent-C4IJs8-o.js +1 -0
  303. package/dist/web/assets/fortran-fixed-form-B5hFr6Yn.js +1 -0
  304. package/dist/web/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  305. package/dist/web/assets/fortran-free-form-BuX3zftO.js +1 -0
  306. package/dist/web/assets/fortran-free-form-BxgE0vQu.js +1 -0
  307. package/dist/web/assets/fsharp-B6CigNpP.js +1 -0
  308. package/dist/web/assets/fsharp-CXgrBDvD.js +1 -0
  309. package/dist/web/assets/ganttDiagram-T4ZO3ILL-CQ1CiRyG.js +292 -0
  310. package/dist/web/assets/gdresource-BOOCDP_w.js +1 -0
  311. package/dist/web/assets/gdresource-ChoLB09i.js +1 -0
  312. package/dist/web/assets/gdscript-BajwJ0jS.js +1 -0
  313. package/dist/web/assets/gdscript-C5YyOfLZ.js +1 -0
  314. package/dist/web/assets/gdshader-DkwncUOv.js +1 -0
  315. package/dist/web/assets/gdshader-MbeiIFWW.js +1 -0
  316. package/dist/web/assets/genie-CTXGoN_z.js +1 -0
  317. package/dist/web/assets/genie-D0YGMca9.js +1 -0
  318. package/dist/web/assets/gherkin-DQeIZrj7.js +1 -0
  319. package/dist/web/assets/gherkin-DyxjwDmM.js +1 -0
  320. package/dist/web/assets/git-commit-BicZTByO.js +1 -0
  321. package/dist/web/assets/git-commit-F4YmCXRG.js +1 -0
  322. package/dist/web/assets/git-rebase-Bzlpfr7M.js +1 -0
  323. package/dist/web/assets/git-rebase-r7XF79zn.js +1 -0
  324. package/dist/web/assets/gitGraphDiagram-UUTBAWPF-C-1i5TVq.js +106 -0
  325. package/dist/web/assets/github-dark-DHJKELXO.js +1 -0
  326. package/dist/web/assets/github-dark-default-BuB7GGZr.js +1 -0
  327. package/dist/web/assets/github-dark-default-Cuk6v7N8.js +1 -0
  328. package/dist/web/assets/github-dark-dimmed-CQQ2kH1a.js +1 -0
  329. package/dist/web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  330. package/dist/web/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  331. package/dist/web/assets/github-dark-high-contrast-fZoHxlg3.js +1 -0
  332. package/dist/web/assets/github-dark-vbPMK5nw.js +1 -0
  333. package/dist/web/assets/github-light-CBO01_j6.js +1 -0
  334. package/dist/web/assets/github-light-DAi9KRSo.js +1 -0
  335. package/dist/web/assets/github-light-default-D7oLnXFd.js +1 -0
  336. package/dist/web/assets/github-light-default-DNniaknl.js +1 -0
  337. package/dist/web/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  338. package/dist/web/assets/github-light-high-contrast-Kh_Z1r_U.js +1 -0
  339. package/dist/web/assets/gleam-B-IqXlZK.js +1 -0
  340. package/dist/web/assets/gleam-BspZqrRM.js +1 -0
  341. package/dist/web/assets/glimmer-js-ByusRIyA.js +1 -0
  342. package/dist/web/assets/glimmer-js-Rg0-pVw9.js +1 -0
  343. package/dist/web/assets/glimmer-ts-BfAWNZQY.js +1 -0
  344. package/dist/web/assets/glimmer-ts-U6CK756n.js +1 -0
  345. package/dist/web/assets/glsl-Bk7TyU8J.js +1 -0
  346. package/dist/web/assets/glsl-DplSGwfg.js +1 -0
  347. package/dist/web/assets/gn-deNdZ1en.js +1 -0
  348. package/dist/web/assets/gn-n2N0HUVH.js +1 -0
  349. package/dist/web/assets/gnuplot-BBjkHhdK.js +1 -0
  350. package/dist/web/assets/gnuplot-DdkO51Og.js +1 -0
  351. package/dist/web/assets/go-C27-OAKa.js +1 -0
  352. package/dist/web/assets/go-CxLEBnE3.js +1 -0
  353. package/dist/web/assets/graph-CzlQk_vM.js +1 -0
  354. package/dist/web/assets/graphql-By4-2MiP.js +1 -0
  355. package/dist/web/assets/graphql-ChdNCCLP.js +1 -0
  356. package/dist/web/assets/groovy-DjMbfbx0.js +1 -0
  357. package/dist/web/assets/groovy-gcz8RCvz.js +1 -0
  358. package/dist/web/assets/gruvbox-dark-hard-B-lrt2RD.js +1 -0
  359. package/dist/web/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  360. package/dist/web/assets/gruvbox-dark-medium-DqRMfHwY.js +1 -0
  361. package/dist/web/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  362. package/dist/web/assets/gruvbox-dark-soft-0cd3aJ5k.js +1 -0
  363. package/dist/web/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  364. package/dist/web/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  365. package/dist/web/assets/gruvbox-light-hard-CdMyBl7-.js +1 -0
  366. package/dist/web/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  367. package/dist/web/assets/gruvbox-light-medium-k_NbMmjL.js +1 -0
  368. package/dist/web/assets/gruvbox-light-soft-B_wmbOPu.js +1 -0
  369. package/dist/web/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  370. package/dist/web/assets/hack-CaT9iCJl.js +1 -0
  371. package/dist/web/assets/hack-i7_Ulhet.js +1 -0
  372. package/dist/web/assets/haml-B8DHNrY2.js +1 -0
  373. package/dist/web/assets/haml-D5jkg6IW.js +1 -0
  374. package/dist/web/assets/handlebars-BL8al0AC.js +1 -0
  375. package/dist/web/assets/handlebars-BpdQsYii.js +1 -0
  376. package/dist/web/assets/haskell-Df6bDoY_.js +1 -0
  377. package/dist/web/assets/haskell-DtebQ3Kv.js +1 -0
  378. package/dist/web/assets/haxe-CzTSHFRz.js +1 -0
  379. package/dist/web/assets/haxe-n0Q_eay_.js +1 -0
  380. package/dist/web/assets/hcl-BWvSN4gD.js +1 -0
  381. package/dist/web/assets/hcl-shhv74hy.js +1 -0
  382. package/dist/web/assets/hjson-BEMFYqr7.js +1 -0
  383. package/dist/web/assets/hjson-D5-asLiD.js +1 -0
  384. package/dist/web/assets/hlsl-D3lLCCz7.js +1 -0
  385. package/dist/web/assets/hlsl-Pefxhtaj.js +1 -0
  386. package/dist/web/assets/horizon-BUw7H-hv.js +1 -0
  387. package/dist/web/assets/horizon-Dr-pOaOB.js +1 -0
  388. package/dist/web/assets/horizon-bright-CUuTKBJd.js +1 -0
  389. package/dist/web/assets/horizon-bright-Cn-bp-IR.js +1 -0
  390. package/dist/web/assets/houston-D7pTNItX.js +1 -0
  391. package/dist/web/assets/houston-DnULxvSX.js +1 -0
  392. package/dist/web/assets/html-GMplVEZG.js +1 -0
  393. package/dist/web/assets/html-derivative-BFtXZ54Q.js +1 -0
  394. package/dist/web/assets/html-derivative-DlHx6ybY.js +1 -0
  395. package/dist/web/assets/html-pp8916En.js +1 -0
  396. package/dist/web/assets/http-D0p2QOuJ.js +1 -0
  397. package/dist/web/assets/http-jrhK8wxY.js +1 -0
  398. package/dist/web/assets/hurl-CeF7EoTQ.js +1 -0
  399. package/dist/web/assets/hurl-irOxFIW8.js +1 -0
  400. package/dist/web/assets/hxml-B_SuSTPP.js +1 -0
  401. package/dist/web/assets/hxml-Bvhsp5Yf.js +1 -0
  402. package/dist/web/assets/hy-CTpXmg0M.js +1 -0
  403. package/dist/web/assets/hy-DFXneXwc.js +1 -0
  404. package/dist/web/assets/imba-DGztddWO.js +1 -0
  405. package/dist/web/assets/imba-z_cUhu9e.js +1 -0
  406. package/dist/web/assets/index-3pjczwzd.js +5315 -0
  407. package/dist/web/assets/index-DYHwr9jx.css +1 -0
  408. package/dist/web/assets/infoDiagram-42DDH7IO-BL2YBINm.js +2 -0
  409. package/dist/web/assets/ini-BEwlwnbL.js +1 -0
  410. package/dist/web/assets/ini-DOGW4-0C.js +1 -0
  411. package/dist/web/assets/init-Gi6I4Gst.js +1 -0
  412. package/dist/web/assets/ishikawaDiagram-UXIWVN3A-C9RSRKUE.js +70 -0
  413. package/dist/web/assets/java-B2AjWfgk.js +1 -0
  414. package/dist/web/assets/java-CylS5w8V.js +1 -0
  415. package/dist/web/assets/javascript-XPxc2APE.js +1 -0
  416. package/dist/web/assets/javascript-wDzz0qaB.js +1 -0
  417. package/dist/web/assets/jinja-4LBKfQ-Z.js +1 -0
  418. package/dist/web/assets/jinja-f2NsQr07.js +1 -0
  419. package/dist/web/assets/jison-DRGa8fbr.js +1 -0
  420. package/dist/web/assets/jison-wvAkD_A8.js +1 -0
  421. package/dist/web/assets/journeyDiagram-VCZTEJTY-Chqoy2ch.js +139 -0
  422. package/dist/web/assets/json-CjLXzM_z.js +1 -0
  423. package/dist/web/assets/json-Cp-IABpG.js +1 -0
  424. package/dist/web/assets/json5-C9tS-k6U.js +1 -0
  425. package/dist/web/assets/json5-DE06a0U2.js +1 -0
  426. package/dist/web/assets/jsonc-BYi4HS05.js +1 -0
  427. package/dist/web/assets/jsonc-Des-eS-w.js +1 -0
  428. package/dist/web/assets/jsonl-CuhIcKDk.js +1 -0
  429. package/dist/web/assets/jsonl-DcaNXYhu.js +1 -0
  430. package/dist/web/assets/jsonnet-DFQXde-d.js +1 -0
  431. package/dist/web/assets/jsonnet-DtQdHwK-.js +1 -0
  432. package/dist/web/assets/jssm-BlhucWo7.js +1 -0
  433. package/dist/web/assets/jssm-C2t-YnRu.js +1 -0
  434. package/dist/web/assets/jsx-BGEKFWBk.js +1 -0
  435. package/dist/web/assets/jsx-g9-lgVsj.js +1 -0
  436. package/dist/web/assets/julia-BxjEHQ54.js +1 -0
  437. package/dist/web/assets/julia-CxzCAyBv.js +1 -0
  438. package/dist/web/assets/just-Cw27pwNe.js +1 -0
  439. package/dist/web/assets/just-VxiPbLrw.js +1 -0
  440. package/dist/web/assets/kanagawa-dragon-9xlKYyML.js +1 -0
  441. package/dist/web/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  442. package/dist/web/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  443. package/dist/web/assets/kanagawa-lotus-D7R2-rgR.js +1 -0
  444. package/dist/web/assets/kanagawa-wave-DWedfzmr.js +1 -0
  445. package/dist/web/assets/kanagawa-wave-DXzwPY55.js +1 -0
  446. package/dist/web/assets/kanban-definition-6JOO6SKY-DnNwcyI8.js +89 -0
  447. package/dist/web/assets/kdl-DJsF4U57.js +1 -0
  448. package/dist/web/assets/kdl-DV7GczEv.js +1 -0
  449. package/dist/web/assets/kotlin-BdnUsdx6.js +1 -0
  450. package/dist/web/assets/kotlin-DwKqsDKK.js +1 -0
  451. package/dist/web/assets/kusto-DZf3V79B.js +1 -0
  452. package/dist/web/assets/kusto-wEQ09or8.js +1 -0
  453. package/dist/web/assets/laserwave-Crdg5MSq.js +1 -0
  454. package/dist/web/assets/laserwave-DUszq2jm.js +1 -0
  455. package/dist/web/assets/latex-C-qBiGC3.js +1 -0
  456. package/dist/web/assets/latex-CWtU0Tv5.js +1 -0
  457. package/dist/web/assets/layout-CMzAqncB.js +1 -0
  458. package/dist/web/assets/lean-BZvkOJ9d.js +1 -0
  459. package/dist/web/assets/lean-QIsVZaRF.js +1 -0
  460. package/dist/web/assets/less-B1dDrJ26.js +1 -0
  461. package/dist/web/assets/less-C76OjOdF.js +1 -0
  462. package/dist/web/assets/light-plus-B7mTdjB0.js +1 -0
  463. package/dist/web/assets/light-plus-Keeg-hmX.js +1 -0
  464. package/dist/web/assets/linear-BhcH38MK.js +1 -0
  465. package/dist/web/assets/liquid-C0sCDyMI.js +1 -0
  466. package/dist/web/assets/liquid-DYVedYrR.js +1 -0
  467. package/dist/web/assets/llvm-ByOMZdUC.js +1 -0
  468. package/dist/web/assets/llvm-DjAJT7YJ.js +1 -0
  469. package/dist/web/assets/log-2UxHyX5q.js +1 -0
  470. package/dist/web/assets/log-CbW7hOWU.js +1 -0
  471. package/dist/web/assets/logo-BbooMuDm.js +1 -0
  472. package/dist/web/assets/logo-BtOb2qkB.js +1 -0
  473. package/dist/web/assets/lua-BaeVxFsk.js +1 -0
  474. package/dist/web/assets/lua-JmSlR1pZ.js +1 -0
  475. package/dist/web/assets/luau-C-HG3fhB.js +1 -0
  476. package/dist/web/assets/luau-lY4yXJyn.js +1 -0
  477. package/dist/web/assets/make-CHLpvVh8.js +1 -0
  478. package/dist/web/assets/make-s9FKP0VE.js +1 -0
  479. package/dist/web/assets/markdown-CKXSK5AY.js +1 -0
  480. package/dist/web/assets/markdown-Cvjx9yec.js +1 -0
  481. package/dist/web/assets/marko-CnJfTvn9.js +1 -0
  482. package/dist/web/assets/marko-DjSrsDqO.js +1 -0
  483. package/dist/web/assets/material-theme-BjSij5jK.js +1 -0
  484. package/dist/web/assets/material-theme-D5KoaKCx.js +1 -0
  485. package/dist/web/assets/material-theme-darker-BfHTSMKl.js +1 -0
  486. package/dist/web/assets/material-theme-darker-Ci314V8G.js +1 -0
  487. package/dist/web/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  488. package/dist/web/assets/material-theme-lighter-BsHhGFQr.js +1 -0
  489. package/dist/web/assets/material-theme-ocean-CyktbL80.js +1 -0
  490. package/dist/web/assets/material-theme-ocean-DcalBkIS.js +1 -0
  491. package/dist/web/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  492. package/dist/web/assets/material-theme-palenight-GGCMgrXw.js +1 -0
  493. package/dist/web/assets/matlab-BQKM-LA_.js +1 -0
  494. package/dist/web/assets/matlab-D7o27uSR.js +1 -0
  495. package/dist/web/assets/mdc-BMNejdWA.js +1 -0
  496. package/dist/web/assets/mdc-DTYItulj.js +1 -0
  497. package/dist/web/assets/mdocs-logo-Dsv_2t6v.svg +5 -0
  498. package/dist/web/assets/mdx-BWRhHdFl.js +1 -0
  499. package/dist/web/assets/mdx-Cmh6b_Ma.js +1 -0
  500. package/dist/web/assets/mermaid-COhksqSL.js +1 -0
  501. package/dist/web/assets/mermaid-mWjccvbQ.js +1 -0
  502. package/dist/web/assets/mermaid.core-CIIU8fIt.js +309 -0
  503. package/dist/web/assets/min-Bp3CTrBA.js +1 -0
  504. package/dist/web/assets/min-dark-CDSXMz5a.js +1 -0
  505. package/dist/web/assets/min-dark-CafNBF8u.js +1 -0
  506. package/dist/web/assets/min-light-CM5JNFAA.js +1 -0
  507. package/dist/web/assets/min-light-CTRr51gU.js +1 -0
  508. package/dist/web/assets/mindmap-definition-QFDTVHPH-CYn2ly-v.js +96 -0
  509. package/dist/web/assets/mipsasm-BElnB_7Q.js +1 -0
  510. package/dist/web/assets/mipsasm-CKIfxQSi.js +1 -0
  511. package/dist/web/assets/mojo-CsmCHy7A.js +1 -0
  512. package/dist/web/assets/mojo-rZm6bMo-.js +1 -0
  513. package/dist/web/assets/monokai-D4h5O-jR.js +1 -0
  514. package/dist/web/assets/monokai-O2TR9gDo.js +1 -0
  515. package/dist/web/assets/moonbit-B8hphrHK.js +1 -0
  516. package/dist/web/assets/moonbit-_H4v1dQx.js +1 -0
  517. package/dist/web/assets/move-Ccg_HAOv.js +1 -0
  518. package/dist/web/assets/move-IF9eRakj.js +1 -0
  519. package/dist/web/assets/narrat-Cy2k80UN.js +1 -0
  520. package/dist/web/assets/narrat-DRg8JJMk.js +1 -0
  521. package/dist/web/assets/nextflow-C-mBbutL.js +1 -0
  522. package/dist/web/assets/nextflow-Zz6hmt5N.js +1 -0
  523. package/dist/web/assets/nextflow-groovy-BeH2EWoN.js +1 -0
  524. package/dist/web/assets/nextflow-groovy-vE_lwT2v.js +1 -0
  525. package/dist/web/assets/nginx-BpAMiNFr.js +1 -0
  526. package/dist/web/assets/nginx-bBKbG2uI.js +1 -0
  527. package/dist/web/assets/night-owl-C39BiMTA.js +1 -0
  528. package/dist/web/assets/night-owl-NZdGqbHT.js +1 -0
  529. package/dist/web/assets/night-owl-light-CMTm3GFP.js +1 -0
  530. package/dist/web/assets/night-owl-light-Dx-BWqtN.js +1 -0
  531. package/dist/web/assets/nim-BIad80T-.js +1 -0
  532. package/dist/web/assets/nim-CVrawwO9.js +1 -0
  533. package/dist/web/assets/nix-CwoSXNpI.js +1 -0
  534. package/dist/web/assets/nix-DFZZLjuC.js +1 -0
  535. package/dist/web/assets/nord-BNMOv-tL.js +1 -0
  536. package/dist/web/assets/nord-Ddv68eIx.js +1 -0
  537. package/dist/web/assets/nushell-BaAZo4zx.js +1 -0
  538. package/dist/web/assets/nushell-Cz2AlsmD.js +1 -0
  539. package/dist/web/assets/objective-c-DXmwc3jG.js +1 -0
  540. package/dist/web/assets/objective-c-sgtl-PdD.js +1 -0
  541. package/dist/web/assets/objective-cpp-BTQ37cYs.js +1 -0
  542. package/dist/web/assets/objective-cpp-CLxacb5B.js +1 -0
  543. package/dist/web/assets/ocaml-BvBP9Lm0.js +1 -0
  544. package/dist/web/assets/ocaml-C0hk2d4L.js +1 -0
  545. package/dist/web/assets/odin-BBf5iR-q.js +1 -0
  546. package/dist/web/assets/odin-BTnrxC4P.js +1 -0
  547. package/dist/web/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  548. package/dist/web/assets/one-dark-pro-DnMjqbdW.js +1 -0
  549. package/dist/web/assets/one-light-C3Wv6jpd.js +1 -0
  550. package/dist/web/assets/one-light-dsKzgxTn.js +1 -0
  551. package/dist/web/assets/openscad-C4EeE6gA.js +1 -0
  552. package/dist/web/assets/openscad-Dmi2c_42.js +1 -0
  553. package/dist/web/assets/ordinal-Cboi1Yqb.js +1 -0
  554. package/dist/web/assets/pascal-D93ZcfNL.js +1 -0
  555. package/dist/web/assets/pascal-DYjw0AuS.js +1 -0
  556. package/dist/web/assets/perl-C0TMdlhV.js +1 -0
  557. package/dist/web/assets/perl-NvoQZIq0.js +1 -0
  558. package/dist/web/assets/php-Dhbhpdrm.js +1 -0
  559. package/dist/web/assets/php-R6g_5hLQ.js +1 -0
  560. package/dist/web/assets/pieDiagram-DEJITSTG-mW0VmSmA.js +30 -0
  561. package/dist/web/assets/pkl-Cij4Vm9z.js +1 -0
  562. package/dist/web/assets/pkl-u5AG7uiY.js +1 -0
  563. package/dist/web/assets/plastic-3e1v2bzS.js +1 -0
  564. package/dist/web/assets/plastic-Ckcm5hoS.js +1 -0
  565. package/dist/web/assets/plsql-Bd6NdBJI.js +1 -0
  566. package/dist/web/assets/plsql-ChMvpjG-.js +1 -0
  567. package/dist/web/assets/po-BTJTHyun.js +1 -0
  568. package/dist/web/assets/po-CUhVi7la.js +1 -0
  569. package/dist/web/assets/poimandres-BbcZclLp.js +1 -0
  570. package/dist/web/assets/poimandres-CS3Unz2-.js +1 -0
  571. package/dist/web/assets/polar-B-qJ3AIy.js +1 -0
  572. package/dist/web/assets/polar-C0HS_06l.js +1 -0
  573. package/dist/web/assets/postcss-BSGhOJ4k.js +1 -0
  574. package/dist/web/assets/postcss-CXtECtnM.js +1 -0
  575. package/dist/web/assets/powerquery-CC1XieQO.js +1 -0
  576. package/dist/web/assets/powerquery-CEu0bR-o.js +1 -0
  577. package/dist/web/assets/powershell-DdRAnR4Z.js +1 -0
  578. package/dist/web/assets/powershell-Dpen1YoG.js +1 -0
  579. package/dist/web/assets/prisma-C0hJlfqX.js +1 -0
  580. package/dist/web/assets/prisma-Dd19v3D-.js +1 -0
  581. package/dist/web/assets/prolog-CbFg5uaA.js +1 -0
  582. package/dist/web/assets/prolog-bSi0SE3D.js +1 -0
  583. package/dist/web/assets/proto-BZ_yZy5q.js +1 -0
  584. package/dist/web/assets/proto-C7zT0LnQ.js +1 -0
  585. package/dist/web/assets/pug-CGlum2m_.js +1 -0
  586. package/dist/web/assets/pug-DKIMFp6K.js +1 -0
  587. package/dist/web/assets/puppet-BMWR74SV.js +1 -0
  588. package/dist/web/assets/puppet-ja2MI9-b.js +1 -0
  589. package/dist/web/assets/purescript-CklMAg4u.js +1 -0
  590. package/dist/web/assets/purescript-CxgsQa43.js +1 -0
  591. package/dist/web/assets/python-B6aJPvgy.js +1 -0
  592. package/dist/web/assets/python-DgE28U1V.js +1 -0
  593. package/dist/web/assets/qml-3beO22l8.js +1 -0
  594. package/dist/web/assets/qml-BEkX6VoX.js +1 -0
  595. package/dist/web/assets/qmldir-C8lEn-DE.js +1 -0
  596. package/dist/web/assets/qmldir-DNYHzgow.js +1 -0
  597. package/dist/web/assets/qss-BZsEMKxJ.js +1 -0
  598. package/dist/web/assets/qss-IeuSbFQv.js +1 -0
  599. package/dist/web/assets/quadrantDiagram-34T5L4WZ-J6EcFPSp.js +7 -0
  600. package/dist/web/assets/r-BcofxrH1.js +1 -0
  601. package/dist/web/assets/r-Dspwwk_N.js +1 -0
  602. package/dist/web/assets/racket-BqYA7rlc.js +1 -0
  603. package/dist/web/assets/racket-CzHBKLyy.js +1 -0
  604. package/dist/web/assets/raku-CPccoUN1.js +1 -0
  605. package/dist/web/assets/raku-DXvB9xmW.js +1 -0
  606. package/dist/web/assets/razor-BDqjjVU7.js +1 -0
  607. package/dist/web/assets/razor-Uh8Bk_45.js +1 -0
  608. package/dist/web/assets/red-BQzOET_I.js +1 -0
  609. package/dist/web/assets/red-bN70gL4F.js +1 -0
  610. package/dist/web/assets/reg-C-SQnVFl.js +1 -0
  611. package/dist/web/assets/reg-DkqHJyC0.js +1 -0
  612. package/dist/web/assets/regexp-BW_zLBm-.js +1 -0
  613. package/dist/web/assets/regexp-CDVJQ6XC.js +1 -0
  614. package/dist/web/assets/rel-BIqKdwke.js +1 -0
  615. package/dist/web/assets/rel-C3B-1QV4.js +1 -0
  616. package/dist/web/assets/requirementDiagram-MS252O5E-Dk2r6EEY.js +84 -0
  617. package/dist/web/assets/riscv-BM1_JUlF.js +1 -0
  618. package/dist/web/assets/riscv-s6spwTFp.js +1 -0
  619. package/dist/web/assets/ron-CloI94uS.js +1 -0
  620. package/dist/web/assets/ron-D8l8udqQ.js +1 -0
  621. package/dist/web/assets/rose-pine-B3EY3h2-.js +1 -0
  622. package/dist/web/assets/rose-pine-dawn-6WQi5eS6.js +1 -0
  623. package/dist/web/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
  624. package/dist/web/assets/rose-pine-moon-BTPbmVvF.js +1 -0
  625. package/dist/web/assets/rose-pine-moon-D4_iv3hh.js +1 -0
  626. package/dist/web/assets/rose-pine-qdsjHGoJ.js +1 -0
  627. package/dist/web/assets/rosmsg-BJDFO7_C.js +1 -0
  628. package/dist/web/assets/rosmsg-TcL_zzr8.js +1 -0
  629. package/dist/web/assets/rst-BrH8l1NY.js +1 -0
  630. package/dist/web/assets/rst-CRjBmOyv.js +1 -0
  631. package/dist/web/assets/ruby-Dw2BHqvy.js +1 -0
  632. package/dist/web/assets/ruby-Wjq7vjNf.js +1 -0
  633. package/dist/web/assets/rust-B1yitclQ.js +1 -0
  634. package/dist/web/assets/rust-DJErdhjk.js +1 -0
  635. package/dist/web/assets/sankeyDiagram-XADWPNL6-Cf4u1Br3.js +10 -0
  636. package/dist/web/assets/sas-BZeeyq_z.js +1 -0
  637. package/dist/web/assets/sas-cz2c8ADy.js +1 -0
  638. package/dist/web/assets/sass-CIfQ9yqV.js +1 -0
  639. package/dist/web/assets/sass-Cj5Yp3dK.js +1 -0
  640. package/dist/web/assets/scala-C151Ov-r.js +1 -0
  641. package/dist/web/assets/scala-CWwlNtab.js +1 -0
  642. package/dist/web/assets/scheme-ByM66cy_.js +1 -0
  643. package/dist/web/assets/scheme-C98Dy4si.js +1 -0
  644. package/dist/web/assets/scss-D5BDwBP9.js +1 -0
  645. package/dist/web/assets/scss-OYdSNvt2.js +1 -0
  646. package/dist/web/assets/sdbl-C5Q1usnU.js +1 -0
  647. package/dist/web/assets/sdbl-DVxCFoDh.js +1 -0
  648. package/dist/web/assets/sequenceDiagram-FGHM5R23-BhdLyWyv.js +157 -0
  649. package/dist/web/assets/shaderlab-DNkMdb2B.js +1 -0
  650. package/dist/web/assets/shaderlab-Dg9Lc6iA.js +1 -0
  651. package/dist/web/assets/shellscript-CE-5zpiL.js +1 -0
  652. package/dist/web/assets/shellscript-Yzrsuije.js +1 -0
  653. package/dist/web/assets/shellsession-BADoaaVG.js +1 -0
  654. package/dist/web/assets/shellsession-BhddCRKA.js +1 -0
  655. package/dist/web/assets/slack-dark-BthQWCQV.js +1 -0
  656. package/dist/web/assets/slack-dark-DBfAPHjY.js +1 -0
  657. package/dist/web/assets/slack-ochin-DqwNpetd.js +1 -0
  658. package/dist/web/assets/slack-ochin-szRk-9hG.js +1 -0
  659. package/dist/web/assets/smalltalk-BERRCDM3.js +1 -0
  660. package/dist/web/assets/smalltalk-GKfhTxrk.js +1 -0
  661. package/dist/web/assets/snazzy-light-Bw305WKR.js +1 -0
  662. package/dist/web/assets/snazzy-light-CBYPMa6b.js +1 -0
  663. package/dist/web/assets/solarized-dark-DXbdFlpD.js +1 -0
  664. package/dist/web/assets/solarized-dark-Tf4Pofl7.js +1 -0
  665. package/dist/web/assets/solarized-light-L9t79GZl.js +1 -0
  666. package/dist/web/assets/solarized-light-n46tpZ2s.js +1 -0
  667. package/dist/web/assets/solidity-DanOLEvk.js +1 -0
  668. package/dist/web/assets/solidity-rGO070M0.js +1 -0
  669. package/dist/web/assets/soy-8wufbnw4.js +1 -0
  670. package/dist/web/assets/soy-Brmx7dQM.js +1 -0
  671. package/dist/web/assets/sparql-CHK3vDkL.js +1 -0
  672. package/dist/web/assets/sparql-rVzFXLq3.js +1 -0
  673. package/dist/web/assets/splunk-BtCnVYZw.js +1 -0
  674. package/dist/web/assets/splunk-YU1HCmJX.js +1 -0
  675. package/dist/web/assets/sql-BLtJtn59.js +1 -0
  676. package/dist/web/assets/sql-CKXjX23X.js +1 -0
  677. package/dist/web/assets/ssh-config-Cpnw3KEt.js +1 -0
  678. package/dist/web/assets/ssh-config-_ykCGR6B.js +1 -0
  679. package/dist/web/assets/stata-BH5u7GGu.js +1 -0
  680. package/dist/web/assets/stata-BJqnY-gO.js +1 -0
  681. package/dist/web/assets/stateDiagram-FHFEXIEX-DEH3Rddn.js +1 -0
  682. package/dist/web/assets/stateDiagram-v2-QKLJ7IA2-CV45WUCv.js +1 -0
  683. package/dist/web/assets/stylus-BEDo0Tqx.js +1 -0
  684. package/dist/web/assets/stylus-CHekGIgu.js +1 -0
  685. package/dist/web/assets/surrealql-Bq5Q-fJD.js +1 -0
  686. package/dist/web/assets/surrealql-CYeReaNr.js +1 -0
  687. package/dist/web/assets/svelte-C_ipcX3V.js +1 -0
  688. package/dist/web/assets/svelte-Cy7k_4gC.js +1 -0
  689. package/dist/web/assets/swift-D82vCrfD.js +1 -0
  690. package/dist/web/assets/swift-DjrYMa62.js +1 -0
  691. package/dist/web/assets/synthwave-84-CNQ9Fj-_.js +1 -0
  692. package/dist/web/assets/synthwave-84-CbfX1IO0.js +1 -0
  693. package/dist/web/assets/system-verilog-CnnmHF94.js +1 -0
  694. package/dist/web/assets/system-verilog-rKNYENrf.js +1 -0
  695. package/dist/web/assets/systemd-4A_iFExJ.js +1 -0
  696. package/dist/web/assets/systemd-C1FfcI00.js +1 -0
  697. package/dist/web/assets/talonscript-CkByrt1z.js +1 -0
  698. package/dist/web/assets/talonscript-bksoRmW6.js +1 -0
  699. package/dist/web/assets/tasl-Bl4tsGRM.js +1 -0
  700. package/dist/web/assets/tasl-QIJgUcNo.js +1 -0
  701. package/dist/web/assets/tcl-B2_VAYrd.js +1 -0
  702. package/dist/web/assets/tcl-dwOrl1Do.js +1 -0
  703. package/dist/web/assets/templ-DhtptRzy.js +1 -0
  704. package/dist/web/assets/templ-P3uqSqPl.js +1 -0
  705. package/dist/web/assets/terraform-BETggiCN.js +1 -0
  706. package/dist/web/assets/terraform-Ba94thAr.js +1 -0
  707. package/dist/web/assets/tex-BLPnQt1V.js +1 -0
  708. package/dist/web/assets/tex-idrVyKtj.js +1 -0
  709. package/dist/web/assets/timeline-definition-GMOUNBTQ-K_RG6B1F.js +120 -0
  710. package/dist/web/assets/tokyo-night-J9jDJp4U.js +1 -0
  711. package/dist/web/assets/tokyo-night-hegEt444.js +1 -0
  712. package/dist/web/assets/toml-Btlk-g9G.js +1 -0
  713. package/dist/web/assets/toml-vGWfd6FD.js +1 -0
  714. package/dist/web/assets/ts-tags-DQrlYJgV.js +1 -0
  715. package/dist/web/assets/ts-tags-zn1MmPIZ.js +1 -0
  716. package/dist/web/assets/tsv-B_m7g4N7.js +1 -0
  717. package/dist/web/assets/tsv-DYfmKMIW.js +1 -0
  718. package/dist/web/assets/tsx-COt5Ahok.js +1 -0
  719. package/dist/web/assets/tsx-Dio8iE-N.js +1 -0
  720. package/dist/web/assets/turtle-BsS91CYL.js +1 -0
  721. package/dist/web/assets/turtle-whXsfw69.js +1 -0
  722. package/dist/web/assets/twig-DNn4PbVi.js +1 -0
  723. package/dist/web/assets/twig-xg9kU7Mw.js +1 -0
  724. package/dist/web/assets/typescript-BPQ3VLAy.js +1 -0
  725. package/dist/web/assets/typescript-DttGkNCf.js +1 -0
  726. package/dist/web/assets/typespec-BGHnOYBU.js +1 -0
  727. package/dist/web/assets/typespec-CAFt9gP4.js +1 -0
  728. package/dist/web/assets/typst-D2RORpaG.js +1 -0
  729. package/dist/web/assets/typst-DHCkPAjA.js +1 -0
  730. package/dist/web/assets/v-BcVCzyr7.js +1 -0
  731. package/dist/web/assets/v-CvM42WIw.js +1 -0
  732. package/dist/web/assets/vala-B_5xOBNr.js +1 -0
  733. package/dist/web/assets/vala-CsfeWuGM.js +1 -0
  734. package/dist/web/assets/vb-BVDm3zBt.js +1 -0
  735. package/dist/web/assets/vb-D17OF-Vu.js +1 -0
  736. package/dist/web/assets/vennDiagram-DHZGUBPP-24E0bz5n.js +34 -0
  737. package/dist/web/assets/verilog-BQ8w6xss.js +1 -0
  738. package/dist/web/assets/verilog-D5iownw6.js +1 -0
  739. package/dist/web/assets/vesper-C5GDOJD3.js +1 -0
  740. package/dist/web/assets/vesper-DU1UobuO.js +1 -0
  741. package/dist/web/assets/vhdl-Bmgbkl_-.js +1 -0
  742. package/dist/web/assets/vhdl-CeAyd5Ju.js +1 -0
  743. package/dist/web/assets/viml-3ZODU9FQ.js +1 -0
  744. package/dist/web/assets/viml-CJc9bBzg.js +1 -0
  745. package/dist/web/assets/vitesse-black-BeJXV_f5.js +1 -0
  746. package/dist/web/assets/vitesse-black-Bkuqu6BP.js +1 -0
  747. package/dist/web/assets/vitesse-dark-D0r3Knsf.js +1 -0
  748. package/dist/web/assets/vitesse-dark-mzFqOv-V.js +1 -0
  749. package/dist/web/assets/vitesse-light-BoFwUIac.js +1 -0
  750. package/dist/web/assets/vitesse-light-CVO1_9PV.js +1 -0
  751. package/dist/web/assets/vue-D2xRrEX4.js +1 -0
  752. package/dist/web/assets/vue-DN_0RTcg.js +1 -0
  753. package/dist/web/assets/vue-html-AaS7Mt5G.js +1 -0
  754. package/dist/web/assets/vue-html-BM4TQ0nH.js +1 -0
  755. package/dist/web/assets/vue-vine-BoDAl6tE.js +1 -0
  756. package/dist/web/assets/vue-vine-CQOfvN7w.js +1 -0
  757. package/dist/web/assets/vyper-B6NKdirK.js +1 -0
  758. package/dist/web/assets/vyper-CDx5xZoG.js +1 -0
  759. package/dist/web/assets/wardley-RL74JXVD-B-QXSi53.js +162 -0
  760. package/dist/web/assets/wardleyDiagram-NUSXRM2D-gz02iO7Q.js +20 -0
  761. package/dist/web/assets/wasm-CG6Dc4jp.js +1 -0
  762. package/dist/web/assets/wasm-LUzQYg3H.js +1 -0
  763. package/dist/web/assets/wasm-MzD3tlZU.js +1 -0
  764. package/dist/web/assets/wenyan-8fXatRyt.js +1 -0
  765. package/dist/web/assets/wenyan-BV7otONQ.js +1 -0
  766. package/dist/web/assets/wgsl-CECC3vJ5.js +1 -0
  767. package/dist/web/assets/wgsl-Dx-B1_4e.js +1 -0
  768. package/dist/web/assets/wikitext-BaRWL9sq.js +1 -0
  769. package/dist/web/assets/wikitext-BhOHFoWU.js +1 -0
  770. package/dist/web/assets/wit-5i3qLPDT.js +1 -0
  771. package/dist/web/assets/wit-MEd50GYB.js +1 -0
  772. package/dist/web/assets/wolfram-CmMaIVaG.js +1 -0
  773. package/dist/web/assets/wolfram-lXgVvXCa.js +1 -0
  774. package/dist/web/assets/xml-DtyAt_xK.js +1 -0
  775. package/dist/web/assets/xml-sdJ4AIDG.js +1 -0
  776. package/dist/web/assets/xsl-Btrj9DhN.js +1 -0
  777. package/dist/web/assets/xsl-CtQFsRM5.js +1 -0
  778. package/dist/web/assets/xychartDiagram-5P7HB3ND-Cu0VaxIq.js +7 -0
  779. package/dist/web/assets/yaml-B92AUxDB.js +1 -0
  780. package/dist/web/assets/yaml-Buea-lGh.js +1 -0
  781. package/dist/web/assets/zenscript-DVFEvuxE.js +1 -0
  782. package/dist/web/assets/zenscript-Dja4fBOE.js +1 -0
  783. package/dist/web/assets/zig-LhWa2ADv.js +1 -0
  784. package/dist/web/assets/zig-VOosw3JB.js +1 -0
  785. package/dist/web/index.html +14 -0
  786. package/package.json +75 -0
@@ -0,0 +1,85 @@
1
+ /** 规范化 visitor_id 列表并拼成逗号串(去空、去重、保序)。 */
2
+ export function normaliseVisitorIdsToCsv(visitorIds) {
3
+ const seen = new Set();
4
+ const out = [];
5
+ for (const raw of visitorIds) {
6
+ const id = raw.trim();
7
+ if (!id || seen.has(id))
8
+ continue;
9
+ seen.add(id);
10
+ out.push(id);
11
+ }
12
+ return out.join(",");
13
+ }
14
+ /** 从逗号分隔串解析 visitor_id 列表(去空、去重、保序)。 */
15
+ export function visitorIdsFromStoredCsv(stored) {
16
+ if (!stored.trim())
17
+ return [];
18
+ const seen = new Set();
19
+ const out = [];
20
+ for (const raw of stored.split(",")) {
21
+ const id = raw.trim();
22
+ if (!id || seen.has(id))
23
+ continue;
24
+ seen.add(id);
25
+ out.push(id);
26
+ }
27
+ return out;
28
+ }
29
+ /**
30
+ * 列出指定创建者拥有的所有域成员模板。
31
+ * 结果按 update_time 降序排列。
32
+ */
33
+ export function listDomainMemberTemplates(db, createVisitorId) {
34
+ return db
35
+ .prepare(`SELECT id, display_name, domain_visitor_ids, create_visitor_id, create_time, update_time
36
+ FROM domain_member_templates
37
+ WHERE create_visitor_id = ?
38
+ ORDER BY update_time DESC`)
39
+ .all(createVisitorId);
40
+ }
41
+ /**
42
+ * 根据 ID 与创建者查询单个域成员模板。
43
+ * 返回对应行或 undefined(无权限或不存在)。
44
+ */
45
+ export function findDomainMemberTemplateById(db, id, createVisitorId) {
46
+ return db
47
+ .prepare(`SELECT id, display_name, domain_visitor_ids, create_visitor_id, create_time, update_time
48
+ FROM domain_member_templates
49
+ WHERE id = ? AND create_visitor_id = ?`)
50
+ .get(id, createVisitorId);
51
+ }
52
+ /**
53
+ * 插入一条新的域成员模板记录。
54
+ * 返回新插入行的自增 ID。
55
+ */
56
+ export function insertDomainMemberTemplate(db, input) {
57
+ const info = db
58
+ .prepare(`INSERT INTO domain_member_templates (display_name, domain_visitor_ids, create_visitor_id, create_time, update_time)
59
+ VALUES (?, ?, ?, ?, ?)`)
60
+ .run(input.displayName.trim(), input.domainVisitorIdsCsv, input.createVisitorId, input.createTime, input.updateTime);
61
+ return Number(info.lastInsertRowid);
62
+ }
63
+ /**
64
+ * 更新指定域成员模板的信息。
65
+ * 仅当 ID 与创建者均匹配时才更新;返回是否实际修改了行。
66
+ */
67
+ export function updateDomainMemberTemplate(db, id, createVisitorId, input) {
68
+ const info = db
69
+ .prepare(`UPDATE domain_member_templates
70
+ SET display_name = ?, domain_visitor_ids = ?, update_time = ?
71
+ WHERE id = ? AND create_visitor_id = ?`)
72
+ .run(input.displayName.trim(), input.domainVisitorIdsCsv, input.updateTime, id, createVisitorId);
73
+ return info.changes > 0;
74
+ }
75
+ /**
76
+ * 删除指定域成员模板。
77
+ * 仅当 ID 与创建者均匹配时才删除;返回是否实际删除了行。
78
+ */
79
+ export function deleteDomainMemberTemplate(db, id, createVisitorId) {
80
+ const info = db
81
+ .prepare(`DELETE FROM domain_member_templates WHERE id = ? AND create_visitor_id = ?`)
82
+ .run(id, createVisitorId);
83
+ return info.changes > 0;
84
+ }
85
+ //# sourceMappingURL=domain-member-template.repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-member-template.repo.js","sourceRoot":"","sources":["../../../../src/server/db/repositories/domain-member-template.repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * 列出所有域,按 domain_id 排序。
3
+ */
4
+ export function listDomains(db) {
5
+ return db
6
+ .prepare(`SELECT domain_id, domain_name, creator_visitor_id, created_at, updated_at, permission FROM domains ORDER BY domain_id`)
7
+ .all();
8
+ }
9
+ /**
10
+ * 根据域 ID 查找单个域。
11
+ * 返回对应行或 undefined。
12
+ */
13
+ export function findDomainById(db, domainId) {
14
+ return db
15
+ .prepare(`SELECT domain_id, domain_name, creator_visitor_id, created_at, updated_at, permission FROM domains WHERE domain_id = ?`)
16
+ .get(domainId);
17
+ }
18
+ /**
19
+ * 插入一条新的域记录。
20
+ * permission 未提供时默认为 public。
21
+ */
22
+ export function insertDomain(db, input) {
23
+ db.prepare(`INSERT INTO domains (domain_id, domain_name, creator_visitor_id, created_at, updated_at, permission) VALUES (?, ?, ?, ?, ?, ?)`).run(input.domainId, input.domainName, input.creatorVisitorId, input.createdAt, input.updatedAt, input.permission ?? "public");
24
+ }
25
+ /**
26
+ * 更新指定域的名称,并自动将 updated_at 设为当前时间。
27
+ */
28
+ export function updateDomainName(db, domainId, domainName) {
29
+ const now = new Date().toISOString();
30
+ db.prepare(`UPDATE domains SET domain_name = ?, updated_at = ? WHERE domain_id = ?`).run(domainName, now, domainId);
31
+ }
32
+ /**
33
+ * 更新指定域的权限,并自动将 updated_at 设为当前时间。
34
+ */
35
+ export function updateDomainPermission(db, domainId, permission) {
36
+ const now = new Date().toISOString();
37
+ db.prepare(`UPDATE domains SET permission = ?, updated_at = ? WHERE domain_id = ?`).run(permission, now, domainId);
38
+ }
39
+ /**
40
+ * 删除指定域及其关联的成员记录。
41
+ * 先清理 domain_members,再删除 domains 行。
42
+ */
43
+ export function deleteDomainRow(db, domainId) {
44
+ db.prepare(`DELETE FROM domain_members WHERE domain_id = ?`).run(domainId);
45
+ db.prepare(`DELETE FROM domains WHERE domain_id = ?`).run(domainId);
46
+ }
47
+ /**
48
+ * 向指定域添加一位成员;若已存在则忽略(INSERT OR IGNORE)。
49
+ */
50
+ export function addDomainMember(db, domainId, visitorId) {
51
+ const now = new Date().toISOString();
52
+ db.prepare(`INSERT OR IGNORE INTO domain_members (domain_id, visitor_id, joined_at) VALUES (?, ?, ?)`).run(domainId, visitorId, now);
53
+ }
54
+ /**
55
+ * 判断指定访客是否是指定域的成员。
56
+ */
57
+ export function isDomainMember(db, domainId, visitorId) {
58
+ const row = db
59
+ .prepare(`SELECT COUNT(*) as c FROM domain_members WHERE domain_id = ? AND visitor_id = ?`)
60
+ .get(domainId, visitorId);
61
+ return (row?.c ?? 0) > 0;
62
+ }
63
+ /**
64
+ * 统计指定域的成员数量。
65
+ */
66
+ export function countDomainMembers(db, domainId) {
67
+ const row = db
68
+ .prepare(`SELECT COUNT(*) as c FROM domain_members WHERE domain_id = ?`)
69
+ .get(domainId);
70
+ return row?.c ?? 0;
71
+ }
72
+ /**
73
+ * 列出指定域的所有成员 visitor_id。
74
+ */
75
+ export function listDomainMemberIds(db, domainId) {
76
+ const rows = db
77
+ .prepare(`SELECT visitor_id FROM domain_members WHERE domain_id = ?`)
78
+ .all(domainId);
79
+ return rows.map((r) => r.visitor_id);
80
+ }
81
+ /**
82
+ * 替换域成员表(先删后插);调用方保证 visitorId 列表已校验。
83
+ * 整个操作在单个事务中完成。
84
+ */
85
+ export function replaceDomainMembers(db, domainId, visitorIds, joinedAt) {
86
+ const tx = db.transaction(() => {
87
+ db.prepare(`DELETE FROM domain_members WHERE domain_id = ?`).run(domainId);
88
+ const ins = db.prepare(`INSERT INTO domain_members (domain_id, visitor_id, joined_at) VALUES (?, ?, ?)`);
89
+ for (const vid of visitorIds) {
90
+ ins.run(domainId, vid, joinedAt);
91
+ }
92
+ });
93
+ tx();
94
+ }
95
+ //# sourceMappingURL=domain.repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.repo.js","sourceRoot":"","sources":["../../../../src/server/db/repositories/domain.repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * 插入一条新的访客记录。
3
+ */
4
+ export function insertVisitor(db, input) {
5
+ db.prepare(`INSERT INTO visitors (
6
+ visitor_id, visitor_name, visitor_token_hash, recovery_code_hash, created_at
7
+ ) VALUES (?, ?, ?, ?, ?)`).run(input.visitorId, input.visitorName, input.visitorTokenHash, input.recoveryCodeHash ?? null, input.createdAt);
8
+ }
9
+ /**
10
+ * 根据 token 哈希查找访客。
11
+ */
12
+ export function findVisitorByTokenHash(db, tokenHash) {
13
+ return db
14
+ .prepare(`SELECT * FROM visitors WHERE visitor_token_hash = ?`)
15
+ .get(tokenHash);
16
+ }
17
+ /**
18
+ * 根据访客 ID 查找访客。
19
+ */
20
+ export function findVisitorById(db, visitorId) {
21
+ return db
22
+ .prepare(`SELECT * FROM visitors WHERE visitor_id = ?`)
23
+ .get(visitorId);
24
+ }
25
+ /**
26
+ * 更新指定访客的 last_seen_at 字段。
27
+ */
28
+ export function updateVisitorLastSeen(db, visitorId, at) {
29
+ db.prepare(`UPDATE visitors SET last_seen_at = ? WHERE visitor_id = ?`).run(at, visitorId);
30
+ }
31
+ /**
32
+ * 停用指定访客,并记录其被合并到的目标访客 ID。
33
+ */
34
+ export function disableVisitor(db, visitorId, mergedInto, at) {
35
+ db.prepare(`UPDATE visitors
36
+ SET disabled_at = ?, merged_into_visitor_id = ?
37
+ WHERE visitor_id = ?`).run(at, mergedInto, visitorId);
38
+ }
39
+ /**
40
+ * 列出所有访客,按创建时间降序排列。
41
+ */
42
+ export function listVisitors(db) {
43
+ return db
44
+ .prepare(`SELECT * FROM visitors ORDER BY created_at DESC`)
45
+ .all();
46
+ }
47
+ /**
48
+ * 根据恢复码哈希查找访客。
49
+ */
50
+ export function findVisitorByRecoveryCodeHash(db, recoveryCodeHash) {
51
+ return db
52
+ .prepare(`SELECT * FROM visitors WHERE recovery_code_hash = ? AND disabled_at IS NULL`)
53
+ .get(recoveryCodeHash);
54
+ }
55
+ /**
56
+ * 更新访客的恢复码哈希。
57
+ */
58
+ export function updateRecoveryCodeHash(db, visitorId, hash) {
59
+ db.prepare(`UPDATE visitors SET recovery_code_hash = ? WHERE visitor_id = ?`).run(hash, visitorId);
60
+ }
61
+ /** 目录用:未停用访客,按显示名排序 */
62
+ export function listActiveVisitorsDirectory(db) {
63
+ return db
64
+ .prepare(`SELECT visitor_id, visitor_name FROM visitors
65
+ WHERE disabled_at IS NULL
66
+ ORDER BY visitor_name COLLATE NOCASE`)
67
+ .all();
68
+ }
69
+ //# sourceMappingURL=visitor.repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.repo.js","sourceRoot":"","sources":["../../../../src/server/db/repositories/visitor.repo.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB,EAAE,KAAyB;IAC5E,EAAE,CAAC,OAAO,CACR;;6BAEyB,CAC1B,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACrH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,SAAiB;IAEjB,OAAO,EAAE;SACN,OAAO,CACN,qDAAqD,CACtD;SACA,GAAG,CAAC,SAAS,CAAC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,SAAiB;IAEjB,OAAO,EAAE;SACN,OAAO,CAAqB,6CAA6C,CAAC;SAC1E,GAAG,CAAC,SAAS,CAAC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAqB,EACrB,SAAiB,EACjB,EAAU;IAEV,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CACzE,EAAE,EACF,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,SAAiB,EACjB,UAAkB,EAClB,EAAU;IAEV,EAAE,CAAC,OAAO,CACR;;0BAEsB,CACvB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB;IAChD,OAAO,EAAE;SACN,OAAO,CAAiB,iDAAiD,CAAC;SAC1E,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,EAAqB,EACrB,gBAAwB;IAExB,OAAO,EAAE;SACN,OAAO,CACN,6EAA6E,CAC9E;SACA,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,SAAiB,EACjB,IAAmB;IAEnB,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,CAC/E,IAAI,EACJ,SAAS,CACV,CAAC;AACJ,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,2BAA2B,CACzC,EAAqB;IAErB,OAAO,EAAE;SACN,OAAO,CACN;;4CAEsC,CACvC;SACA,GAAG,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,224 @@
1
+ /** 数据库初始化所需的全部 DDL 语句,按顺序执行。 */
2
+ const SCHEMA_STATEMENTS = [
3
+ `CREATE TABLE IF NOT EXISTS visitors (
4
+ visitor_id TEXT PRIMARY KEY,
5
+ visitor_name TEXT NOT NULL,
6
+ visitor_token_hash TEXT NOT NULL UNIQUE,
7
+ created_at TEXT NOT NULL,
8
+ last_seen_at TEXT,
9
+ disabled_at TEXT,
10
+ merged_into_visitor_id TEXT
11
+ )`,
12
+ `CREATE INDEX IF NOT EXISTS idx_visitors_token_hash ON visitors (visitor_token_hash)`,
13
+ `CREATE TABLE IF NOT EXISTS domains (
14
+ domain_id TEXT PRIMARY KEY,
15
+ domain_name TEXT NOT NULL,
16
+ creator_visitor_id TEXT NOT NULL,
17
+ created_at TEXT NOT NULL,
18
+ updated_at TEXT NOT NULL,
19
+ permission TEXT NOT NULL DEFAULT 'public'
20
+ )`,
21
+ `CREATE TABLE IF NOT EXISTS documents (
22
+ document_id TEXT PRIMARY KEY,
23
+ domain_id TEXT NOT NULL,
24
+ relative_path TEXT NOT NULL,
25
+ display_name TEXT NOT NULL,
26
+ owner_visitor_id TEXT NOT NULL,
27
+ created_by TEXT NOT NULL,
28
+ updated_by TEXT NOT NULL,
29
+ content_hash TEXT NOT NULL,
30
+ created_at TEXT NOT NULL,
31
+ updated_at TEXT NOT NULL,
32
+ permission INTEGER NOT NULL DEFAULT 1,
33
+ file_type TEXT NOT NULL DEFAULT 'md',
34
+ parent_id TEXT,
35
+ is_dirty INTEGER NOT NULL DEFAULT 1,
36
+ UNIQUE(domain_id, relative_path)
37
+ )`,
38
+ `CREATE INDEX IF NOT EXISTS idx_documents_domain ON documents (domain_id)`,
39
+ `CREATE INDEX IF NOT EXISTS idx_documents_owner ON documents (owner_visitor_id)`,
40
+ `CREATE TABLE IF NOT EXISTS attachments (
41
+ attachment_id TEXT PRIMARY KEY,
42
+ document_id TEXT,
43
+ relative_path TEXT NOT NULL,
44
+ mime_type TEXT,
45
+ byte_size INTEGER NOT NULL,
46
+ owner_visitor_id TEXT NOT NULL,
47
+ created_at TEXT NOT NULL
48
+ )`,
49
+ `CREATE TABLE IF NOT EXISTS audit_logs (
50
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
51
+ actor_visitor_id TEXT,
52
+ action TEXT NOT NULL,
53
+ target_type TEXT,
54
+ target_id TEXT,
55
+ metadata_json TEXT,
56
+ created_at TEXT NOT NULL
57
+ )`,
58
+ `CREATE INDEX IF NOT EXISTS idx_audit_actor ON audit_logs (actor_visitor_id)`,
59
+ `CREATE INDEX IF NOT EXISTS idx_audit_target ON audit_logs (target_type, target_id)`,
60
+ `DROP INDEX IF EXISTS idx_diagrams_owner`,
61
+ `DROP TABLE IF EXISTS diagrams`,
62
+ `CREATE TABLE IF NOT EXISTS visitor_migrations (
63
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
64
+ from_visitor_id TEXT NOT NULL,
65
+ to_visitor_id TEXT NOT NULL,
66
+ affected_counts_json TEXT NOT NULL,
67
+ executed_at TEXT NOT NULL
68
+ )`,
69
+ `CREATE TABLE IF NOT EXISTS document_invites (
70
+ document_id TEXT NOT NULL,
71
+ visitor_id TEXT NOT NULL,
72
+ permission TEXT NOT NULL DEFAULT 'read',
73
+ PRIMARY KEY (document_id, visitor_id)
74
+ )`,
75
+ `CREATE INDEX IF NOT EXISTS idx_document_invites_doc ON document_invites (document_id)`,
76
+ `CREATE TABLE IF NOT EXISTS domain_members (
77
+ domain_id TEXT NOT NULL,
78
+ visitor_id TEXT NOT NULL,
79
+ joined_at TEXT NOT NULL,
80
+ PRIMARY KEY (domain_id, visitor_id)
81
+ )`,
82
+ `CREATE INDEX IF NOT EXISTS idx_domain_members_domain ON domain_members (domain_id)`,
83
+ `CREATE INDEX IF NOT EXISTS idx_domain_members_visitor ON domain_members (visitor_id)`,
84
+ `CREATE TABLE IF NOT EXISTS domain_member_templates (
85
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
86
+ display_name TEXT NOT NULL,
87
+ domain_visitor_ids TEXT NOT NULL DEFAULT '',
88
+ create_visitor_id TEXT NOT NULL,
89
+ create_time TEXT NOT NULL,
90
+ update_time TEXT NOT NULL
91
+ )`,
92
+ `CREATE INDEX IF NOT EXISTS idx_domain_member_templates_owner ON domain_member_templates (create_visitor_id)`,
93
+ `CREATE TABLE IF NOT EXISTS documents_fts_rowid (
94
+ document_id TEXT PRIMARY KEY,
95
+ fts_rowid INTEGER NOT NULL
96
+ )`,
97
+ `CREATE VIRTUAL TABLE IF NOT EXISTS documents_fts USING fts5(
98
+ content,
99
+ document_id UNINDEXED,
100
+ display_name UNINDEXED,
101
+ relative_path UNINDEXED,
102
+ domain_id UNINDEXED,
103
+ owner_visitor_id UNINDEXED,
104
+ permission UNINDEXED,
105
+ tokenize='unicode61'
106
+ )`,
107
+ `CREATE TABLE IF NOT EXISTS cli_tokens (
108
+ token_id TEXT PRIMARY KEY,
109
+ visitor_id TEXT NOT NULL,
110
+ token_hash TEXT NOT NULL UNIQUE,
111
+ name TEXT NOT NULL,
112
+ revoked INTEGER NOT NULL DEFAULT 0,
113
+ created_at TEXT NOT NULL
114
+ )`,
115
+ `CREATE INDEX IF NOT EXISTS idx_cli_tokens_visitor ON cli_tokens (visitor_id)`,
116
+ ];
117
+ /**
118
+ * 在数据库上应用完整 Schema。
119
+ * 所有语句在单个事务中执行,并包含 domains 表迁移与默认域创建。
120
+ */
121
+ export function applySchema(db) {
122
+ const tx = db.transaction(() => {
123
+ for (const stmt of SCHEMA_STATEMENTS) {
124
+ db.exec(stmt);
125
+ }
126
+ migrateDomainsTable(db);
127
+ migrateDocumentsTable(db);
128
+ migrateDocumentsDirty(db);
129
+ migrateVisitorsRecoveryCode(db);
130
+ ensureDefaultDomain(db);
131
+ });
132
+ tx();
133
+ }
134
+ /** 获取 domains 表当前已有的列名集合。 */
135
+ function domainColumnNames(db) {
136
+ const rows = db.prepare(`PRAGMA table_info(domains)`).all();
137
+ return new Set(rows.map((r) => r.name));
138
+ }
139
+ /** 将旧版 domains 表迁移到包含 creator_visitor_id 与 updated_at 的新结构(SQLite ALTER/RENAME)。 */
140
+ function migrateDomainsTable(db) {
141
+ let names = domainColumnNames(db);
142
+ if (!names.has("domain_id"))
143
+ return;
144
+ // 若缺少 updated_at 列,则添加并用 created_at 回填
145
+ if (!names.has("updated_at")) {
146
+ db.exec(`ALTER TABLE domains ADD COLUMN updated_at TEXT`);
147
+ db.prepare(`UPDATE domains SET updated_at = created_at WHERE updated_at IS NULL`).run();
148
+ names = domainColumnNames(db);
149
+ }
150
+ // 将旧列名 created_by 重命名为 creator_visitor_id
151
+ if (names.has("created_by") && !names.has("creator_visitor_id")) {
152
+ db.exec(`ALTER TABLE domains RENAME COLUMN created_by TO creator_visitor_id`);
153
+ }
154
+ }
155
+ /** 若不存在 id 为 default 的域,则插入一条默认域记录。 */
156
+ function ensureDefaultDomain(db) {
157
+ const row = db
158
+ .prepare(`SELECT domain_id FROM domains WHERE domain_id = ?`)
159
+ .get("default");
160
+ if (row)
161
+ return;
162
+ const now = new Date().toISOString();
163
+ db.prepare(`INSERT INTO domains (domain_id, domain_name, creator_visitor_id, created_at, updated_at, permission)
164
+ VALUES (?, ?, ?, ?, ?, ?)`).run("default", "Default", "system", now, now, "public");
165
+ }
166
+ /** 将旧版 documents 表迁移到包含 file_type、parent_id 且 relative_path 为域内唯一的新结构。 */
167
+ function migrateDocumentsTable(db) {
168
+ const names = documentColumnNames(db);
169
+ // 如果已有 file_type 列,说明已迁移过
170
+ if (names.has("file_type"))
171
+ return;
172
+ // SQLite 不支持直接删除 UNIQUE 约束或添加新组合约束。
173
+ // 需要重建表:创建新表 → 复制数据 → 删除旧表 → 重命名。
174
+ db.exec(`CREATE TABLE documents_new (
175
+ document_id TEXT PRIMARY KEY,
176
+ domain_id TEXT NOT NULL,
177
+ relative_path TEXT NOT NULL,
178
+ display_name TEXT NOT NULL,
179
+ owner_visitor_id TEXT NOT NULL,
180
+ created_by TEXT NOT NULL,
181
+ updated_by TEXT NOT NULL,
182
+ content_hash TEXT NOT NULL,
183
+ created_at TEXT NOT NULL,
184
+ updated_at TEXT NOT NULL,
185
+ permission INTEGER NOT NULL DEFAULT 1,
186
+ file_type TEXT NOT NULL DEFAULT 'md',
187
+ parent_id TEXT,
188
+ UNIQUE(domain_id, relative_path)
189
+ )`);
190
+ db.exec(`INSERT INTO documents_new
191
+ (document_id, domain_id, relative_path, display_name, owner_visitor_id,
192
+ created_by, updated_by, content_hash, created_at, updated_at, permission)
193
+ SELECT document_id, domain_id, relative_path, display_name, owner_visitor_id,
194
+ created_by, updated_by, content_hash, created_at, updated_at, permission
195
+ FROM documents`);
196
+ db.exec(`DROP TABLE documents`);
197
+ db.exec(`ALTER TABLE documents_new RENAME TO documents`);
198
+ // 重建索引
199
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_documents_domain ON documents (domain_id)`);
200
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_documents_owner ON documents (owner_visitor_id)`);
201
+ }
202
+ /** 为旧版 documents 表添加 is_dirty 列(若不存在)。现有文档默认标记为 dirty(1),由索引器首次启动时全量重建。 */
203
+ function migrateDocumentsDirty(db) {
204
+ const names = documentColumnNames(db);
205
+ if (names.has("is_dirty"))
206
+ return;
207
+ db.exec(`ALTER TABLE documents ADD COLUMN is_dirty INTEGER NOT NULL DEFAULT 1`);
208
+ }
209
+ function documentColumnNames(db) {
210
+ const rows = db.prepare(`PRAGMA table_info(documents)`).all();
211
+ return new Set(rows.map((r) => r.name));
212
+ }
213
+ /** 为 visitors 表添加 recovery_code_hash 列(若不存在)。 */
214
+ function migrateVisitorsRecoveryCode(db) {
215
+ const names = visitorColumnNames(db);
216
+ if (names.has("recovery_code_hash"))
217
+ return;
218
+ db.exec(`ALTER TABLE visitors ADD COLUMN recovery_code_hash TEXT`);
219
+ }
220
+ function visitorColumnNames(db) {
221
+ const rows = db.prepare(`PRAGMA table_info(visitors)`).all();
222
+ return new Set(rows.map((r) => r.name));
223
+ }
224
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/server/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { getDb } from "../db/connection.js";
3
+ import { deleteDiagram as deleteDiagramRow, findDiagramById, insertDiagram, listDiagrams as listDiagramRows, updateDiagram as updateDiagramRow, } from "../db/repositories/diagram.repo.js";
4
+ import { insertAuditLog } from "../db/repositories/audit.repo.js";
5
+ export class DiagramError extends Error {
6
+ status;
7
+ code;
8
+ constructor(code, message, status = 400) {
9
+ super(message);
10
+ this.code = code;
11
+ this.status = status;
12
+ }
13
+ }
14
+ const MAX_DATA_BYTES = 2 * 1024 * 1024;
15
+ export function listAllDiagrams() {
16
+ return listDiagramRows(getDb()).map(rowToSummary);
17
+ }
18
+ export function getDiagram(diagramId) {
19
+ const row = findDiagramById(getDb(), diagramId);
20
+ if (!row)
21
+ throw new DiagramError("DIAGRAM_NOT_FOUND", "diagram not found", 404);
22
+ return rowToDetail(row);
23
+ }
24
+ export function createDiagram(params) {
25
+ const db = getDb();
26
+ const title = (params.title?.trim() || "Untitled diagram").slice(0, 200);
27
+ const dataJson = serialiseData(params.data ?? { pens: [] });
28
+ const diagramId = randomUUID();
29
+ const now = new Date().toISOString();
30
+ const tx = db.transaction(() => {
31
+ insertDiagram(db, {
32
+ diagramId,
33
+ title,
34
+ ownerVisitorId: params.actorVisitorId,
35
+ dataJson,
36
+ createdAt: now,
37
+ updatedAt: now,
38
+ });
39
+ insertAuditLog(db, {
40
+ actorVisitorId: params.actorVisitorId,
41
+ action: "diagram.create",
42
+ targetType: "diagram",
43
+ targetId: diagramId,
44
+ metadata: { bytes: dataJson.length },
45
+ createdAt: now,
46
+ });
47
+ });
48
+ tx();
49
+ return {
50
+ diagramId,
51
+ title,
52
+ ownerVisitorId: params.actorVisitorId,
53
+ createdAt: now,
54
+ updatedAt: now,
55
+ data: JSON.parse(dataJson),
56
+ };
57
+ }
58
+ export function updateDiagram(params) {
59
+ const db = getDb();
60
+ const row = findDiagramById(db, params.diagramId);
61
+ if (!row)
62
+ throw new DiagramError("DIAGRAM_NOT_FOUND", "diagram not found", 404);
63
+ if (row.owner_visitor_id !== params.actorVisitorId) {
64
+ throw new DiagramError("FORBIDDEN", "only the owner can edit this diagram", 403);
65
+ }
66
+ const title = (params.title?.trim() || row.title).slice(0, 200);
67
+ const dataJson = serialiseData(params.data);
68
+ const now = new Date().toISOString();
69
+ const tx = db.transaction(() => {
70
+ updateDiagramRow(db, {
71
+ diagramId: row.diagram_id,
72
+ title,
73
+ dataJson,
74
+ updatedAt: now,
75
+ });
76
+ insertAuditLog(db, {
77
+ actorVisitorId: params.actorVisitorId,
78
+ action: "diagram.update",
79
+ targetType: "diagram",
80
+ targetId: row.diagram_id,
81
+ metadata: { bytes: dataJson.length },
82
+ createdAt: now,
83
+ });
84
+ });
85
+ tx();
86
+ return {
87
+ diagramId: row.diagram_id,
88
+ title,
89
+ ownerVisitorId: row.owner_visitor_id,
90
+ createdAt: row.created_at,
91
+ updatedAt: now,
92
+ data: JSON.parse(dataJson),
93
+ };
94
+ }
95
+ export function removeDiagram(params) {
96
+ const db = getDb();
97
+ const row = findDiagramById(db, params.diagramId);
98
+ if (!row)
99
+ throw new DiagramError("DIAGRAM_NOT_FOUND", "diagram not found", 404);
100
+ if (row.owner_visitor_id !== params.actorVisitorId) {
101
+ throw new DiagramError("FORBIDDEN", "only the owner can delete this diagram", 403);
102
+ }
103
+ const now = new Date().toISOString();
104
+ const tx = db.transaction(() => {
105
+ deleteDiagramRow(db, row.diagram_id);
106
+ insertAuditLog(db, {
107
+ actorVisitorId: params.actorVisitorId,
108
+ action: "diagram.delete",
109
+ targetType: "diagram",
110
+ targetId: row.diagram_id,
111
+ metadata: {},
112
+ createdAt: now,
113
+ });
114
+ });
115
+ tx();
116
+ }
117
+ function serialiseData(data) {
118
+ let json;
119
+ try {
120
+ json = JSON.stringify(data);
121
+ }
122
+ catch {
123
+ throw new DiagramError("INVALID_DATA", "diagram data is not JSON serialisable");
124
+ }
125
+ if (typeof json !== "string") {
126
+ throw new DiagramError("INVALID_DATA", "diagram data is empty");
127
+ }
128
+ if (Buffer.byteLength(json, "utf8") > MAX_DATA_BYTES) {
129
+ throw new DiagramError("DATA_TOO_LARGE", "diagram data exceeds 2MB");
130
+ }
131
+ return json;
132
+ }
133
+ function rowToSummary(row) {
134
+ return {
135
+ diagramId: row.diagram_id,
136
+ title: row.title,
137
+ ownerVisitorId: row.owner_visitor_id,
138
+ updatedAt: row.updated_at,
139
+ createdAt: row.created_at,
140
+ };
141
+ }
142
+ function rowToDetail(row) {
143
+ return {
144
+ ...rowToSummary(row),
145
+ data: safeParse(row.data_json),
146
+ };
147
+ }
148
+ function safeParse(raw) {
149
+ try {
150
+ return JSON.parse(raw);
151
+ }
152
+ catch {
153
+ return { pens: [] };
154
+ }
155
+ }
156
+ //# sourceMappingURL=diagram.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram.service.js","sourceRoot":"","sources":["../../../src/server/diagrams/diagram.service.ts"],"names":[],"mappings":"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"}