@sync-in/server 1.3.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 (1811) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/LICENSE +660 -0
  3. package/README.md +106 -0
  4. package/environment/environment.dist.min.yaml +11 -0
  5. package/environment/environment.dist.yaml +95 -0
  6. package/migrations/0000_init.sql +324 -0
  7. package/migrations/meta/0000_snapshot.json +2417 -0
  8. package/migrations/meta/_journal.json +13 -0
  9. package/package.json +80 -0
  10. package/server/app.bootstrap.js +103 -0
  11. package/server/app.bootstrap.js.map +1 -0
  12. package/server/app.constants.js +58 -0
  13. package/server/app.constants.js.map +1 -0
  14. package/server/app.e2e-spec.js +34 -0
  15. package/server/app.e2e-spec.js.map +1 -0
  16. package/server/app.module.js +72 -0
  17. package/server/app.module.js.map +1 -0
  18. package/server/app.service.js +72 -0
  19. package/server/app.service.js.map +1 -0
  20. package/server/app.service.spec.js +94 -0
  21. package/server/app.service.spec.js.map +1 -0
  22. package/server/applications/admin/admin.module.js +31 -0
  23. package/server/applications/admin/admin.module.js.map +1 -0
  24. package/server/applications/admin/constants/routes.js +19 -0
  25. package/server/applications/admin/constants/routes.js.map +1 -0
  26. package/server/applications/applications.config.js +50 -0
  27. package/server/applications/applications.config.js.map +1 -0
  28. package/server/applications/applications.constants.js +69 -0
  29. package/server/applications/applications.constants.js.map +1 -0
  30. package/server/applications/applications.module.js +59 -0
  31. package/server/applications/applications.module.js.map +1 -0
  32. package/server/applications/comments/comments.controller.js +133 -0
  33. package/server/applications/comments/comments.controller.js.map +1 -0
  34. package/server/applications/comments/comments.controller.spec.js +63 -0
  35. package/server/applications/comments/comments.controller.spec.js.map +1 -0
  36. package/server/applications/comments/comments.module.js +39 -0
  37. package/server/applications/comments/comments.module.js.map +1 -0
  38. package/server/applications/comments/constants/routes.js +35 -0
  39. package/server/applications/comments/constants/routes.js.map +1 -0
  40. package/server/applications/comments/dto/comment.dto.js +62 -0
  41. package/server/applications/comments/dto/comment.dto.js.map +1 -0
  42. package/server/applications/comments/interfaces/comment-recent.interface.js +10 -0
  43. package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -0
  44. package/server/applications/comments/schemas/comment.interface.js +18 -0
  45. package/server/applications/comments/schemas/comment.interface.js.map +1 -0
  46. package/server/applications/comments/schemas/comments.schema.js +57 -0
  47. package/server/applications/comments/schemas/comments.schema.js.map +1 -0
  48. package/server/applications/comments/services/comments-manager.service.js +137 -0
  49. package/server/applications/comments/services/comments-manager.service.js.map +1 -0
  50. package/server/applications/comments/services/comments-manager.service.spec.js +51 -0
  51. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -0
  52. package/server/applications/comments/services/comments-queries.service.js +185 -0
  53. package/server/applications/comments/services/comments-queries.service.js.map +1 -0
  54. package/server/applications/files/adapters/files-indexer-mysql.service.js +174 -0
  55. package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -0
  56. package/server/applications/files/assets/samples/sample.docx +0 -0
  57. package/server/applications/files/assets/samples/sample.odp +0 -0
  58. package/server/applications/files/assets/samples/sample.ods +0 -0
  59. package/server/applications/files/assets/samples/sample.odt +0 -0
  60. package/server/applications/files/assets/samples/sample.pptx +0 -0
  61. package/server/applications/files/assets/samples/sample.rtf +194 -0
  62. package/server/applications/files/assets/samples/sample.xlsx +0 -0
  63. package/server/applications/files/constants/cache.js +36 -0
  64. package/server/applications/files/constants/cache.js.map +1 -0
  65. package/server/applications/files/constants/compress.js +26 -0
  66. package/server/applications/files/constants/compress.js.map +1 -0
  67. package/server/applications/files/constants/files.js +103 -0
  68. package/server/applications/files/constants/files.js.map +1 -0
  69. package/server/applications/files/constants/indexing.js +49 -0
  70. package/server/applications/files/constants/indexing.js.map +1 -0
  71. package/server/applications/files/constants/only-office.js +536 -0
  72. package/server/applications/files/constants/only-office.js.map +1 -0
  73. package/server/applications/files/constants/operations.js +29 -0
  74. package/server/applications/files/constants/operations.js.map +1 -0
  75. package/server/applications/files/constants/routes.js +100 -0
  76. package/server/applications/files/constants/routes.js.map +1 -0
  77. package/server/applications/files/constants/samples.js +35 -0
  78. package/server/applications/files/constants/samples.js.map +1 -0
  79. package/server/applications/files/decorators/only-office-environment.decorator.js +32 -0
  80. package/server/applications/files/decorators/only-office-environment.decorator.js.map +1 -0
  81. package/server/applications/files/dto/file-operations.dto.js +145 -0
  82. package/server/applications/files/dto/file-operations.dto.js.map +1 -0
  83. package/server/applications/files/events/file-task-event.js +23 -0
  84. package/server/applications/files/events/file-task-event.js.map +1 -0
  85. package/server/applications/files/files-only-office.controller.js +111 -0
  86. package/server/applications/files/files-only-office.controller.js.map +1 -0
  87. package/server/applications/files/files-only-office.controller.spec.js +47 -0
  88. package/server/applications/files/files-only-office.controller.spec.js.map +1 -0
  89. package/server/applications/files/files-tasks.controller.js +97 -0
  90. package/server/applications/files/files-tasks.controller.js.map +1 -0
  91. package/server/applications/files/files-tasks.controller.spec.js +40 -0
  92. package/server/applications/files/files-tasks.controller.spec.js.map +1 -0
  93. package/server/applications/files/files.config.js +96 -0
  94. package/server/applications/files/files.config.js.map +1 -0
  95. package/server/applications/files/files.controller.js +319 -0
  96. package/server/applications/files/files.controller.js.map +1 -0
  97. package/server/applications/files/files.controller.spec.js +84 -0
  98. package/server/applications/files/files.controller.spec.js.map +1 -0
  99. package/server/applications/files/files.module.js +78 -0
  100. package/server/applications/files/files.module.js.map +1 -0
  101. package/server/applications/files/guards/files-only-office.guard.js +48 -0
  102. package/server/applications/files/guards/files-only-office.guard.js.map +1 -0
  103. package/server/applications/files/guards/files-only-office.guard.spec.js +16 -0
  104. package/server/applications/files/guards/files-only-office.guard.spec.js.map +1 -0
  105. package/server/applications/files/guards/files-only-office.strategy.js +60 -0
  106. package/server/applications/files/guards/files-only-office.strategy.js.map +1 -0
  107. package/server/applications/files/interfaces/file-db-props.interface.js +10 -0
  108. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -0
  109. package/server/applications/files/interfaces/file-lock.interface.js +10 -0
  110. package/server/applications/files/interfaces/file-lock.interface.js.map +1 -0
  111. package/server/applications/files/interfaces/file-parse-index.js +10 -0
  112. package/server/applications/files/interfaces/file-parse-index.js.map +1 -0
  113. package/server/applications/files/interfaces/file-props.interface.js +10 -0
  114. package/server/applications/files/interfaces/file-props.interface.js.map +1 -0
  115. package/server/applications/files/interfaces/file-recent-location.interface.js +10 -0
  116. package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -0
  117. package/server/applications/files/interfaces/file-space.interface.js +18 -0
  118. package/server/applications/files/interfaces/file-space.interface.js.map +1 -0
  119. package/server/applications/files/interfaces/file-tree.interface.js +10 -0
  120. package/server/applications/files/interfaces/file-tree.interface.js.map +1 -0
  121. package/server/applications/files/interfaces/only-office-config.interface.js +10 -0
  122. package/server/applications/files/interfaces/only-office-config.interface.js.map +1 -0
  123. package/server/applications/files/models/file-error.js +23 -0
  124. package/server/applications/files/models/file-error.js.map +1 -0
  125. package/server/applications/files/models/file-lock-error.js +23 -0
  126. package/server/applications/files/models/file-lock-error.js.map +1 -0
  127. package/server/applications/files/models/file-task.js +52 -0
  128. package/server/applications/files/models/file-task.js.map +1 -0
  129. package/server/applications/files/models/files-indexer.js +18 -0
  130. package/server/applications/files/models/files-indexer.js.map +1 -0
  131. package/server/applications/files/schemas/file-content.interface.js +10 -0
  132. package/server/applications/files/schemas/file-content.interface.js.map +1 -0
  133. package/server/applications/files/schemas/file-recent.interface.js +18 -0
  134. package/server/applications/files/schemas/file-recent.interface.js.map +1 -0
  135. package/server/applications/files/schemas/file.interface.js +18 -0
  136. package/server/applications/files/schemas/file.interface.js.map +1 -0
  137. package/server/applications/files/schemas/files-content.schema.js +41 -0
  138. package/server/applications/files/schemas/files-content.schema.js.map +1 -0
  139. package/server/applications/files/schemas/files-recents.schema.js +63 -0
  140. package/server/applications/files/schemas/files-recents.schema.js.map +1 -0
  141. package/server/applications/files/schemas/files.schema.js +100 -0
  142. package/server/applications/files/schemas/files.schema.js.map +1 -0
  143. package/server/applications/files/services/files-content-manager.service.js +204 -0
  144. package/server/applications/files/services/files-content-manager.service.js.map +1 -0
  145. package/server/applications/files/services/files-lock-manager.service.js +285 -0
  146. package/server/applications/files/services/files-lock-manager.service.js.map +1 -0
  147. package/server/applications/files/services/files-lock-manager.service.spec.js +40 -0
  148. package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -0
  149. package/server/applications/files/services/files-manager.service.js +565 -0
  150. package/server/applications/files/services/files-manager.service.js.map +1 -0
  151. package/server/applications/files/services/files-manager.service.spec.js +43 -0
  152. package/server/applications/files/services/files-manager.service.spec.js.map +1 -0
  153. package/server/applications/files/services/files-methods.service.js +180 -0
  154. package/server/applications/files/services/files-methods.service.js.map +1 -0
  155. package/server/applications/files/services/files-methods.service.spec.js +135 -0
  156. package/server/applications/files/services/files-methods.service.spec.js.map +1 -0
  157. package/server/applications/files/services/files-only-office-manager.service.js +395 -0
  158. package/server/applications/files/services/files-only-office-manager.service.js.map +1 -0
  159. package/server/applications/files/services/files-only-office-manager.service.spec.js +58 -0
  160. package/server/applications/files/services/files-only-office-manager.service.spec.js.map +1 -0
  161. package/server/applications/files/services/files-parser.service.js +189 -0
  162. package/server/applications/files/services/files-parser.service.js.map +1 -0
  163. package/server/applications/files/services/files-parser.service.spec.js +31 -0
  164. package/server/applications/files/services/files-parser.service.spec.js.map +1 -0
  165. package/server/applications/files/services/files-queries.service.js +314 -0
  166. package/server/applications/files/services/files-queries.service.js.map +1 -0
  167. package/server/applications/files/services/files-recents.service.js +97 -0
  168. package/server/applications/files/services/files-recents.service.js.map +1 -0
  169. package/server/applications/files/services/files-recents.service.spec.js +41 -0
  170. package/server/applications/files/services/files-recents.service.spec.js.map +1 -0
  171. package/server/applications/files/services/files-scheduler.service.js +179 -0
  172. package/server/applications/files/services/files-scheduler.service.js.map +1 -0
  173. package/server/applications/files/services/files-search-manager.service.js +146 -0
  174. package/server/applications/files/services/files-search-manager.service.js.map +1 -0
  175. package/server/applications/files/services/files-search-manager.service.spec.js +46 -0
  176. package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -0
  177. package/server/applications/files/services/files-tasks-manager.service.js +253 -0
  178. package/server/applications/files/services/files-tasks-manager.service.js.map +1 -0
  179. package/server/applications/files/services/files-tasks-manager.service.spec.js +46 -0
  180. package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -0
  181. package/server/applications/files/utils/doc-textify/adapters/excel.js +91 -0
  182. package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -0
  183. package/server/applications/files/utils/doc-textify/adapters/html.js +33 -0
  184. package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -0
  185. package/server/applications/files/utils/doc-textify/adapters/open-office.js +110 -0
  186. package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -0
  187. package/server/applications/files/utils/doc-textify/adapters/pdf.js +67 -0
  188. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -0
  189. package/server/applications/files/utils/doc-textify/adapters/power-point.js +111 -0
  190. package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -0
  191. package/server/applications/files/utils/doc-textify/adapters/text.js +27 -0
  192. package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -0
  193. package/server/applications/files/utils/doc-textify/adapters/word.js +101 -0
  194. package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -0
  195. package/server/applications/files/utils/doc-textify/doc-textify.js +75 -0
  196. package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -0
  197. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +10 -0
  198. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -0
  199. package/server/applications/files/utils/doc-textify/utils/clean.js +34 -0
  200. package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -0
  201. package/server/applications/files/utils/files-search.js +144 -0
  202. package/server/applications/files/utils/files-search.js.map +1 -0
  203. package/server/applications/files/utils/files-tree.js +86 -0
  204. package/server/applications/files/utils/files-tree.js.map +1 -0
  205. package/server/applications/files/utils/files.js +386 -0
  206. package/server/applications/files/utils/files.js.map +1 -0
  207. package/server/applications/files/utils/send-file.js +70 -0
  208. package/server/applications/files/utils/send-file.js.map +1 -0
  209. package/server/applications/files/utils/unzip-file.js +60 -0
  210. package/server/applications/files/utils/unzip-file.js.map +1 -0
  211. package/server/applications/files/utils/url-file.js +39 -0
  212. package/server/applications/files/utils/url-file.js.map +1 -0
  213. package/server/applications/links/constants/cache.js +28 -0
  214. package/server/applications/links/constants/cache.js.map +1 -0
  215. package/server/applications/links/constants/links.js +36 -0
  216. package/server/applications/links/constants/links.js.map +1 -0
  217. package/server/applications/links/constants/routes.js +41 -0
  218. package/server/applications/links/constants/routes.js.map +1 -0
  219. package/server/applications/links/dto/create-or-update-link.dto.js +95 -0
  220. package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -0
  221. package/server/applications/links/interfaces/link-guest.interface.js +10 -0
  222. package/server/applications/links/interfaces/link-guest.interface.js.map +1 -0
  223. package/server/applications/links/interfaces/link-space.interface.js +10 -0
  224. package/server/applications/links/interfaces/link-space.interface.js.map +1 -0
  225. package/server/applications/links/links.controller.js +107 -0
  226. package/server/applications/links/links.controller.js.map +1 -0
  227. package/server/applications/links/links.controller.spec.js +88 -0
  228. package/server/applications/links/links.controller.spec.js.map +1 -0
  229. package/server/applications/links/schemas/link.interface.js +18 -0
  230. package/server/applications/links/schemas/link.interface.js.map +1 -0
  231. package/server/applications/links/schemas/links.schema.js +56 -0
  232. package/server/applications/links/schemas/links.schema.js.map +1 -0
  233. package/server/applications/links/services/links-manager.service.js +158 -0
  234. package/server/applications/links/services/links-manager.service.js.map +1 -0
  235. package/server/applications/links/services/links-manager.service.spec.js +84 -0
  236. package/server/applications/links/services/links-manager.service.spec.js.map +1 -0
  237. package/server/applications/links/services/links-queries.service.js +181 -0
  238. package/server/applications/links/services/links-queries.service.js.map +1 -0
  239. package/server/applications/notifications/constants/notifications.js +62 -0
  240. package/server/applications/notifications/constants/notifications.js.map +1 -0
  241. package/server/applications/notifications/constants/routes.js +30 -0
  242. package/server/applications/notifications/constants/routes.js.map +1 -0
  243. package/server/applications/notifications/constants/websocket.js +22 -0
  244. package/server/applications/notifications/constants/websocket.js.map +1 -0
  245. package/server/applications/notifications/i18n/fr.js +43 -0
  246. package/server/applications/notifications/i18n/fr.js.map +1 -0
  247. package/server/applications/notifications/i18n/index.js +37 -0
  248. package/server/applications/notifications/i18n/index.js.map +1 -0
  249. package/server/applications/notifications/interfaces/notification-properties.interface.js +10 -0
  250. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -0
  251. package/server/applications/notifications/interfaces/user-mail-notification.js +10 -0
  252. package/server/applications/notifications/interfaces/user-mail-notification.js.map +1 -0
  253. package/server/applications/notifications/mails/models.js +133 -0
  254. package/server/applications/notifications/mails/models.js.map +1 -0
  255. package/server/applications/notifications/mails/templates.js +51 -0
  256. package/server/applications/notifications/mails/templates.js.map +1 -0
  257. package/server/applications/notifications/mails/urls.js +51 -0
  258. package/server/applications/notifications/mails/urls.js.map +1 -0
  259. package/server/applications/notifications/notifications.controller.js +110 -0
  260. package/server/applications/notifications/notifications.controller.js.map +1 -0
  261. package/server/applications/notifications/notifications.controller.spec.js +33 -0
  262. package/server/applications/notifications/notifications.controller.spec.js.map +1 -0
  263. package/server/applications/notifications/notifications.gateway.js +45 -0
  264. package/server/applications/notifications/notifications.gateway.js.map +1 -0
  265. package/server/applications/notifications/notifications.module.js +44 -0
  266. package/server/applications/notifications/notifications.module.js.map +1 -0
  267. package/server/applications/notifications/schemas/notification.interface.js +18 -0
  268. package/server/applications/notifications/schemas/notification.interface.js.map +1 -0
  269. package/server/applications/notifications/schemas/notifications.schema.js +45 -0
  270. package/server/applications/notifications/schemas/notifications.schema.js.map +1 -0
  271. package/server/applications/notifications/services/notifications-manager.service.js +143 -0
  272. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -0
  273. package/server/applications/notifications/services/notifications-manager.service.spec.js +46 -0
  274. package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -0
  275. package/server/applications/notifications/services/notifications-queries.service.js +100 -0
  276. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -0
  277. package/server/applications/shares/constants/routes.js +46 -0
  278. package/server/applications/shares/constants/routes.js.map +1 -0
  279. package/server/applications/shares/constants/shares.js +31 -0
  280. package/server/applications/shares/constants/shares.js.map +1 -0
  281. package/server/applications/shares/dto/create-or-update-share.dto.js +232 -0
  282. package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -0
  283. package/server/applications/shares/interfaces/share-child.interface.js +10 -0
  284. package/server/applications/shares/interfaces/share-child.interface.js.map +1 -0
  285. package/server/applications/shares/interfaces/share-env.interface.js +10 -0
  286. package/server/applications/shares/interfaces/share-env.interface.js.map +1 -0
  287. package/server/applications/shares/interfaces/share-file.interface.js +21 -0
  288. package/server/applications/shares/interfaces/share-file.interface.js.map +1 -0
  289. package/server/applications/shares/interfaces/share-link.interface.js +10 -0
  290. package/server/applications/shares/interfaces/share-link.interface.js.map +1 -0
  291. package/server/applications/shares/interfaces/share-props.interface.js +22 -0
  292. package/server/applications/shares/interfaces/share-props.interface.js.map +1 -0
  293. package/server/applications/shares/models/share-child.model.js +30 -0
  294. package/server/applications/shares/models/share-child.model.js.map +1 -0
  295. package/server/applications/shares/schemas/share-members.interface.js +18 -0
  296. package/server/applications/shares/schemas/share-members.interface.js.map +1 -0
  297. package/server/applications/shares/schemas/share.interface.js +18 -0
  298. package/server/applications/shares/schemas/share.interface.js.map +1 -0
  299. package/server/applications/shares/schemas/shares-members.schema.js +69 -0
  300. package/server/applications/shares/schemas/shares-members.schema.js.map +1 -0
  301. package/server/applications/shares/schemas/shares.schema.js +91 -0
  302. package/server/applications/shares/schemas/shares.schema.js.map +1 -0
  303. package/server/applications/shares/services/shares-manager.service.js +1010 -0
  304. package/server/applications/shares/services/shares-manager.service.js.map +1 -0
  305. package/server/applications/shares/services/shares-manager.service.spec.js +56 -0
  306. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -0
  307. package/server/applications/shares/services/shares-queries.service.js +892 -0
  308. package/server/applications/shares/services/shares-queries.service.js.map +1 -0
  309. package/server/applications/shares/shares.controller.js +293 -0
  310. package/server/applications/shares/shares.controller.js.map +1 -0
  311. package/server/applications/shares/shares.controller.spec.js +60 -0
  312. package/server/applications/shares/shares.controller.spec.js.map +1 -0
  313. package/server/applications/shares/shares.module.js +49 -0
  314. package/server/applications/shares/shares.module.js.map +1 -0
  315. package/server/applications/spaces/constants/cache.js +32 -0
  316. package/server/applications/spaces/constants/cache.js.map +1 -0
  317. package/server/applications/spaces/constants/routes.js +58 -0
  318. package/server/applications/spaces/constants/routes.js.map +1 -0
  319. package/server/applications/spaces/constants/spaces.js +104 -0
  320. package/server/applications/spaces/constants/spaces.js.map +1 -0
  321. package/server/applications/spaces/decorators/space-skip-guard.decorator.js +27 -0
  322. package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -0
  323. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +27 -0
  324. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -0
  325. package/server/applications/spaces/decorators/space.decorator.js +20 -0
  326. package/server/applications/spaces/decorators/space.decorator.js.map +1 -0
  327. package/server/applications/spaces/dto/create-or-update-space.dto.js +164 -0
  328. package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -0
  329. package/server/applications/spaces/dto/delete-space.dto.js +33 -0
  330. package/server/applications/spaces/dto/delete-space.dto.js.map +1 -0
  331. package/server/applications/spaces/dto/search-space.dto.js +47 -0
  332. package/server/applications/spaces/dto/search-space.dto.js.map +1 -0
  333. package/server/applications/spaces/dto/space-roots.dto.js +117 -0
  334. package/server/applications/spaces/dto/space-roots.dto.js.map +1 -0
  335. package/server/applications/spaces/guards/space.guard.js +151 -0
  336. package/server/applications/spaces/guards/space.guard.js.map +1 -0
  337. package/server/applications/spaces/guards/space.guard.spec.js +457 -0
  338. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -0
  339. package/server/applications/spaces/interfaces/space-diff.interface.js +10 -0
  340. package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -0
  341. package/server/applications/spaces/interfaces/space-files.interface.js +10 -0
  342. package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -0
  343. package/server/applications/spaces/interfaces/space-quota.interface.js +10 -0
  344. package/server/applications/spaces/interfaces/space-quota.interface.js.map +1 -0
  345. package/server/applications/spaces/interfaces/space-request.interface.js +10 -0
  346. package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -0
  347. package/server/applications/spaces/interfaces/space-trash.interface.js +10 -0
  348. package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -0
  349. package/server/applications/spaces/models/space-env.model.js +112 -0
  350. package/server/applications/spaces/models/space-env.model.js.map +1 -0
  351. package/server/applications/spaces/models/space-props.model.js +60 -0
  352. package/server/applications/spaces/models/space-props.model.js.map +1 -0
  353. package/server/applications/spaces/models/space-root-props.model.js +18 -0
  354. package/server/applications/spaces/models/space-root-props.model.js.map +1 -0
  355. package/server/applications/spaces/models/space.model.js +64 -0
  356. package/server/applications/spaces/models/space.model.js.map +1 -0
  357. package/server/applications/spaces/schemas/space-members.interface.js +18 -0
  358. package/server/applications/spaces/schemas/space-members.interface.js.map +1 -0
  359. package/server/applications/spaces/schemas/space-root.interface.js +18 -0
  360. package/server/applications/spaces/schemas/space-root.interface.js.map +1 -0
  361. package/server/applications/spaces/schemas/space.interface.js +18 -0
  362. package/server/applications/spaces/schemas/space.interface.js.map +1 -0
  363. package/server/applications/spaces/schemas/spaces-members.schema.js +73 -0
  364. package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -0
  365. package/server/applications/spaces/schemas/spaces-roots.schema.js +61 -0
  366. package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -0
  367. package/server/applications/spaces/schemas/spaces.schema.js +63 -0
  368. package/server/applications/spaces/schemas/spaces.schema.js.map +1 -0
  369. package/server/applications/spaces/services/spaces-browser.service.js +308 -0
  370. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -0
  371. package/server/applications/spaces/services/spaces-browser.service.spec.js +74 -0
  372. package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -0
  373. package/server/applications/spaces/services/spaces-manager.service.js +818 -0
  374. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -0
  375. package/server/applications/spaces/services/spaces-manager.service.spec.js +269 -0
  376. package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -0
  377. package/server/applications/spaces/services/spaces-queries.service.js +763 -0
  378. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -0
  379. package/server/applications/spaces/services/spaces-scheduler.service.js +88 -0
  380. package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -0
  381. package/server/applications/spaces/spaces.controller.js +386 -0
  382. package/server/applications/spaces/spaces.controller.js.map +1 -0
  383. package/server/applications/spaces/spaces.controller.spec.js +65 -0
  384. package/server/applications/spaces/spaces.controller.spec.js.map +1 -0
  385. package/server/applications/spaces/spaces.module.js +51 -0
  386. package/server/applications/spaces/spaces.module.js.map +1 -0
  387. package/server/applications/spaces/utils/paths.js +241 -0
  388. package/server/applications/spaces/utils/paths.js.map +1 -0
  389. package/server/applications/spaces/utils/permissions.js +88 -0
  390. package/server/applications/spaces/utils/permissions.js.map +1 -0
  391. package/server/applications/spaces/utils/routes.js +20 -0
  392. package/server/applications/spaces/utils/routes.js.map +1 -0
  393. package/server/applications/sync/constants/auth.js +38 -0
  394. package/server/applications/sync/constants/auth.js.map +1 -0
  395. package/server/applications/sync/constants/routes.js +47 -0
  396. package/server/applications/sync/constants/routes.js.map +1 -0
  397. package/server/applications/sync/constants/store.js +48 -0
  398. package/server/applications/sync/constants/store.js.map +1 -0
  399. package/server/applications/sync/constants/sync.js +128 -0
  400. package/server/applications/sync/constants/sync.js.map +1 -0
  401. package/server/applications/sync/decorators/sync-context.decorator.js +27 -0
  402. package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -0
  403. package/server/applications/sync/decorators/sync-environment.decorator.js +25 -0
  404. package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -0
  405. package/server/applications/sync/dtos/sync-client-auth.dto.js +47 -0
  406. package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -0
  407. package/server/applications/sync/dtos/sync-client-registration.dto.js +51 -0
  408. package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -0
  409. package/server/applications/sync/dtos/sync-operations.dto.js +104 -0
  410. package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -0
  411. package/server/applications/sync/dtos/sync-path.dto.js +130 -0
  412. package/server/applications/sync/dtos/sync-path.dto.js.map +1 -0
  413. package/server/applications/sync/dtos/sync-upload.dto.js +49 -0
  414. package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -0
  415. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +55 -0
  416. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -0
  417. package/server/applications/sync/interfaces/store-manifest.interface.js +10 -0
  418. package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -0
  419. package/server/applications/sync/interfaces/sync-client-auth.interface.js +30 -0
  420. package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -0
  421. package/server/applications/sync/interfaces/sync-client-paths.interface.js +10 -0
  422. package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -0
  423. package/server/applications/sync/interfaces/sync-client.interface.js +10 -0
  424. package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -0
  425. package/server/applications/sync/interfaces/sync-diff.interface.js +11 -0
  426. package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -0
  427. package/server/applications/sync/interfaces/sync-path.interface.js +10 -0
  428. package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -0
  429. package/server/applications/sync/schemas/sync-client.interface.js +18 -0
  430. package/server/applications/sync/schemas/sync-client.interface.js.map +1 -0
  431. package/server/applications/sync/schemas/sync-clients.schema.js +57 -0
  432. package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -0
  433. package/server/applications/sync/schemas/sync-path.interface.js +18 -0
  434. package/server/applications/sync/schemas/sync-path.interface.js.map +1 -0
  435. package/server/applications/sync/schemas/sync-paths.schema.js +76 -0
  436. package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -0
  437. package/server/applications/sync/services/sync-clients-manager.service.js +218 -0
  438. package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -0
  439. package/server/applications/sync/services/sync-clients-manager.service.spec.js +56 -0
  440. package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -0
  441. package/server/applications/sync/services/sync-manager.service.js +299 -0
  442. package/server/applications/sync/services/sync-manager.service.js.map +1 -0
  443. package/server/applications/sync/services/sync-manager.service.spec.js +41 -0
  444. package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -0
  445. package/server/applications/sync/services/sync-paths-manager.service.js +290 -0
  446. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -0
  447. package/server/applications/sync/services/sync-paths-manager.service.spec.js +56 -0
  448. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -0
  449. package/server/applications/sync/services/sync-queries.service.js +238 -0
  450. package/server/applications/sync/services/sync-queries.service.js.map +1 -0
  451. package/server/applications/sync/sync.config.js +36 -0
  452. package/server/applications/sync/sync.config.js.map +1 -0
  453. package/server/applications/sync/sync.controller.js +407 -0
  454. package/server/applications/sync/sync.controller.js.map +1 -0
  455. package/server/applications/sync/sync.controller.spec.js +53 -0
  456. package/server/applications/sync/sync.controller.spec.js.map +1 -0
  457. package/server/applications/sync/sync.module.js +45 -0
  458. package/server/applications/sync/sync.module.js.map +1 -0
  459. package/server/applications/sync/utils/functions.js +26 -0
  460. package/server/applications/sync/utils/functions.js.map +1 -0
  461. package/server/applications/sync/utils/normalizedMap.js +52 -0
  462. package/server/applications/sync/utils/normalizedMap.js.map +1 -0
  463. package/server/applications/sync/utils/routes.js +27 -0
  464. package/server/applications/sync/utils/routes.js.map +1 -0
  465. package/server/applications/users/admin-users.controller.js +350 -0
  466. package/server/applications/users/admin-users.controller.js.map +1 -0
  467. package/server/applications/users/admin-users.controller.spec.js +60 -0
  468. package/server/applications/users/admin-users.controller.spec.js.map +1 -0
  469. package/server/applications/users/constants/group.js +35 -0
  470. package/server/applications/users/constants/group.js.map +1 -0
  471. package/server/applications/users/constants/member.js +39 -0
  472. package/server/applications/users/constants/member.js.map +1 -0
  473. package/server/applications/users/constants/routes.js +134 -0
  474. package/server/applications/users/constants/routes.js.map +1 -0
  475. package/server/applications/users/constants/user.js +118 -0
  476. package/server/applications/users/constants/user.js.map +1 -0
  477. package/server/applications/users/constants/websocket.js +33 -0
  478. package/server/applications/users/constants/websocket.js.map +1 -0
  479. package/server/applications/users/decorators/permissions.decorator.js +18 -0
  480. package/server/applications/users/decorators/permissions.decorator.js.map +1 -0
  481. package/server/applications/users/decorators/roles.decorator.js +18 -0
  482. package/server/applications/users/decorators/roles.decorator.js.map +1 -0
  483. package/server/applications/users/decorators/user.decorator.js +20 -0
  484. package/server/applications/users/decorators/user.decorator.js.map +1 -0
  485. package/server/applications/users/dto/create-or-update-group.dto.js +66 -0
  486. package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -0
  487. package/server/applications/users/dto/create-or-update-user.dto.js +167 -0
  488. package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -0
  489. package/server/applications/users/dto/delete-user.dto.js +54 -0
  490. package/server/applications/users/dto/delete-user.dto.js.map +1 -0
  491. package/server/applications/users/dto/search-members.dto.js +79 -0
  492. package/server/applications/users/dto/search-members.dto.js.map +1 -0
  493. package/server/applications/users/dto/user-password.dto.js +35 -0
  494. package/server/applications/users/dto/user-password.dto.js.map +1 -0
  495. package/server/applications/users/dto/user-properties.dto.js +64 -0
  496. package/server/applications/users/dto/user-properties.dto.js.map +1 -0
  497. package/server/applications/users/guards/permissions.guard.js +71 -0
  498. package/server/applications/users/guards/permissions.guard.js.map +1 -0
  499. package/server/applications/users/guards/permissions.guard.spec.js +103 -0
  500. package/server/applications/users/guards/permissions.guard.spec.js.map +1 -0
  501. package/server/applications/users/guards/roles.guard.js +62 -0
  502. package/server/applications/users/guards/roles.guard.js.map +1 -0
  503. package/server/applications/users/guards/roles.guard.spec.js +90 -0
  504. package/server/applications/users/guards/roles.guard.spec.js.map +1 -0
  505. package/server/applications/users/interfaces/admin-group.interface.js +10 -0
  506. package/server/applications/users/interfaces/admin-group.interface.js.map +1 -0
  507. package/server/applications/users/interfaces/admin-user.interface.js +10 -0
  508. package/server/applications/users/interfaces/admin-user.interface.js.map +1 -0
  509. package/server/applications/users/interfaces/group-browse.interface.js +10 -0
  510. package/server/applications/users/interfaces/group-browse.interface.js.map +1 -0
  511. package/server/applications/users/interfaces/group-member.js +10 -0
  512. package/server/applications/users/interfaces/group-member.js.map +1 -0
  513. package/server/applications/users/interfaces/guest-user.interface.js +10 -0
  514. package/server/applications/users/interfaces/guest-user.interface.js.map +1 -0
  515. package/server/applications/users/interfaces/member.interface.js +10 -0
  516. package/server/applications/users/interfaces/member.interface.js.map +1 -0
  517. package/server/applications/users/interfaces/owner.interface.js +10 -0
  518. package/server/applications/users/interfaces/owner.interface.js.map +1 -0
  519. package/server/applications/users/interfaces/websocket.interface.js +10 -0
  520. package/server/applications/users/interfaces/websocket.interface.js.map +1 -0
  521. package/server/applications/users/models/user.model.js +226 -0
  522. package/server/applications/users/models/user.model.js.map +1 -0
  523. package/server/applications/users/schemas/group.interface.js +18 -0
  524. package/server/applications/users/schemas/group.interface.js.map +1 -0
  525. package/server/applications/users/schemas/groups.schema.js +56 -0
  526. package/server/applications/users/schemas/groups.schema.js.map +1 -0
  527. package/server/applications/users/schemas/user-group.interface.js +18 -0
  528. package/server/applications/users/schemas/user-group.interface.js.map +1 -0
  529. package/server/applications/users/schemas/user.interface.js +18 -0
  530. package/server/applications/users/schemas/user.interface.js.map +1 -0
  531. package/server/applications/users/schemas/users-groups.schema.js +49 -0
  532. package/server/applications/users/schemas/users-groups.schema.js.map +1 -0
  533. package/server/applications/users/schemas/users-guests.schema.js +46 -0
  534. package/server/applications/users/schemas/users-guests.schema.js.map +1 -0
  535. package/server/applications/users/schemas/users.schema.js +94 -0
  536. package/server/applications/users/schemas/users.schema.js.map +1 -0
  537. package/server/applications/users/services/admin-users-manager.service.js +385 -0
  538. package/server/applications/users/services/admin-users-manager.service.js.map +1 -0
  539. package/server/applications/users/services/admin-users-manager.service.spec.js +50 -0
  540. package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -0
  541. package/server/applications/users/services/admin-users-queries.service.js +315 -0
  542. package/server/applications/users/services/admin-users-queries.service.js.map +1 -0
  543. package/server/applications/users/services/users-manager.service.js +424 -0
  544. package/server/applications/users/services/users-manager.service.js.map +1 -0
  545. package/server/applications/users/services/users-manager.service.spec.js +151 -0
  546. package/server/applications/users/services/users-manager.service.spec.js.map +1 -0
  547. package/server/applications/users/services/users-queries.service.js +570 -0
  548. package/server/applications/users/services/users-queries.service.js.map +1 -0
  549. package/server/applications/users/users.controller.js +371 -0
  550. package/server/applications/users/users.controller.js.map +1 -0
  551. package/server/applications/users/users.controller.spec.js +86 -0
  552. package/server/applications/users/users.controller.spec.js.map +1 -0
  553. package/server/applications/users/users.e2e-spec.js +97 -0
  554. package/server/applications/users/users.e2e-spec.js.map +1 -0
  555. package/server/applications/users/users.gateway.js +182 -0
  556. package/server/applications/users/users.gateway.js.map +1 -0
  557. package/server/applications/users/users.gateway.spec.js +36 -0
  558. package/server/applications/users/users.gateway.spec.js.map +1 -0
  559. package/server/applications/users/users.module.js +57 -0
  560. package/server/applications/users/users.module.js.map +1 -0
  561. package/server/applications/users/utils/test.js +34 -0
  562. package/server/applications/users/utils/test.js.map +1 -0
  563. package/server/applications/webdav/constants/routes.js +73 -0
  564. package/server/applications/webdav/constants/routes.js.map +1 -0
  565. package/server/applications/webdav/constants/webdav.js +168 -0
  566. package/server/applications/webdav/constants/webdav.js.map +1 -0
  567. package/server/applications/webdav/decorators/if-header.decorator.js +27 -0
  568. package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -0
  569. package/server/applications/webdav/decorators/webdav-context.decorator.js +36 -0
  570. package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -0
  571. package/server/applications/webdav/filters/webdav.filter.js +45 -0
  572. package/server/applications/webdav/filters/webdav.filter.js.map +1 -0
  573. package/server/applications/webdav/guards/webdav-protocol.guard.js +262 -0
  574. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -0
  575. package/server/applications/webdav/interfaces/if-header.interface.js +10 -0
  576. package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -0
  577. package/server/applications/webdav/interfaces/webdav.interface.js +10 -0
  578. package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -0
  579. package/server/applications/webdav/models/webdav-file.model.js +74 -0
  580. package/server/applications/webdav/models/webdav-file.model.js.map +1 -0
  581. package/server/applications/webdav/services/webdav-methods.service.js +520 -0
  582. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -0
  583. package/server/applications/webdav/services/webdav-methods.service.spec.js +41 -0
  584. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -0
  585. package/server/applications/webdav/services/webdav-spaces.service.js +169 -0
  586. package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -0
  587. package/server/applications/webdav/services/webdav-spaces.service.spec.js +36 -0
  588. package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -0
  589. package/server/applications/webdav/utils/if-header.js +89 -0
  590. package/server/applications/webdav/utils/if-header.js.map +1 -0
  591. package/server/applications/webdav/utils/routes.js +30 -0
  592. package/server/applications/webdav/utils/routes.js.map +1 -0
  593. package/server/applications/webdav/utils/webdav.js +167 -0
  594. package/server/applications/webdav/utils/webdav.js.map +1 -0
  595. package/server/applications/webdav/utils/xml.js +72 -0
  596. package/server/applications/webdav/utils/xml.js.map +1 -0
  597. package/server/applications/webdav/webdav.controller.js +173 -0
  598. package/server/applications/webdav/webdav.controller.js.map +1 -0
  599. package/server/applications/webdav/webdav.controller.spec.js +41 -0
  600. package/server/applications/webdav/webdav.controller.spec.js.map +1 -0
  601. package/server/applications/webdav/webdav.e2e-spec.js +69 -0
  602. package/server/applications/webdav/webdav.e2e-spec.js.map +1 -0
  603. package/server/applications/webdav/webdav.module.js +41 -0
  604. package/server/applications/webdav/webdav.module.js.map +1 -0
  605. package/server/authentication/auth.config.js +223 -0
  606. package/server/authentication/auth.config.js.map +1 -0
  607. package/server/authentication/auth.controller.js +126 -0
  608. package/server/authentication/auth.controller.js.map +1 -0
  609. package/server/authentication/auth.controller.spec.js +132 -0
  610. package/server/authentication/auth.controller.spec.js.map +1 -0
  611. package/server/authentication/auth.e2e-spec.js +340 -0
  612. package/server/authentication/auth.e2e-spec.js.map +1 -0
  613. package/server/authentication/auth.module.js +84 -0
  614. package/server/authentication/auth.module.js.map +1 -0
  615. package/server/authentication/constants/auth.js +54 -0
  616. package/server/authentication/constants/auth.js.map +1 -0
  617. package/server/authentication/constants/routes.js +55 -0
  618. package/server/authentication/constants/routes.js.map +1 -0
  619. package/server/authentication/decorators/auth-token-optional.decorator.js +26 -0
  620. package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -0
  621. package/server/authentication/decorators/auth-token-skip.decorator.js +27 -0
  622. package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -0
  623. package/server/authentication/dto/login-response.dto.js +23 -0
  624. package/server/authentication/dto/login-response.dto.js.map +1 -0
  625. package/server/authentication/dto/token-response.dto.js +44 -0
  626. package/server/authentication/dto/token-response.dto.js.map +1 -0
  627. package/server/authentication/guards/auth-anonymous.guard.js +37 -0
  628. package/server/authentication/guards/auth-anonymous.guard.js.map +1 -0
  629. package/server/authentication/guards/auth-anonymous.guard.spec.js +65 -0
  630. package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -0
  631. package/server/authentication/guards/auth-anonymous.strategy.js +44 -0
  632. package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -0
  633. package/server/authentication/guards/auth-basic.guard.js +54 -0
  634. package/server/authentication/guards/auth-basic.guard.js.map +1 -0
  635. package/server/authentication/guards/auth-basic.guard.spec.js +148 -0
  636. package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -0
  637. package/server/authentication/guards/auth-basic.strategy.js +79 -0
  638. package/server/authentication/guards/auth-basic.strategy.js.map +1 -0
  639. package/server/authentication/guards/auth-digest.guard.js +24 -0
  640. package/server/authentication/guards/auth-digest.guard.js.map +1 -0
  641. package/server/authentication/guards/auth-digest.strategy.js +28 -0
  642. package/server/authentication/guards/auth-digest.strategy.js.map +1 -0
  643. package/server/authentication/guards/auth-local.guard.js +40 -0
  644. package/server/authentication/guards/auth-local.guard.js.map +1 -0
  645. package/server/authentication/guards/auth-local.guard.spec.js +87 -0
  646. package/server/authentication/guards/auth-local.guard.spec.js.map +1 -0
  647. package/server/authentication/guards/auth-local.strategy.js +59 -0
  648. package/server/authentication/guards/auth-local.strategy.js.map +1 -0
  649. package/server/authentication/guards/auth-token-access.guard.js +66 -0
  650. package/server/authentication/guards/auth-token-access.guard.js.map +1 -0
  651. package/server/authentication/guards/auth-token-access.guard.spec.js +262 -0
  652. package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -0
  653. package/server/authentication/guards/auth-token-access.strategy.js +68 -0
  654. package/server/authentication/guards/auth-token-access.strategy.js.map +1 -0
  655. package/server/authentication/guards/auth-token-refresh.guard.js +40 -0
  656. package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -0
  657. package/server/authentication/guards/auth-token-refresh.guard.spec.js +189 -0
  658. package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -0
  659. package/server/authentication/guards/auth-token-refresh.strategy.js +72 -0
  660. package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -0
  661. package/server/authentication/interfaces/auth-request.interface.js +10 -0
  662. package/server/authentication/interfaces/auth-request.interface.js.map +1 -0
  663. package/server/authentication/interfaces/jwt-payload.interface.js +28 -0
  664. package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -0
  665. package/server/authentication/interfaces/token.interface.js +23 -0
  666. package/server/authentication/interfaces/token.interface.js.map +1 -0
  667. package/server/authentication/models/auth-method.js +18 -0
  668. package/server/authentication/models/auth-method.js.map +1 -0
  669. package/server/authentication/services/auth-manager.service.js +174 -0
  670. package/server/authentication/services/auth-manager.service.js.map +1 -0
  671. package/server/authentication/services/auth-manager.service.spec.js +41 -0
  672. package/server/authentication/services/auth-manager.service.spec.js.map +1 -0
  673. package/server/authentication/services/auth-methods/auth-method-database.service.js +55 -0
  674. package/server/authentication/services/auth-methods/auth-method-database.service.js.map +1 -0
  675. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js +88 -0
  676. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +1 -0
  677. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +185 -0
  678. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +1 -0
  679. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +36 -0
  680. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +1 -0
  681. package/server/common/constants.js +23 -0
  682. package/server/common/constants.js.map +1 -0
  683. package/server/common/decorators.js +35 -0
  684. package/server/common/decorators.js.map +1 -0
  685. package/server/common/fonts/avatar.ttf +0 -0
  686. package/server/common/functions.js +292 -0
  687. package/server/common/functions.js.map +1 -0
  688. package/server/common/image.js +113 -0
  689. package/server/common/image.js.map +1 -0
  690. package/server/common/interfaces.js +10 -0
  691. package/server/common/interfaces.js.map +1 -0
  692. package/server/common/shared.js +105 -0
  693. package/server/common/shared.js.map +1 -0
  694. package/server/configuration/config.constants.js +65 -0
  695. package/server/configuration/config.constants.js.map +1 -0
  696. package/server/configuration/config.environment.js +57 -0
  697. package/server/configuration/config.environment.js.map +1 -0
  698. package/server/configuration/config.loader.js +195 -0
  699. package/server/configuration/config.loader.js.map +1 -0
  700. package/server/configuration/config.logger.js +69 -0
  701. package/server/configuration/config.logger.js.map +1 -0
  702. package/server/configuration/config.validation.js +175 -0
  703. package/server/configuration/config.validation.js.map +1 -0
  704. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +169 -0
  705. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -0
  706. package/server/infrastructure/cache/adapters/redis-cache.adapter.js +129 -0
  707. package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -0
  708. package/server/infrastructure/cache/cache.config.js +53 -0
  709. package/server/infrastructure/cache/cache.config.js.map +1 -0
  710. package/server/infrastructure/cache/cache.decorator.js +53 -0
  711. package/server/infrastructure/cache/cache.decorator.js.map +1 -0
  712. package/server/infrastructure/cache/cache.e2e-spec.js +111 -0
  713. package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -0
  714. package/server/infrastructure/cache/cache.module.js +58 -0
  715. package/server/infrastructure/cache/cache.module.js.map +1 -0
  716. package/server/infrastructure/cache/schemas/mysql-cache.interface.js +18 -0
  717. package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -0
  718. package/server/infrastructure/cache/schemas/mysql-cache.schema.js +26 -0
  719. package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -0
  720. package/server/infrastructure/cache/services/cache.service.js +18 -0
  721. package/server/infrastructure/cache/services/cache.service.js.map +1 -0
  722. package/server/infrastructure/context/context.module.js +40 -0
  723. package/server/infrastructure/context/context.module.js.map +1 -0
  724. package/server/infrastructure/context/interceptors/context.interceptor.js +45 -0
  725. package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -0
  726. package/server/infrastructure/context/interfaces/context-store.interface.js +10 -0
  727. package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -0
  728. package/server/infrastructure/context/services/context-manager.service.js +43 -0
  729. package/server/infrastructure/context/services/context-manager.service.js.map +1 -0
  730. package/server/infrastructure/database/configuration.js +29 -0
  731. package/server/infrastructure/database/configuration.js.map +1 -0
  732. package/server/infrastructure/database/constants.js +41 -0
  733. package/server/infrastructure/database/constants.js.map +1 -0
  734. package/server/infrastructure/database/database.config.js +44 -0
  735. package/server/infrastructure/database/database.config.js.map +1 -0
  736. package/server/infrastructure/database/database.logger.js +22 -0
  737. package/server/infrastructure/database/database.logger.js.map +1 -0
  738. package/server/infrastructure/database/database.module.js +94 -0
  739. package/server/infrastructure/database/database.module.js.map +1 -0
  740. package/server/infrastructure/database/interfaces/database.interface.js +10 -0
  741. package/server/infrastructure/database/interfaces/database.interface.js.map +1 -0
  742. package/server/infrastructure/database/schema.js +40 -0
  743. package/server/infrastructure/database/schema.js.map +1 -0
  744. package/server/infrastructure/database/scripts/create-user.js +97 -0
  745. package/server/infrastructure/database/scripts/create-user.js.map +1 -0
  746. package/server/infrastructure/database/scripts/db.js +68 -0
  747. package/server/infrastructure/database/scripts/db.js.map +1 -0
  748. package/server/infrastructure/database/scripts/seed/main.js +18 -0
  749. package/server/infrastructure/database/scripts/seed/main.js.map +1 -0
  750. package/server/infrastructure/database/scripts/seed/usersgroups.js +92 -0
  751. package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -0
  752. package/server/infrastructure/database/utils.js +117 -0
  753. package/server/infrastructure/database/utils.js.map +1 -0
  754. package/server/infrastructure/mailer/interfaces/mail.interface.js +10 -0
  755. package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -0
  756. package/server/infrastructure/mailer/mailer.config.js +94 -0
  757. package/server/infrastructure/mailer/mailer.config.js.map +1 -0
  758. package/server/infrastructure/mailer/mailer.module.js +37 -0
  759. package/server/infrastructure/mailer/mailer.module.js.map +1 -0
  760. package/server/infrastructure/mailer/mailer.service.js +93 -0
  761. package/server/infrastructure/mailer/mailer.service.js.map +1 -0
  762. package/server/infrastructure/scheduler/scheduler.constants.js +30 -0
  763. package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -0
  764. package/server/infrastructure/scheduler/scheduler.module.js +52 -0
  765. package/server/infrastructure/scheduler/scheduler.module.js.map +1 -0
  766. package/server/infrastructure/websocket/adapters/cluster.adapter.js +40 -0
  767. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -0
  768. package/server/infrastructure/websocket/adapters/redis.adapter.js +61 -0
  769. package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -0
  770. package/server/infrastructure/websocket/adapters/web-socket.adapter.js +127 -0
  771. package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -0
  772. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +20 -0
  773. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -0
  774. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +10 -0
  775. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -0
  776. package/server/infrastructure/websocket/utils.js +23 -0
  777. package/server/infrastructure/websocket/utils.js.map +1 -0
  778. package/server/infrastructure/websocket/web-socket.config.js +54 -0
  779. package/server/infrastructure/websocket/web-socket.config.js.map +1 -0
  780. package/server/main.js +27 -0
  781. package/server/main.js.map +1 -0
  782. package/static/3rdpartylicenses.txt +1522 -0
  783. package/static/assets/avatar.svg +7 -0
  784. package/static/assets/codemirror/mode/apl/apl.js +174 -0
  785. package/static/assets/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
  786. package/static/assets/codemirror/mode/asn.1/asn.1.js +204 -0
  787. package/static/assets/codemirror/mode/asterisk/asterisk.js +220 -0
  788. package/static/assets/codemirror/mode/brainfuck/brainfuck.js +85 -0
  789. package/static/assets/codemirror/mode/clike/clike.js +942 -0
  790. package/static/assets/codemirror/mode/clojure/clojure.js +293 -0
  791. package/static/assets/codemirror/mode/cmake/cmake.js +97 -0
  792. package/static/assets/codemirror/mode/cobol/cobol.js +255 -0
  793. package/static/assets/codemirror/mode/coffeescript/coffeescript.js +359 -0
  794. package/static/assets/codemirror/mode/commonlisp/commonlisp.js +125 -0
  795. package/static/assets/codemirror/mode/crystal/crystal.js +433 -0
  796. package/static/assets/codemirror/mode/css/css.js +862 -0
  797. package/static/assets/codemirror/mode/cypher/cypher.js +152 -0
  798. package/static/assets/codemirror/mode/d/d.js +223 -0
  799. package/static/assets/codemirror/mode/dart/dart.js +168 -0
  800. package/static/assets/codemirror/mode/diff/diff.js +47 -0
  801. package/static/assets/codemirror/mode/django/django.js +356 -0
  802. package/static/assets/codemirror/mode/dockerfile/dockerfile.js +211 -0
  803. package/static/assets/codemirror/mode/dtd/dtd.js +142 -0
  804. package/static/assets/codemirror/mode/dylan/dylan.js +352 -0
  805. package/static/assets/codemirror/mode/ebnf/ebnf.js +195 -0
  806. package/static/assets/codemirror/mode/ecl/ecl.js +206 -0
  807. package/static/assets/codemirror/mode/eiffel/eiffel.js +160 -0
  808. package/static/assets/codemirror/mode/elm/elm.js +245 -0
  809. package/static/assets/codemirror/mode/erlang/erlang.js +619 -0
  810. package/static/assets/codemirror/mode/factor/factor.js +85 -0
  811. package/static/assets/codemirror/mode/fcl/fcl.js +173 -0
  812. package/static/assets/codemirror/mode/forth/forth.js +180 -0
  813. package/static/assets/codemirror/mode/fortran/fortran.js +188 -0
  814. package/static/assets/codemirror/mode/gas/gas.js +353 -0
  815. package/static/assets/codemirror/mode/gfm/gfm.js +129 -0
  816. package/static/assets/codemirror/mode/gherkin/gherkin.js +194 -0
  817. package/static/assets/codemirror/mode/go/go.js +187 -0
  818. package/static/assets/codemirror/mode/groovy/groovy.js +245 -0
  819. package/static/assets/codemirror/mode/haml/haml.js +161 -0
  820. package/static/assets/codemirror/mode/handlebars/handlebars.js +70 -0
  821. package/static/assets/codemirror/mode/haskell/haskell.js +268 -0
  822. package/static/assets/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
  823. package/static/assets/codemirror/mode/haxe/haxe.js +515 -0
  824. package/static/assets/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
  825. package/static/assets/codemirror/mode/htmlmixed/htmlmixed.js +153 -0
  826. package/static/assets/codemirror/mode/http/http.js +113 -0
  827. package/static/assets/codemirror/mode/idl/idl.js +290 -0
  828. package/static/assets/codemirror/mode/javascript/javascript.js +960 -0
  829. package/static/assets/codemirror/mode/jinja2/jinja2.js +193 -0
  830. package/static/assets/codemirror/mode/jsx/jsx.js +149 -0
  831. package/static/assets/codemirror/mode/julia/julia.js +390 -0
  832. package/static/assets/codemirror/mode/livescript/livescript.js +280 -0
  833. package/static/assets/codemirror/mode/lua/lua.js +160 -0
  834. package/static/assets/codemirror/mode/markdown/markdown.js +886 -0
  835. package/static/assets/codemirror/mode/mathematica/mathematica.js +176 -0
  836. package/static/assets/codemirror/mode/mbox/mbox.js +129 -0
  837. package/static/assets/codemirror/mode/meta.js +221 -0
  838. package/static/assets/codemirror/mode/mirc/mirc.js +193 -0
  839. package/static/assets/codemirror/mode/mllike/mllike.js +359 -0
  840. package/static/assets/codemirror/mode/modelica/modelica.js +245 -0
  841. package/static/assets/codemirror/mode/mscgen/mscgen.js +175 -0
  842. package/static/assets/codemirror/mode/mumps/mumps.js +148 -0
  843. package/static/assets/codemirror/mode/nginx/nginx.js +178 -0
  844. package/static/assets/codemirror/mode/nsis/nsis.js +95 -0
  845. package/static/assets/codemirror/mode/ntriples/ntriples.js +195 -0
  846. package/static/assets/codemirror/mode/octave/octave.js +139 -0
  847. package/static/assets/codemirror/mode/oz/oz.js +252 -0
  848. package/static/assets/codemirror/mode/pascal/pascal.js +136 -0
  849. package/static/assets/codemirror/mode/pegjs/pegjs.js +111 -0
  850. package/static/assets/codemirror/mode/perl/perl.js +836 -0
  851. package/static/assets/codemirror/mode/php/php.js +234 -0
  852. package/static/assets/codemirror/mode/pig/pig.js +178 -0
  853. package/static/assets/codemirror/mode/powershell/powershell.js +398 -0
  854. package/static/assets/codemirror/mode/properties/properties.js +78 -0
  855. package/static/assets/codemirror/mode/protobuf/protobuf.js +72 -0
  856. package/static/assets/codemirror/mode/pug/pug.js +591 -0
  857. package/static/assets/codemirror/mode/puppet/puppet.js +220 -0
  858. package/static/assets/codemirror/mode/python/python.js +402 -0
  859. package/static/assets/codemirror/mode/q/q.js +139 -0
  860. package/static/assets/codemirror/mode/r/r.js +190 -0
  861. package/static/assets/codemirror/mode/rpm/changes/index.html +66 -0
  862. package/static/assets/codemirror/mode/rpm/rpm.js +109 -0
  863. package/static/assets/codemirror/mode/rst/rst.js +557 -0
  864. package/static/assets/codemirror/mode/ruby/ruby.js +303 -0
  865. package/static/assets/codemirror/mode/rust/rust.js +72 -0
  866. package/static/assets/codemirror/mode/sas/sas.js +303 -0
  867. package/static/assets/codemirror/mode/sass/sass.js +459 -0
  868. package/static/assets/codemirror/mode/scheme/scheme.js +284 -0
  869. package/static/assets/codemirror/mode/shell/shell.js +168 -0
  870. package/static/assets/codemirror/mode/sieve/sieve.js +193 -0
  871. package/static/assets/codemirror/mode/slim/slim.js +575 -0
  872. package/static/assets/codemirror/mode/smalltalk/smalltalk.js +168 -0
  873. package/static/assets/codemirror/mode/smarty/smarty.js +225 -0
  874. package/static/assets/codemirror/mode/solr/solr.js +104 -0
  875. package/static/assets/codemirror/mode/soy/soy.js +665 -0
  876. package/static/assets/codemirror/mode/sparql/sparql.js +184 -0
  877. package/static/assets/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
  878. package/static/assets/codemirror/mode/sql/sql.js +529 -0
  879. package/static/assets/codemirror/mode/stex/stex.js +264 -0
  880. package/static/assets/codemirror/mode/stylus/stylus.js +775 -0
  881. package/static/assets/codemirror/mode/swift/swift.js +221 -0
  882. package/static/assets/codemirror/mode/tcl/tcl.js +140 -0
  883. package/static/assets/codemirror/mode/textile/textile.js +469 -0
  884. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  885. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
  886. package/static/assets/codemirror/mode/tiki/tiki.css +26 -0
  887. package/static/assets/codemirror/mode/tiki/tiki.js +312 -0
  888. package/static/assets/codemirror/mode/toml/toml.js +88 -0
  889. package/static/assets/codemirror/mode/tornado/tornado.js +68 -0
  890. package/static/assets/codemirror/mode/troff/troff.js +84 -0
  891. package/static/assets/codemirror/mode/ttcn/ttcn.js +283 -0
  892. package/static/assets/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  893. package/static/assets/codemirror/mode/turtle/turtle.js +162 -0
  894. package/static/assets/codemirror/mode/twig/twig.js +141 -0
  895. package/static/assets/codemirror/mode/vb/vb.js +275 -0
  896. package/static/assets/codemirror/mode/vbscript/vbscript.js +350 -0
  897. package/static/assets/codemirror/mode/velocity/velocity.js +202 -0
  898. package/static/assets/codemirror/mode/verilog/verilog.js +781 -0
  899. package/static/assets/codemirror/mode/vhdl/vhdl.js +189 -0
  900. package/static/assets/codemirror/mode/vue/vue.js +77 -0
  901. package/static/assets/codemirror/mode/wast/wast.js +132 -0
  902. package/static/assets/codemirror/mode/webidl/webidl.js +195 -0
  903. package/static/assets/codemirror/mode/xml/xml.js +417 -0
  904. package/static/assets/codemirror/mode/xquery/xquery.js +448 -0
  905. package/static/assets/codemirror/mode/yacas/yacas.js +204 -0
  906. package/static/assets/codemirror/mode/yaml/yaml.js +120 -0
  907. package/static/assets/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
  908. package/static/assets/codemirror/mode/z80/z80.js +116 -0
  909. package/static/assets/favicon.svg +25 -0
  910. package/static/assets/logo-dark.svg +32 -0
  911. package/static/assets/logo.svg +32 -0
  912. package/static/assets/mimes/7zip.svg +14 -0
  913. package/static/assets/mimes/application-7zip.svg +14 -0
  914. package/static/assets/mimes/application-atom+xml.svg +15 -0
  915. package/static/assets/mimes/application-atom.svg +15 -0
  916. package/static/assets/mimes/application-certificate.svg +28 -0
  917. package/static/assets/mimes/application-epub+zip.svg +10 -0
  918. package/static/assets/mimes/application-gzip.svg +16 -0
  919. package/static/assets/mimes/application-javascript.svg +6 -0
  920. package/static/assets/mimes/application-json.svg +11 -0
  921. package/static/assets/mimes/application-mathml+xml.svg +188 -0
  922. package/static/assets/mimes/application-mp4.svg +18 -0
  923. package/static/assets/mimes/application-msexcel.svg +1 -0
  924. package/static/assets/mimes/application-msword-template.svg +1 -0
  925. package/static/assets/mimes/application-msword.svg +1 -0
  926. package/static/assets/mimes/application-octet-stream.svg +273 -0
  927. package/static/assets/mimes/application-pdf.svg +13 -0
  928. package/static/assets/mimes/application-pgp-encrypted.svg +16 -0
  929. package/static/assets/mimes/application-pgp-keys.svg +16 -0
  930. package/static/assets/mimes/application-pgp-signature.svg +16 -0
  931. package/static/assets/mimes/application-pgp.svg +16 -0
  932. package/static/assets/mimes/application-postscript.svg +57 -0
  933. package/static/assets/mimes/application-powerpoint.svg +1 -0
  934. package/static/assets/mimes/application-rdf+xml.svg +14 -0
  935. package/static/assets/mimes/application-rss+xml.svg +15 -0
  936. package/static/assets/mimes/application-rtf.svg +14 -0
  937. package/static/assets/mimes/application-script-blank.svg +15 -0
  938. package/static/assets/mimes/application-sql.svg +1 -0
  939. package/static/assets/mimes/application-text.svg +14 -0
  940. package/static/assets/mimes/application-vnd.android.package-archive.svg +16 -0
  941. package/static/assets/mimes/application-vnd.apple.keynote.svg +16 -0
  942. package/static/assets/mimes/application-vnd.apple.numbers.svg +16 -0
  943. package/static/assets/mimes/application-vnd.apple.pages.svg +16 -0
  944. package/static/assets/mimes/application-vnd.ms-excel.sheet.binary.macroenabled.12.svg +1 -0
  945. package/static/assets/mimes/application-vnd.ms-excel.sheet.macroenabled.12.svg +1 -0
  946. package/static/assets/mimes/application-vnd.ms-excel.svg +1 -0
  947. package/static/assets/mimes/application-vnd.ms-excel.template.macroenabled.12.svg +1 -0
  948. package/static/assets/mimes/application-vnd.ms-powerpoint.presentation.macroenabled.12.svg +1 -0
  949. package/static/assets/mimes/application-vnd.ms-powerpoint.svg +1 -0
  950. package/static/assets/mimes/application-vnd.ms-powerpoint.template.macroenabled.12.svg +1 -0
  951. package/static/assets/mimes/application-vnd.ms-word.document.macroenabled.12.svg +1 -0
  952. package/static/assets/mimes/application-vnd.ms-word.svg +1 -0
  953. package/static/assets/mimes/application-vnd.ms-word.template.macroenabled.12.svg +1 -0
  954. package/static/assets/mimes/application-vnd.mspowerpoint.svg +1 -0
  955. package/static/assets/mimes/application-vnd.oasis.opendocument.chart.svg +1 -0
  956. package/static/assets/mimes/application-vnd.oasis.opendocument.database.svg +155 -0
  957. package/static/assets/mimes/application-vnd.oasis.opendocument.formula-template.svg +263 -0
  958. package/static/assets/mimes/application-vnd.oasis.opendocument.formula.svg +188 -0
  959. package/static/assets/mimes/application-vnd.oasis.opendocument.graphics-template.svg +530 -0
  960. package/static/assets/mimes/application-vnd.oasis.opendocument.graphics.svg +89 -0
  961. package/static/assets/mimes/application-vnd.oasis.opendocument.presentation-template.svg +197 -0
  962. package/static/assets/mimes/application-vnd.oasis.opendocument.presentation.svg +122 -0
  963. package/static/assets/mimes/application-vnd.oasis.opendocument.spreadsheet-template.svg +452 -0
  964. package/static/assets/mimes/application-vnd.oasis.opendocument.spreadsheet.svg +266 -0
  965. package/static/assets/mimes/application-vnd.oasis.opendocument.text-master.svg +92 -0
  966. package/static/assets/mimes/application-vnd.oasis.opendocument.text-template.svg +90 -0
  967. package/static/assets/mimes/application-vnd.oasis.opendocument.text-web.svg +18 -0
  968. package/static/assets/mimes/application-vnd.oasis.opendocument.text.svg +92 -0
  969. package/static/assets/mimes/application-vnd.openofficeorg.extension.svg +59 -0
  970. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.presentationml.presentation.svg +1 -0
  971. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.presentationml.slideshow.svg +1 -0
  972. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.spreadsheetml.sheet.svg +1 -0
  973. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.spreadsheetml.template.svg +1 -0
  974. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.wordprocessingml.document.svg +1 -0
  975. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.wordprocessingml.template.svg +1 -0
  976. package/static/assets/mimes/application-vnd.rn-realmedia.svg +18 -0
  977. package/static/assets/mimes/application-vnd.sun.xml.calc.svg +1 -0
  978. package/static/assets/mimes/application-vnd.sun.xml.writer-global.svg +1 -0
  979. package/static/assets/mimes/application-vnd.sun.xml.writer-template.svg +1 -0
  980. package/static/assets/mimes/application-vnd.sun.xml.writer.svg +1 -0
  981. package/static/assets/mimes/application-vnd.sun.xml.writer.template.svg +14 -0
  982. package/static/assets/mimes/application-vnd.visio.svg +26 -0
  983. package/static/assets/mimes/application-wps-office.doc.svg +1 -0
  984. package/static/assets/mimes/application-wps-office.docx.svg +1 -0
  985. package/static/assets/mimes/application-wps-office.ppt.svg +1 -0
  986. package/static/assets/mimes/application-wps-office.pptx.svg +1 -0
  987. package/static/assets/mimes/application-wps-office.xls.svg +1 -0
  988. package/static/assets/mimes/application-wps-office.xlsx.svg +1 -0
  989. package/static/assets/mimes/application-x-7z-compressed.svg +14 -0
  990. package/static/assets/mimes/application-x-7zip.svg +14 -0
  991. package/static/assets/mimes/application-x-ace.svg +14 -0
  992. package/static/assets/mimes/application-x-addon.svg +59 -0
  993. package/static/assets/mimes/application-x-apple-diskimage.svg +1 -0
  994. package/static/assets/mimes/application-x-ar.svg +16 -0
  995. package/static/assets/mimes/application-x-arc.svg +14 -0
  996. package/static/assets/mimes/application-x-archive.svg +16 -0
  997. package/static/assets/mimes/application-x-arj.svg +14 -0
  998. package/static/assets/mimes/application-x-audacity-project.svg +24 -0
  999. package/static/assets/mimes/application-x-bittorrent.svg +53 -0
  1000. package/static/assets/mimes/application-x-blender.svg +353 -0
  1001. package/static/assets/mimes/application-x-bzdvi.svg +14 -0
  1002. package/static/assets/mimes/application-x-bzip-compressed-tar.svg +14 -0
  1003. package/static/assets/mimes/application-x-bzip.svg +16 -0
  1004. package/static/assets/mimes/application-x-cd-image.svg +292 -0
  1005. package/static/assets/mimes/application-x-cda.svg +358 -0
  1006. package/static/assets/mimes/application-x-class-file.svg +37 -0
  1007. package/static/assets/mimes/application-x-compress-tar.svg +16 -0
  1008. package/static/assets/mimes/application-x-compress.svg +16 -0
  1009. package/static/assets/mimes/application-x-compressed-tar.svg +14 -0
  1010. package/static/assets/mimes/application-x-core.svg +20 -0
  1011. package/static/assets/mimes/application-x-cpio.svg +16 -0
  1012. package/static/assets/mimes/application-x-deb.svg +14 -0
  1013. package/static/assets/mimes/application-x-designer.svg +48 -0
  1014. package/static/assets/mimes/application-x-egon.svg +12 -0
  1015. package/static/assets/mimes/application-x-executable.svg +40 -0
  1016. package/static/assets/mimes/application-x-extension-html.svg +18 -0
  1017. package/static/assets/mimes/application-x-font-afm.svg +14 -0
  1018. package/static/assets/mimes/application-x-font-snf.svg +14 -0
  1019. package/static/assets/mimes/application-x-font-speedo.svg +14 -0
  1020. package/static/assets/mimes/application-x-font-type1.svg +14 -0
  1021. package/static/assets/mimes/application-x-gettext-translation.svg +14 -0
  1022. package/static/assets/mimes/application-x-glade.svg +48 -0
  1023. package/static/assets/mimes/application-x-gnome-theme-package.svg +109 -0
  1024. package/static/assets/mimes/application-x-gzdvi.svg +16 -0
  1025. package/static/assets/mimes/application-x-gzip.svg +16 -0
  1026. package/static/assets/mimes/application-x-httpd-php.svg +18 -0
  1027. package/static/assets/mimes/application-x-iso9660-image.svg +292 -0
  1028. package/static/assets/mimes/application-x-java-archive.svg +16 -0
  1029. package/static/assets/mimes/application-x-java.svg +37 -0
  1030. package/static/assets/mimes/application-x-jokosher.svg +24 -0
  1031. package/static/assets/mimes/application-x-kcachegrind.svg +273 -0
  1032. package/static/assets/mimes/application-x-kcsrc.svg +109 -0
  1033. package/static/assets/mimes/application-x-keepass.svg +2 -0
  1034. package/static/assets/mimes/application-x-keepass2.svg +2 -0
  1035. package/static/assets/mimes/application-x-kgetlist.svg +53 -0
  1036. package/static/assets/mimes/application-x-lha.svg +14 -0
  1037. package/static/assets/mimes/application-x-lzma-compressed-tar.svg +16 -0
  1038. package/static/assets/mimes/application-x-lzop.svg +16 -0
  1039. package/static/assets/mimes/application-x-m4.svg +14 -0
  1040. package/static/assets/mimes/application-x-matroska.svg +18 -0
  1041. package/static/assets/mimes/application-x-mplayer2.svg +18 -0
  1042. package/static/assets/mimes/application-x-ms-application.svg +306 -0
  1043. package/static/assets/mimes/application-x-ms-dos-executable.svg +306 -0
  1044. package/static/assets/mimes/application-x-msdos-program.svg +306 -0
  1045. package/static/assets/mimes/application-x-msdownload.svg +306 -0
  1046. package/static/assets/mimes/application-x-msi.svg +306 -0
  1047. package/static/assets/mimes/application-x-mswinurl.svg +18 -0
  1048. package/static/assets/mimes/application-x-mswrite.svg +1 -0
  1049. package/static/assets/mimes/application-x-nzb.svg +15 -0
  1050. package/static/assets/mimes/application-x-object.svg +273 -0
  1051. package/static/assets/mimes/application-x-ole-storage.svg +273 -0
  1052. package/static/assets/mimes/application-x-pak.svg +16 -0
  1053. package/static/assets/mimes/application-x-perl.svg +15 -0
  1054. package/static/assets/mimes/application-x-php.svg +18 -0
  1055. package/static/assets/mimes/application-x-plasma.svg +20 -0
  1056. package/static/assets/mimes/application-x-python-bytecode.svg +16 -0
  1057. package/static/assets/mimes/application-x-rar.svg +14 -0
  1058. package/static/assets/mimes/application-x-rpm.svg +14 -0
  1059. package/static/assets/mimes/application-x-ruby.svg +22 -0
  1060. package/static/assets/mimes/application-x-sh.svg +17 -0
  1061. package/static/assets/mimes/application-x-shared-library-la.svg +62 -0
  1062. package/static/assets/mimes/application-x-sharedlib.svg +62 -0
  1063. package/static/assets/mimes/application-x-shellscript.svg +17 -0
  1064. package/static/assets/mimes/application-x-shockwave-flash.svg +18 -0
  1065. package/static/assets/mimes/application-x-srt.svg +210 -0
  1066. package/static/assets/mimes/application-x-subrip.svg +210 -0
  1067. package/static/assets/mimes/application-x-tar.svg +16 -0
  1068. package/static/assets/mimes/application-x-tarz.svg +14 -0
  1069. package/static/assets/mimes/application-x-tex.svg +79 -0
  1070. package/static/assets/mimes/application-x-theme.svg +109 -0
  1071. package/static/assets/mimes/application-x-trash.svg +14 -0
  1072. package/static/assets/mimes/application-x-tzo.svg +14 -0
  1073. package/static/assets/mimes/application-x-wine-extension-pdd.svg +14 -0
  1074. package/static/assets/mimes/application-x-zip.svg +14 -0
  1075. package/static/assets/mimes/application-x-zoo.svg +14 -0
  1076. package/static/assets/mimes/application-xhtml+xml.svg +18 -0
  1077. package/static/assets/mimes/application-xhtml.svg +18 -0
  1078. package/static/assets/mimes/application-xml.svg +18 -0
  1079. package/static/assets/mimes/application-xsd.svg +18 -0
  1080. package/static/assets/mimes/application-xslt+xml.svg +18 -0
  1081. package/static/assets/mimes/application-zip.svg +14 -0
  1082. package/static/assets/mimes/applications-java.svg +14 -0
  1083. package/static/assets/mimes/archive.svg +16 -0
  1084. package/static/assets/mimes/ascii.svg +14 -0
  1085. package/static/assets/mimes/audio-ac3.svg +24 -0
  1086. package/static/assets/mimes/audio-flac.svg +24 -0
  1087. package/static/assets/mimes/audio-mpeg.svg +24 -0
  1088. package/static/assets/mimes/audio-vn.rn-realmedia.svg +18 -0
  1089. package/static/assets/mimes/audio-vnd.rn-realvideo.svg +18 -0
  1090. package/static/assets/mimes/audio-x-adpcm.svg +24 -0
  1091. package/static/assets/mimes/audio-x-aiff.svg +24 -0
  1092. package/static/assets/mimes/audio-x-flac+ogg.svg +24 -0
  1093. package/static/assets/mimes/audio-x-flac.svg +24 -0
  1094. package/static/assets/mimes/audio-x-generic.svg +24 -0
  1095. package/static/assets/mimes/audio-x-it.svg +24 -0
  1096. package/static/assets/mimes/audio-x-monkey.svg +24 -0
  1097. package/static/assets/mimes/audio-x-mpegurl.svg +24 -0
  1098. package/static/assets/mimes/audio-x-wav.svg +24 -0
  1099. package/static/assets/mimes/audio-x-xi.svg +24 -0
  1100. package/static/assets/mimes/audio-x-xm.svg +24 -0
  1101. package/static/assets/mimes/binary.svg +40 -0
  1102. package/static/assets/mimes/deb.svg +14 -0
  1103. package/static/assets/mimes/directory.svg +9 -0
  1104. package/static/assets/mimes/directory_disabled.svg +9 -0
  1105. package/static/assets/mimes/directory_error.svg +9 -0
  1106. package/static/assets/mimes/directory_share.svg +9 -0
  1107. package/static/assets/mimes/directory_sync.svg +9 -0
  1108. package/static/assets/mimes/divx.svg +18 -0
  1109. package/static/assets/mimes/document.svg +14 -0
  1110. package/static/assets/mimes/emblem-package.svg +16 -0
  1111. package/static/assets/mimes/eps.svg +24 -0
  1112. package/static/assets/mimes/exec.svg +40 -0
  1113. package/static/assets/mimes/extension.svg +59 -0
  1114. package/static/assets/mimes/file.svg +12 -0
  1115. package/static/assets/mimes/folder-tar.svg +16 -0
  1116. package/static/assets/mimes/folder_tar.svg +16 -0
  1117. package/static/assets/mimes/font-otf.svg +14 -0
  1118. package/static/assets/mimes/font-x-generic.svg +14 -0
  1119. package/static/assets/mimes/font.svg +14 -0
  1120. package/static/assets/mimes/font_bitmap.svg +14 -0
  1121. package/static/assets/mimes/font_truetype.svg +14 -0
  1122. package/static/assets/mimes/font_type1.svg +14 -0
  1123. package/static/assets/mimes/fonts-package.svg +16 -0
  1124. package/static/assets/mimes/gedit-plugin.svg +59 -0
  1125. package/static/assets/mimes/gnome-exe-thumbnailer-generic-x.svg +306 -0
  1126. package/static/assets/mimes/gnome-exe-thumbnailer-generic.svg +306 -0
  1127. package/static/assets/mimes/gnome-exe-thumbnailer-template.svg +306 -0
  1128. package/static/assets/mimes/gnome-fs-executable.svg +40 -0
  1129. package/static/assets/mimes/gnome-mime-application-atom+xml.svg +15 -0
  1130. package/static/assets/mimes/gnome-mime-application-msexcel.svg +1 -0
  1131. package/static/assets/mimes/gnome-mime-application-msword.svg +1 -0
  1132. package/static/assets/mimes/gnome-mime-application-ogg.svg +24 -0
  1133. package/static/assets/mimes/gnome-mime-application-pdf.svg +13 -0
  1134. package/static/assets/mimes/gnome-mime-application-postscript.svg +14 -0
  1135. package/static/assets/mimes/gnome-mime-application-powerpoint.svg +1 -0
  1136. package/static/assets/mimes/gnome-mime-application-rss+xml.svg +15 -0
  1137. package/static/assets/mimes/gnome-mime-application-rtf.svg +14 -0
  1138. package/static/assets/mimes/gnome-mime-application-vnd.ms-excel.svg +1 -0
  1139. package/static/assets/mimes/gnome-mime-application-vnd.ms-powerpoint.svg +1 -0
  1140. package/static/assets/mimes/gnome-mime-application-vnd.ms-word.svg +1 -0
  1141. package/static/assets/mimes/gnome-mime-application-vnd.mspowerpoint.svg +1 -0
  1142. package/static/assets/mimes/gnome-mime-application-vnd.oasis.opendocument.formula.svg +188 -0
  1143. package/static/assets/mimes/gnome-mime-application-vnd.oasis.opendocument.text-web.svg +18 -0
  1144. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.presentationml.presentation.svg +1 -0
  1145. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.presentationml.slideshow.svg +1 -0
  1146. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.spreadsheetml.sheet.svg +1 -0
  1147. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.wordprocessingml.document.svg +1 -0
  1148. package/static/assets/mimes/gnome-mime-application-vnd.rn-realmedia-secure.svg +18 -0
  1149. package/static/assets/mimes/gnome-mime-application-vnd.rn-realmedia-vbr.svg +18 -0
  1150. package/static/assets/mimes/gnome-mime-application-vnd.rn-realmedia.svg +18 -0
  1151. package/static/assets/mimes/gnome-mime-application-wps-office.doc.svg +1 -0
  1152. package/static/assets/mimes/gnome-mime-application-wps-office.docx.svg +1 -0
  1153. package/static/assets/mimes/gnome-mime-application-wps-office.ppt.svg +1 -0
  1154. package/static/assets/mimes/gnome-mime-application-wps-office.pptx.svg +1 -0
  1155. package/static/assets/mimes/gnome-mime-application-wps-office.xls.svg +1 -0
  1156. package/static/assets/mimes/gnome-mime-application-wps-office.xlsx.svg +1 -0
  1157. package/static/assets/mimes/gnome-mime-application-x-7z-compressed.svg +14 -0
  1158. package/static/assets/mimes/gnome-mime-application-x-7zip.svg +14 -0
  1159. package/static/assets/mimes/gnome-mime-application-x-archive.svg +16 -0
  1160. package/static/assets/mimes/gnome-mime-application-x-arj.svg +16 -0
  1161. package/static/assets/mimes/gnome-mime-application-x-bittorrent.svg +53 -0
  1162. package/static/assets/mimes/gnome-mime-application-x-bzip-compressed-tar.svg +16 -0
  1163. package/static/assets/mimes/gnome-mime-application-x-bzip-compressed.svg +16 -0
  1164. package/static/assets/mimes/gnome-mime-application-x-bzip.svg +16 -0
  1165. package/static/assets/mimes/gnome-mime-application-x-class-file.svg +14 -0
  1166. package/static/assets/mimes/gnome-mime-application-x-compress.svg +16 -0
  1167. package/static/assets/mimes/gnome-mime-application-x-compressed-tar.svg +16 -0
  1168. package/static/assets/mimes/gnome-mime-application-x-cpio-compressed.svg +16 -0
  1169. package/static/assets/mimes/gnome-mime-application-x-cpio.svg +16 -0
  1170. package/static/assets/mimes/gnome-mime-application-x-deb.svg +14 -0
  1171. package/static/assets/mimes/gnome-mime-application-x-designer.svg +48 -0
  1172. package/static/assets/mimes/gnome-mime-application-x-executable.svg +40 -0
  1173. package/static/assets/mimes/gnome-mime-application-x-font-afm.svg +14 -0
  1174. package/static/assets/mimes/gnome-mime-application-x-font-bdf.svg +14 -0
  1175. package/static/assets/mimes/gnome-mime-application-x-font-linux-psf.svg +14 -0
  1176. package/static/assets/mimes/gnome-mime-application-x-font-pcf.svg +14 -0
  1177. package/static/assets/mimes/gnome-mime-application-x-font-sunos-news.svg +14 -0
  1178. package/static/assets/mimes/gnome-mime-application-x-font-ttf.svg +14 -0
  1179. package/static/assets/mimes/gnome-mime-application-x-glade.svg +48 -0
  1180. package/static/assets/mimes/gnome-mime-application-x-gnome-app-info.svg +109 -0
  1181. package/static/assets/mimes/gnome-mime-application-x-gnome-theme-package.svg +109 -0
  1182. package/static/assets/mimes/gnome-mime-application-x-gzip.svg +16 -0
  1183. package/static/assets/mimes/gnome-mime-application-x-gzpostscript.svg +14 -0
  1184. package/static/assets/mimes/gnome-mime-application-x-jar.svg +16 -0
  1185. package/static/assets/mimes/gnome-mime-application-x-java.svg +14 -0
  1186. package/static/assets/mimes/gnome-mime-application-x-killustrator.svg +12 -0
  1187. package/static/assets/mimes/gnome-mime-application-x-lha.svg +16 -0
  1188. package/static/assets/mimes/gnome-mime-application-x-lhz.svg +16 -0
  1189. package/static/assets/mimes/gnome-mime-application-x-lzma-compressed-tar.svg +16 -0
  1190. package/static/assets/mimes/gnome-mime-application-x-lzma.svg +16 -0
  1191. package/static/assets/mimes/gnome-mime-application-x-ms-dos-executable.svg +306 -0
  1192. package/static/assets/mimes/gnome-mime-application-x-perl.svg +15 -0
  1193. package/static/assets/mimes/gnome-mime-application-x-php.svg +18 -0
  1194. package/static/assets/mimes/gnome-mime-application-x-python-bytecode.svg +16 -0
  1195. package/static/assets/mimes/gnome-mime-application-x-rar.svg +14 -0
  1196. package/static/assets/mimes/gnome-mime-application-x-rpm.svg +14 -0
  1197. package/static/assets/mimes/gnome-mime-application-x-ruby.svg +22 -0
  1198. package/static/assets/mimes/gnome-mime-application-x-shellscript.svg +17 -0
  1199. package/static/assets/mimes/gnome-mime-application-x-shockwave-flash.svg +18 -0
  1200. package/static/assets/mimes/gnome-mime-application-x-stuffit.svg +16 -0
  1201. package/static/assets/mimes/gnome-mime-application-x-tar.svg +16 -0
  1202. package/static/assets/mimes/gnome-mime-application-x-tarz.svg +16 -0
  1203. package/static/assets/mimes/gnome-mime-application-x-tex.svg +79 -0
  1204. package/static/assets/mimes/gnome-mime-application-x-theme.svg +109 -0
  1205. package/static/assets/mimes/gnome-mime-application-x-zip.svg +14 -0
  1206. package/static/assets/mimes/gnome-mime-application-xhtml+xml.svg +18 -0
  1207. package/static/assets/mimes/gnome-mime-application-xml.svg +18 -0
  1208. package/static/assets/mimes/gnome-mime-application-zip.svg +14 -0
  1209. package/static/assets/mimes/gnome-mime-application.svg +40 -0
  1210. package/static/assets/mimes/gnome-mime-audio.svg +24 -0
  1211. package/static/assets/mimes/gnome-mime-image-vnd.adobe.photoshop.svg +14 -0
  1212. package/static/assets/mimes/gnome-mime-image-x-cmu-raster.svg +12 -0
  1213. package/static/assets/mimes/gnome-mime-image-x-killustrator.svg +12 -0
  1214. package/static/assets/mimes/gnome-mime-image-x-psd.svg +14 -0
  1215. package/static/assets/mimes/gnome-mime-image-x-xpixmap.svg +12 -0
  1216. package/static/assets/mimes/gnome-mime-image.svg +12 -0
  1217. package/static/assets/mimes/gnome-mime-text-html.svg +18 -0
  1218. package/static/assets/mimes/gnome-mime-text-install.svg +20 -0
  1219. package/static/assets/mimes/gnome-mime-text-plain.svg +14 -0
  1220. package/static/assets/mimes/gnome-mime-text-vnd.wap.wml.svg +18 -0
  1221. package/static/assets/mimes/gnome-mime-text-x-changelog.svg +208 -0
  1222. package/static/assets/mimes/gnome-mime-text-x-copying.svg +17 -0
  1223. package/static/assets/mimes/gnome-mime-text-x-csh.svg +17 -0
  1224. package/static/assets/mimes/gnome-mime-text-x-gtkrc.svg +109 -0
  1225. package/static/assets/mimes/gnome-mime-text-x-install.svg +17 -0
  1226. package/static/assets/mimes/gnome-mime-text-x-java-source.svg +14 -0
  1227. package/static/assets/mimes/gnome-mime-text-x-java.svg +14 -0
  1228. package/static/assets/mimes/gnome-mime-text-x-makefile.svg +176 -0
  1229. package/static/assets/mimes/gnome-mime-text-x-opml+xml.svg +15 -0
  1230. package/static/assets/mimes/gnome-mime-text-x-opml.svg +15 -0
  1231. package/static/assets/mimes/gnome-mime-text-x-python.svg +16 -0
  1232. package/static/assets/mimes/gnome-mime-text-x-readme.svg +15 -0
  1233. package/static/assets/mimes/gnome-mime-text-x-sh.svg +17 -0
  1234. package/static/assets/mimes/gnome-mime-text-x-zsh.svg +17 -0
  1235. package/static/assets/mimes/gnome-mime-text.svg +14 -0
  1236. package/static/assets/mimes/gnome-mime-video-x-ms-asf.svg +18 -0
  1237. package/static/assets/mimes/gnome-mime-video-x-ms-wmv.svg +18 -0
  1238. package/static/assets/mimes/gnome-mime-video.svg +18 -0
  1239. package/static/assets/mimes/gnome-mime-x-font-afm.svg +14 -0
  1240. package/static/assets/mimes/gnome-mime-x-install.svg +20 -0
  1241. package/static/assets/mimes/gnome-package.svg +16 -0
  1242. package/static/assets/mimes/html.svg +18 -0
  1243. package/static/assets/mimes/image-gif.svg +12 -0
  1244. package/static/assets/mimes/image-jpeg.svg +12 -0
  1245. package/static/assets/mimes/image-png.svg +12 -0
  1246. package/static/assets/mimes/image-svg+xml-compressed.svg +12 -0
  1247. package/static/assets/mimes/image-svg+xml.svg +12 -0
  1248. package/static/assets/mimes/image-svg.svg +12 -0
  1249. package/static/assets/mimes/image-vnd.adobe.photoshop.svg +14 -0
  1250. package/static/assets/mimes/image-vnd.microsoft.icon.svg +12 -0
  1251. package/static/assets/mimes/image-x-eps.svg +24 -0
  1252. package/static/assets/mimes/image-x-generic.svg +12 -0
  1253. package/static/assets/mimes/image-x-psd.svg +14 -0
  1254. package/static/assets/mimes/image-x-psdimage-x-psd.svg +14 -0
  1255. package/static/assets/mimes/image-x-xcf.svg +21 -0
  1256. package/static/assets/mimes/image-x-xfig.svg +12 -0
  1257. package/static/assets/mimes/image.svg +12 -0
  1258. package/static/assets/mimes/internet-feed.svg +15 -0
  1259. package/static/assets/mimes/libpeas-plugin.svg +59 -0
  1260. package/static/assets/mimes/libreoffice-database.svg +155 -0
  1261. package/static/assets/mimes/libreoffice-extension.svg +59 -0
  1262. package/static/assets/mimes/libreoffice-extensionn.svg +59 -0
  1263. package/static/assets/mimes/libreoffice-formula.svg +188 -0
  1264. package/static/assets/mimes/libreoffice-oasis-formula.svg +188 -0
  1265. package/static/assets/mimes/libreoffice34-extension.svg +59 -0
  1266. package/static/assets/mimes/media-audio.svg +24 -0
  1267. package/static/assets/mimes/media-video.svg +18 -0
  1268. package/static/assets/mimes/mime-ascii.svg +14 -0
  1269. package/static/assets/mimes/mime_ascii.svg +14 -0
  1270. package/static/assets/mimes/misc.svg +14 -0
  1271. package/static/assets/mimes/multipart-encrypted.svg +273 -0
  1272. package/static/assets/mimes/music.svg +24 -0
  1273. package/static/assets/mimes/none.svg +110 -0
  1274. package/static/assets/mimes/old-file.svg +22 -0
  1275. package/static/assets/mimes/openofficeorg3-extension.svg +59 -0
  1276. package/static/assets/mimes/package-x-generic.svg +16 -0
  1277. package/static/assets/mimes/package.svg +16 -0
  1278. package/static/assets/mimes/package_editors.svg +14 -0
  1279. package/static/assets/mimes/packages-gdebi.svg +14 -0
  1280. package/static/assets/mimes/pdf.svg +13 -0
  1281. package/static/assets/mimes/preferences-certificate.svg +28 -0
  1282. package/static/assets/mimes/preferences-plugin.svg +59 -0
  1283. package/static/assets/mimes/rar.svg +14 -0
  1284. package/static/assets/mimes/raw.svg +12 -0
  1285. package/static/assets/mimes/rpm.svg +14 -0
  1286. package/static/assets/mimes/scii.svg +14 -0
  1287. package/static/assets/mimes/shellscript.svg +17 -0
  1288. package/static/assets/mimes/sound.svg +24 -0
  1289. package/static/assets/mimes/stock_certificate.svg +28 -0
  1290. package/static/assets/mimes/stock_new-formula.svg +188 -0
  1291. package/static/assets/mimes/stock_new-html.svg +18 -0
  1292. package/static/assets/mimes/stock_script.svg +17 -0
  1293. package/static/assets/mimes/stock_scripts.svg +17 -0
  1294. package/static/assets/mimes/tar.svg +16 -0
  1295. package/static/assets/mimes/text-css.svg +18 -0
  1296. package/static/assets/mimes/text-enriched.svg +14 -0
  1297. package/static/assets/mimes/text-html.svg +18 -0
  1298. package/static/assets/mimes/text-htmlh.svg +18 -0
  1299. package/static/assets/mimes/text-javascript.svg +6 -0
  1300. package/static/assets/mimes/text-markdown.svg +26 -0
  1301. package/static/assets/mimes/text-mht.svg +18 -0
  1302. package/static/assets/mimes/text-plain.svg +14 -0
  1303. package/static/assets/mimes/text-richtext.svg +14 -0
  1304. package/static/assets/mimes/text-typescript.svg +1 -0
  1305. package/static/assets/mimes/text-x-bak.svg +14 -0
  1306. package/static/assets/mimes/text-x-bibtex.svg +79 -0
  1307. package/static/assets/mimes/text-x-changelog.svg +208 -0
  1308. package/static/assets/mimes/text-x-copying.svg +17 -0
  1309. package/static/assets/mimes/text-x-generic.svg +14 -0
  1310. package/static/assets/mimes/text-x-gtkrc.svg +109 -0
  1311. package/static/assets/mimes/text-x-install.svg +20 -0
  1312. package/static/assets/mimes/text-x-java-source.svg +14 -0
  1313. package/static/assets/mimes/text-x-java.svg +14 -0
  1314. package/static/assets/mimes/text-x-log.svg +1135 -0
  1315. package/static/assets/mimes/text-x-lua.svg +14 -0
  1316. package/static/assets/mimes/text-x-makefile.svg +176 -0
  1317. package/static/assets/mimes/text-x-microdvd.svg +210 -0
  1318. package/static/assets/mimes/text-x-nfo.svg +14 -0
  1319. package/static/assets/mimes/text-x-opml+xml.svg +15 -0
  1320. package/static/assets/mimes/text-x-opml.svg +15 -0
  1321. package/static/assets/mimes/text-x-patch.svg +19 -0
  1322. package/static/assets/mimes/text-x-perl.svg +15 -0
  1323. package/static/assets/mimes/text-x-python.svg +16 -0
  1324. package/static/assets/mimes/text-x-readme.svg +15 -0
  1325. package/static/assets/mimes/text-x-ruby.svg +22 -0
  1326. package/static/assets/mimes/text-x-script.svg +17 -0
  1327. package/static/assets/mimes/text-x-tex.svg +79 -0
  1328. package/static/assets/mimes/text-x-vala.svg +14 -0
  1329. package/static/assets/mimes/text-x.svg +14 -0
  1330. package/static/assets/mimes/text-xmcd.svg +358 -0
  1331. package/static/assets/mimes/text-xml.svg +18 -0
  1332. package/static/assets/mimes/text-yaml.svg +1 -0
  1333. package/static/assets/mimes/text.svg +14 -0
  1334. package/static/assets/mimes/text2.svg +14 -0
  1335. package/static/assets/mimes/tgz.svg +16 -0
  1336. package/static/assets/mimes/txt.svg +14 -0
  1337. package/static/assets/mimes/txt2.svg +14 -0
  1338. package/static/assets/mimes/unknown.svg +110 -0
  1339. package/static/assets/mimes/uri-mms.svg +18 -0
  1340. package/static/assets/mimes/uri-mmst.svg +18 -0
  1341. package/static/assets/mimes/uri-mmsu.svg +18 -0
  1342. package/static/assets/mimes/uri-pnm.svg +18 -0
  1343. package/static/assets/mimes/uri-rtspt.svg +18 -0
  1344. package/static/assets/mimes/uri-rtspu.svg +18 -0
  1345. package/static/assets/mimes/video-quicktime.svg +18 -0
  1346. package/static/assets/mimes/video-vivo.svg +18 -0
  1347. package/static/assets/mimes/video-wavelet.svg +18 -0
  1348. package/static/assets/mimes/video-webm.svg +18 -0
  1349. package/static/assets/mimes/video-x-anim.svg +18 -0
  1350. package/static/assets/mimes/video-x-flic.svg +18 -0
  1351. package/static/assets/mimes/video-x-generic.svg +18 -0
  1352. package/static/assets/mimes/video-x-google-vlc-plugin.svg +18 -0
  1353. package/static/assets/mimes/video-x-javafx.svg +18 -0
  1354. package/static/assets/mimes/video-x-matroska.svg +18 -0
  1355. package/static/assets/mimes/video-x-mng.svg +18 -0
  1356. package/static/assets/mimes/video-x-ms-asf-plugin.svg +18 -0
  1357. package/static/assets/mimes/video-x-ms-asf.svg +18 -0
  1358. package/static/assets/mimes/video-x-ms-wmp.svg +18 -0
  1359. package/static/assets/mimes/video-x-ms-wmv.svg +18 -0
  1360. package/static/assets/mimes/video-x-nsv.svg +18 -0
  1361. package/static/assets/mimes/video-x-sgi-movie.svg +18 -0
  1362. package/static/assets/mimes/video-x-theora+ogg.svg +18 -0
  1363. package/static/assets/mimes/video-x-wmv.svg +18 -0
  1364. package/static/assets/mimes/video.svg +18 -0
  1365. package/static/assets/mimes/www.svg +18 -0
  1366. package/static/assets/mimes/x-kde-nsplugin-generated.svg +59 -0
  1367. package/static/assets/mimes/zip.svg +14 -0
  1368. package/static/assets/pdfjs/LICENSE +177 -0
  1369. package/static/assets/pdfjs/build/pdf.mjs +23371 -0
  1370. package/static/assets/pdfjs/build/pdf.mjs.map +1 -0
  1371. package/static/assets/pdfjs/build/pdf.sandbox.mjs +218 -0
  1372. package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -0
  1373. package/static/assets/pdfjs/build/pdf.worker.mjs +58148 -0
  1374. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -0
  1375. package/static/assets/pdfjs/version +1 -0
  1376. package/static/assets/pdfjs/web/cmaps/78-EUC-H.bcmap +0 -0
  1377. package/static/assets/pdfjs/web/cmaps/78-EUC-V.bcmap +0 -0
  1378. package/static/assets/pdfjs/web/cmaps/78-H.bcmap +0 -0
  1379. package/static/assets/pdfjs/web/cmaps/78-RKSJ-H.bcmap +0 -0
  1380. package/static/assets/pdfjs/web/cmaps/78-RKSJ-V.bcmap +0 -0
  1381. package/static/assets/pdfjs/web/cmaps/78-V.bcmap +0 -0
  1382. package/static/assets/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap +0 -0
  1383. package/static/assets/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap +0 -0
  1384. package/static/assets/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap +0 -0
  1385. package/static/assets/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap +0 -0
  1386. package/static/assets/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap +0 -0
  1387. package/static/assets/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap +0 -0
  1388. package/static/assets/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap +0 -0
  1389. package/static/assets/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap +0 -0
  1390. package/static/assets/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap +0 -0
  1391. package/static/assets/pdfjs/web/cmaps/Add-H.bcmap +0 -0
  1392. package/static/assets/pdfjs/web/cmaps/Add-RKSJ-H.bcmap +0 -0
  1393. package/static/assets/pdfjs/web/cmaps/Add-RKSJ-V.bcmap +0 -0
  1394. package/static/assets/pdfjs/web/cmaps/Add-V.bcmap +0 -0
  1395. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap +0 -0
  1396. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap +0 -0
  1397. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap +0 -0
  1398. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap +0 -0
  1399. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap +0 -0
  1400. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap +0 -0
  1401. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap +0 -0
  1402. package/static/assets/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  1403. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-0.bcmap +0 -0
  1404. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-1.bcmap +0 -0
  1405. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-2.bcmap +0 -0
  1406. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-3.bcmap +0 -0
  1407. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-4.bcmap +0 -0
  1408. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-5.bcmap +0 -0
  1409. package/static/assets/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  1410. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap +0 -0
  1411. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap +0 -0
  1412. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap +0 -0
  1413. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap +0 -0
  1414. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap +0 -0
  1415. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap +0 -0
  1416. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap +0 -0
  1417. package/static/assets/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  1418. package/static/assets/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap +0 -0
  1419. package/static/assets/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap +0 -0
  1420. package/static/assets/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap +0 -0
  1421. package/static/assets/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  1422. package/static/assets/pdfjs/web/cmaps/B5-H.bcmap +0 -0
  1423. package/static/assets/pdfjs/web/cmaps/B5-V.bcmap +0 -0
  1424. package/static/assets/pdfjs/web/cmaps/B5pc-H.bcmap +0 -0
  1425. package/static/assets/pdfjs/web/cmaps/B5pc-V.bcmap +0 -0
  1426. package/static/assets/pdfjs/web/cmaps/CNS-EUC-H.bcmap +0 -0
  1427. package/static/assets/pdfjs/web/cmaps/CNS-EUC-V.bcmap +0 -0
  1428. package/static/assets/pdfjs/web/cmaps/CNS1-H.bcmap +0 -0
  1429. package/static/assets/pdfjs/web/cmaps/CNS1-V.bcmap +0 -0
  1430. package/static/assets/pdfjs/web/cmaps/CNS2-H.bcmap +0 -0
  1431. package/static/assets/pdfjs/web/cmaps/CNS2-V.bcmap +3 -0
  1432. package/static/assets/pdfjs/web/cmaps/ETHK-B5-H.bcmap +0 -0
  1433. package/static/assets/pdfjs/web/cmaps/ETHK-B5-V.bcmap +0 -0
  1434. package/static/assets/pdfjs/web/cmaps/ETen-B5-H.bcmap +0 -0
  1435. package/static/assets/pdfjs/web/cmaps/ETen-B5-V.bcmap +0 -0
  1436. package/static/assets/pdfjs/web/cmaps/ETenms-B5-H.bcmap +3 -0
  1437. package/static/assets/pdfjs/web/cmaps/ETenms-B5-V.bcmap +0 -0
  1438. package/static/assets/pdfjs/web/cmaps/EUC-H.bcmap +0 -0
  1439. package/static/assets/pdfjs/web/cmaps/EUC-V.bcmap +0 -0
  1440. package/static/assets/pdfjs/web/cmaps/Ext-H.bcmap +0 -0
  1441. package/static/assets/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap +0 -0
  1442. package/static/assets/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap +0 -0
  1443. package/static/assets/pdfjs/web/cmaps/Ext-V.bcmap +0 -0
  1444. package/static/assets/pdfjs/web/cmaps/GB-EUC-H.bcmap +0 -0
  1445. package/static/assets/pdfjs/web/cmaps/GB-EUC-V.bcmap +0 -0
  1446. package/static/assets/pdfjs/web/cmaps/GB-H.bcmap +4 -0
  1447. package/static/assets/pdfjs/web/cmaps/GB-V.bcmap +0 -0
  1448. package/static/assets/pdfjs/web/cmaps/GBK-EUC-H.bcmap +0 -0
  1449. package/static/assets/pdfjs/web/cmaps/GBK-EUC-V.bcmap +0 -0
  1450. package/static/assets/pdfjs/web/cmaps/GBK2K-H.bcmap +0 -0
  1451. package/static/assets/pdfjs/web/cmaps/GBK2K-V.bcmap +0 -0
  1452. package/static/assets/pdfjs/web/cmaps/GBKp-EUC-H.bcmap +0 -0
  1453. package/static/assets/pdfjs/web/cmaps/GBKp-EUC-V.bcmap +0 -0
  1454. package/static/assets/pdfjs/web/cmaps/GBT-EUC-H.bcmap +0 -0
  1455. package/static/assets/pdfjs/web/cmaps/GBT-EUC-V.bcmap +0 -0
  1456. package/static/assets/pdfjs/web/cmaps/GBT-H.bcmap +0 -0
  1457. package/static/assets/pdfjs/web/cmaps/GBT-V.bcmap +0 -0
  1458. package/static/assets/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap +0 -0
  1459. package/static/assets/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap +0 -0
  1460. package/static/assets/pdfjs/web/cmaps/GBpc-EUC-H.bcmap +0 -0
  1461. package/static/assets/pdfjs/web/cmaps/GBpc-EUC-V.bcmap +0 -0
  1462. package/static/assets/pdfjs/web/cmaps/H.bcmap +0 -0
  1463. package/static/assets/pdfjs/web/cmaps/HKdla-B5-H.bcmap +0 -0
  1464. package/static/assets/pdfjs/web/cmaps/HKdla-B5-V.bcmap +0 -0
  1465. package/static/assets/pdfjs/web/cmaps/HKdlb-B5-H.bcmap +0 -0
  1466. package/static/assets/pdfjs/web/cmaps/HKdlb-B5-V.bcmap +0 -0
  1467. package/static/assets/pdfjs/web/cmaps/HKgccs-B5-H.bcmap +0 -0
  1468. package/static/assets/pdfjs/web/cmaps/HKgccs-B5-V.bcmap +0 -0
  1469. package/static/assets/pdfjs/web/cmaps/HKm314-B5-H.bcmap +0 -0
  1470. package/static/assets/pdfjs/web/cmaps/HKm314-B5-V.bcmap +0 -0
  1471. package/static/assets/pdfjs/web/cmaps/HKm471-B5-H.bcmap +0 -0
  1472. package/static/assets/pdfjs/web/cmaps/HKm471-B5-V.bcmap +0 -0
  1473. package/static/assets/pdfjs/web/cmaps/HKscs-B5-H.bcmap +0 -0
  1474. package/static/assets/pdfjs/web/cmaps/HKscs-B5-V.bcmap +0 -0
  1475. package/static/assets/pdfjs/web/cmaps/Hankaku.bcmap +0 -0
  1476. package/static/assets/pdfjs/web/cmaps/Hiragana.bcmap +0 -0
  1477. package/static/assets/pdfjs/web/cmaps/KSC-EUC-H.bcmap +0 -0
  1478. package/static/assets/pdfjs/web/cmaps/KSC-EUC-V.bcmap +0 -0
  1479. package/static/assets/pdfjs/web/cmaps/KSC-H.bcmap +0 -0
  1480. package/static/assets/pdfjs/web/cmaps/KSC-Johab-H.bcmap +0 -0
  1481. package/static/assets/pdfjs/web/cmaps/KSC-Johab-V.bcmap +0 -0
  1482. package/static/assets/pdfjs/web/cmaps/KSC-V.bcmap +0 -0
  1483. package/static/assets/pdfjs/web/cmaps/KSCms-UHC-H.bcmap +0 -0
  1484. package/static/assets/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  1485. package/static/assets/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  1486. package/static/assets/pdfjs/web/cmaps/KSCms-UHC-V.bcmap +0 -0
  1487. package/static/assets/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap +0 -0
  1488. package/static/assets/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap +0 -0
  1489. package/static/assets/pdfjs/web/cmaps/Katakana.bcmap +0 -0
  1490. package/static/assets/pdfjs/web/cmaps/LICENSE +36 -0
  1491. package/static/assets/pdfjs/web/cmaps/NWP-H.bcmap +0 -0
  1492. package/static/assets/pdfjs/web/cmaps/NWP-V.bcmap +0 -0
  1493. package/static/assets/pdfjs/web/cmaps/RKSJ-H.bcmap +0 -0
  1494. package/static/assets/pdfjs/web/cmaps/RKSJ-V.bcmap +0 -0
  1495. package/static/assets/pdfjs/web/cmaps/Roman.bcmap +0 -0
  1496. package/static/assets/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  1497. package/static/assets/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  1498. package/static/assets/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  1499. package/static/assets/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  1500. package/static/assets/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  1501. package/static/assets/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  1502. package/static/assets/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  1503. package/static/assets/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  1504. package/static/assets/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap +0 -0
  1505. package/static/assets/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap +0 -0
  1506. package/static/assets/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap +0 -0
  1507. package/static/assets/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap +0 -0
  1508. package/static/assets/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap +0 -0
  1509. package/static/assets/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap +0 -0
  1510. package/static/assets/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap +0 -0
  1511. package/static/assets/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap +0 -0
  1512. package/static/assets/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  1513. package/static/assets/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  1514. package/static/assets/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  1515. package/static/assets/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  1516. package/static/assets/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  1517. package/static/assets/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  1518. package/static/assets/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  1519. package/static/assets/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  1520. package/static/assets/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  1521. package/static/assets/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  1522. package/static/assets/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  1523. package/static/assets/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  1524. package/static/assets/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  1525. package/static/assets/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  1526. package/static/assets/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  1527. package/static/assets/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  1528. package/static/assets/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  1529. package/static/assets/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  1530. package/static/assets/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  1531. package/static/assets/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  1532. package/static/assets/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  1533. package/static/assets/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  1534. package/static/assets/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  1535. package/static/assets/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap +0 -0
  1536. package/static/assets/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap +0 -0
  1537. package/static/assets/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap +0 -0
  1538. package/static/assets/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap +0 -0
  1539. package/static/assets/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap +0 -0
  1540. package/static/assets/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap +0 -0
  1541. package/static/assets/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap +0 -0
  1542. package/static/assets/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap +0 -0
  1543. package/static/assets/pdfjs/web/cmaps/V.bcmap +0 -0
  1544. package/static/assets/pdfjs/web/cmaps/WP-Symbol.bcmap +0 -0
  1545. package/static/assets/pdfjs/web/compressed.tracemonkey-pldi-09.pdf +0 -0
  1546. package/static/assets/pdfjs/web/debugger.css +114 -0
  1547. package/static/assets/pdfjs/web/debugger.mjs +627 -0
  1548. package/static/assets/pdfjs/web/iccs/CGATS001Compat-v2-micro.icc +0 -0
  1549. package/static/assets/pdfjs/web/iccs/LICENSE +116 -0
  1550. package/static/assets/pdfjs/web/images/altText_add.svg +3 -0
  1551. package/static/assets/pdfjs/web/images/altText_disclaimer.svg +3 -0
  1552. package/static/assets/pdfjs/web/images/altText_done.svg +3 -0
  1553. package/static/assets/pdfjs/web/images/altText_spinner.svg +30 -0
  1554. package/static/assets/pdfjs/web/images/altText_warning.svg +3 -0
  1555. package/static/assets/pdfjs/web/images/annotation-check.svg +11 -0
  1556. package/static/assets/pdfjs/web/images/annotation-comment.svg +16 -0
  1557. package/static/assets/pdfjs/web/images/annotation-help.svg +26 -0
  1558. package/static/assets/pdfjs/web/images/annotation-insert.svg +10 -0
  1559. package/static/assets/pdfjs/web/images/annotation-key.svg +11 -0
  1560. package/static/assets/pdfjs/web/images/annotation-newparagraph.svg +11 -0
  1561. package/static/assets/pdfjs/web/images/annotation-noicon.svg +7 -0
  1562. package/static/assets/pdfjs/web/images/annotation-note.svg +42 -0
  1563. package/static/assets/pdfjs/web/images/annotation-paperclip.svg +6 -0
  1564. package/static/assets/pdfjs/web/images/annotation-paragraph.svg +16 -0
  1565. package/static/assets/pdfjs/web/images/annotation-pushpin.svg +7 -0
  1566. package/static/assets/pdfjs/web/images/comment-actionsButton.svg +3 -0
  1567. package/static/assets/pdfjs/web/images/comment-closeButton.svg +3 -0
  1568. package/static/assets/pdfjs/web/images/comment-editButton.svg +3 -0
  1569. package/static/assets/pdfjs/web/images/cursor-editorFreeHighlight.svg +6 -0
  1570. package/static/assets/pdfjs/web/images/cursor-editorFreeText.svg +3 -0
  1571. package/static/assets/pdfjs/web/images/cursor-editorInk.svg +4 -0
  1572. package/static/assets/pdfjs/web/images/cursor-editorTextHighlight.svg +8 -0
  1573. package/static/assets/pdfjs/web/images/editor-toolbar-delete.svg +5 -0
  1574. package/static/assets/pdfjs/web/images/editor-toolbar-edit.svg +3 -0
  1575. package/static/assets/pdfjs/web/images/findbarButton-next.svg +3 -0
  1576. package/static/assets/pdfjs/web/images/findbarButton-previous.svg +3 -0
  1577. package/static/assets/pdfjs/web/images/gv-toolbarButton-download.svg +3 -0
  1578. package/static/assets/pdfjs/web/images/loading-icon.gif +0 -0
  1579. package/static/assets/pdfjs/web/images/loading.svg +1 -0
  1580. package/static/assets/pdfjs/web/images/messageBar_closingButton.svg +3 -0
  1581. package/static/assets/pdfjs/web/images/messageBar_info.svg +3 -0
  1582. package/static/assets/pdfjs/web/images/messageBar_warning.svg +3 -0
  1583. package/static/assets/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg +3 -0
  1584. package/static/assets/pdfjs/web/images/secondaryToolbarButton-firstPage.svg +3 -0
  1585. package/static/assets/pdfjs/web/images/secondaryToolbarButton-handTool.svg +3 -0
  1586. package/static/assets/pdfjs/web/images/secondaryToolbarButton-lastPage.svg +3 -0
  1587. package/static/assets/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg +3 -0
  1588. package/static/assets/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg +3 -0
  1589. package/static/assets/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg +3 -0
  1590. package/static/assets/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg +3 -0
  1591. package/static/assets/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg +3 -0
  1592. package/static/assets/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg +3 -0
  1593. package/static/assets/pdfjs/web/images/secondaryToolbarButton-selectTool.svg +3 -0
  1594. package/static/assets/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg +3 -0
  1595. package/static/assets/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg +3 -0
  1596. package/static/assets/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg +3 -0
  1597. package/static/assets/pdfjs/web/images/toolbarButton-bookmark.svg +3 -0
  1598. package/static/assets/pdfjs/web/images/toolbarButton-currentOutlineItem.svg +3 -0
  1599. package/static/assets/pdfjs/web/images/toolbarButton-download.svg +4 -0
  1600. package/static/assets/pdfjs/web/images/toolbarButton-editorFreeText.svg +5 -0
  1601. package/static/assets/pdfjs/web/images/toolbarButton-editorHighlight.svg +6 -0
  1602. package/static/assets/pdfjs/web/images/toolbarButton-editorInk.svg +4 -0
  1603. package/static/assets/pdfjs/web/images/toolbarButton-editorSignature.svg +6 -0
  1604. package/static/assets/pdfjs/web/images/toolbarButton-editorStamp.svg +8 -0
  1605. package/static/assets/pdfjs/web/images/toolbarButton-menuArrow.svg +3 -0
  1606. package/static/assets/pdfjs/web/images/toolbarButton-openFile.svg +3 -0
  1607. package/static/assets/pdfjs/web/images/toolbarButton-pageDown.svg +3 -0
  1608. package/static/assets/pdfjs/web/images/toolbarButton-pageUp.svg +3 -0
  1609. package/static/assets/pdfjs/web/images/toolbarButton-presentationMode.svg +3 -0
  1610. package/static/assets/pdfjs/web/images/toolbarButton-print.svg +3 -0
  1611. package/static/assets/pdfjs/web/images/toolbarButton-search.svg +3 -0
  1612. package/static/assets/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg +3 -0
  1613. package/static/assets/pdfjs/web/images/toolbarButton-sidebarToggle.svg +3 -0
  1614. package/static/assets/pdfjs/web/images/toolbarButton-viewAttachments.svg +3 -0
  1615. package/static/assets/pdfjs/web/images/toolbarButton-viewLayers.svg +3 -0
  1616. package/static/assets/pdfjs/web/images/toolbarButton-viewOutline.svg +3 -0
  1617. package/static/assets/pdfjs/web/images/toolbarButton-viewThumbnail.svg +3 -0
  1618. package/static/assets/pdfjs/web/images/toolbarButton-zoomIn.svg +3 -0
  1619. package/static/assets/pdfjs/web/images/toolbarButton-zoomOut.svg +3 -0
  1620. package/static/assets/pdfjs/web/images/treeitem-collapsed.svg +1 -0
  1621. package/static/assets/pdfjs/web/images/treeitem-expanded.svg +1 -0
  1622. package/static/assets/pdfjs/web/locale/ach/viewer.ftl +275 -0
  1623. package/static/assets/pdfjs/web/locale/af/viewer.ftl +262 -0
  1624. package/static/assets/pdfjs/web/locale/an/viewer.ftl +307 -0
  1625. package/static/assets/pdfjs/web/locale/ar/viewer.ftl +627 -0
  1626. package/static/assets/pdfjs/web/locale/ast/viewer.ftl +251 -0
  1627. package/static/assets/pdfjs/web/locale/az/viewer.ftl +307 -0
  1628. package/static/assets/pdfjs/web/locale/be/viewer.ftl +618 -0
  1629. package/static/assets/pdfjs/web/locale/bg/viewer.ftl +451 -0
  1630. package/static/assets/pdfjs/web/locale/bn/viewer.ftl +297 -0
  1631. package/static/assets/pdfjs/web/locale/bo/viewer.ftl +297 -0
  1632. package/static/assets/pdfjs/web/locale/br/viewer.ftl +382 -0
  1633. package/static/assets/pdfjs/web/locale/brx/viewer.ftl +268 -0
  1634. package/static/assets/pdfjs/web/locale/bs/viewer.ftl +618 -0
  1635. package/static/assets/pdfjs/web/locale/ca/viewer.ftl +343 -0
  1636. package/static/assets/pdfjs/web/locale/cak/viewer.ftl +341 -0
  1637. package/static/assets/pdfjs/web/locale/ckb/viewer.ftl +292 -0
  1638. package/static/assets/pdfjs/web/locale/cs/viewer.ftl +621 -0
  1639. package/static/assets/pdfjs/web/locale/cy/viewer.ftl +627 -0
  1640. package/static/assets/pdfjs/web/locale/da/viewer.ftl +615 -0
  1641. package/static/assets/pdfjs/web/locale/de/viewer.ftl +615 -0
  1642. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +621 -0
  1643. package/static/assets/pdfjs/web/locale/el/viewer.ftl +615 -0
  1644. package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +615 -0
  1645. package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +615 -0
  1646. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +667 -0
  1647. package/static/assets/pdfjs/web/locale/eo/viewer.ftl +615 -0
  1648. package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +615 -0
  1649. package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +615 -0
  1650. package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +615 -0
  1651. package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +580 -0
  1652. package/static/assets/pdfjs/web/locale/et/viewer.ftl +319 -0
  1653. package/static/assets/pdfjs/web/locale/eu/viewer.ftl +619 -0
  1654. package/static/assets/pdfjs/web/locale/fa/viewer.ftl +378 -0
  1655. package/static/assets/pdfjs/web/locale/ff/viewer.ftl +297 -0
  1656. package/static/assets/pdfjs/web/locale/fi/viewer.ftl +615 -0
  1657. package/static/assets/pdfjs/web/locale/fr/viewer.ftl +611 -0
  1658. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +615 -0
  1659. package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +615 -0
  1660. package/static/assets/pdfjs/web/locale/ga-IE/viewer.ftl +263 -0
  1661. package/static/assets/pdfjs/web/locale/gd/viewer.ftl +343 -0
  1662. package/static/assets/pdfjs/web/locale/gl/viewer.ftl +615 -0
  1663. package/static/assets/pdfjs/web/locale/gn/viewer.ftl +614 -0
  1664. package/static/assets/pdfjs/web/locale/gu-IN/viewer.ftl +297 -0
  1665. package/static/assets/pdfjs/web/locale/he/viewer.ftl +615 -0
  1666. package/static/assets/pdfjs/web/locale/hi-IN/viewer.ftl +297 -0
  1667. package/static/assets/pdfjs/web/locale/hr/viewer.ftl +618 -0
  1668. package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +621 -0
  1669. package/static/assets/pdfjs/web/locale/hu/viewer.ftl +615 -0
  1670. package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +314 -0
  1671. package/static/assets/pdfjs/web/locale/hye/viewer.ftl +318 -0
  1672. package/static/assets/pdfjs/web/locale/ia/viewer.ftl +615 -0
  1673. package/static/assets/pdfjs/web/locale/id/viewer.ftl +603 -0
  1674. package/static/assets/pdfjs/web/locale/is/viewer.ftl +600 -0
  1675. package/static/assets/pdfjs/web/locale/it/viewer.ftl +623 -0
  1676. package/static/assets/pdfjs/web/locale/ja/viewer.ftl +603 -0
  1677. package/static/assets/pdfjs/web/locale/ka/viewer.ftl +615 -0
  1678. package/static/assets/pdfjs/web/locale/kab/viewer.ftl +595 -0
  1679. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +603 -0
  1680. package/static/assets/pdfjs/web/locale/km/viewer.ftl +273 -0
  1681. package/static/assets/pdfjs/web/locale/kn/viewer.ftl +263 -0
  1682. package/static/assets/pdfjs/web/locale/ko/viewer.ftl +603 -0
  1683. package/static/assets/pdfjs/web/locale/lij/viewer.ftl +297 -0
  1684. package/static/assets/pdfjs/web/locale/lo/viewer.ftl +343 -0
  1685. package/static/assets/pdfjs/web/locale/locale.json +1 -0
  1686. package/static/assets/pdfjs/web/locale/lt/viewer.ftl +318 -0
  1687. package/static/assets/pdfjs/web/locale/ltg/viewer.ftl +296 -0
  1688. package/static/assets/pdfjs/web/locale/lv/viewer.ftl +297 -0
  1689. package/static/assets/pdfjs/web/locale/meh/viewer.ftl +137 -0
  1690. package/static/assets/pdfjs/web/locale/mk/viewer.ftl +265 -0
  1691. package/static/assets/pdfjs/web/locale/ml/viewer.ftl +524 -0
  1692. package/static/assets/pdfjs/web/locale/mr/viewer.ftl +289 -0
  1693. package/static/assets/pdfjs/web/locale/ms/viewer.ftl +297 -0
  1694. package/static/assets/pdfjs/web/locale/my/viewer.ftl +256 -0
  1695. package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +615 -0
  1696. package/static/assets/pdfjs/web/locale/ne-NP/viewer.ftl +284 -0
  1697. package/static/assets/pdfjs/web/locale/nl/viewer.ftl +615 -0
  1698. package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +609 -0
  1699. package/static/assets/pdfjs/web/locale/oc/viewer.ftl +436 -0
  1700. package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +615 -0
  1701. package/static/assets/pdfjs/web/locale/pl/viewer.ftl +618 -0
  1702. package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +615 -0
  1703. package/static/assets/pdfjs/web/locale/pt-PT/viewer.ftl +615 -0
  1704. package/static/assets/pdfjs/web/locale/rm/viewer.ftl +615 -0
  1705. package/static/assets/pdfjs/web/locale/ro/viewer.ftl +302 -0
  1706. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +618 -0
  1707. package/static/assets/pdfjs/web/locale/sat/viewer.ftl +355 -0
  1708. package/static/assets/pdfjs/web/locale/sc/viewer.ftl +394 -0
  1709. package/static/assets/pdfjs/web/locale/scn/viewer.ftl +124 -0
  1710. package/static/assets/pdfjs/web/locale/sco/viewer.ftl +314 -0
  1711. package/static/assets/pdfjs/web/locale/si/viewer.ftl +301 -0
  1712. package/static/assets/pdfjs/web/locale/sk/viewer.ftl +621 -0
  1713. package/static/assets/pdfjs/web/locale/skr/viewer.ftl +524 -0
  1714. package/static/assets/pdfjs/web/locale/sl/viewer.ftl +621 -0
  1715. package/static/assets/pdfjs/web/locale/son/viewer.ftl +256 -0
  1716. package/static/assets/pdfjs/web/locale/sq/viewer.ftl +606 -0
  1717. package/static/assets/pdfjs/web/locale/sr/viewer.ftl +451 -0
  1718. package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +615 -0
  1719. package/static/assets/pdfjs/web/locale/szl/viewer.ftl +307 -0
  1720. package/static/assets/pdfjs/web/locale/ta/viewer.ftl +273 -0
  1721. package/static/assets/pdfjs/web/locale/te/viewer.ftl +289 -0
  1722. package/static/assets/pdfjs/web/locale/tg/viewer.ftl +615 -0
  1723. package/static/assets/pdfjs/web/locale/th/viewer.ftl +603 -0
  1724. package/static/assets/pdfjs/web/locale/tl/viewer.ftl +307 -0
  1725. package/static/assets/pdfjs/web/locale/tr/viewer.ftl +615 -0
  1726. package/static/assets/pdfjs/web/locale/trs/viewer.ftl +247 -0
  1727. package/static/assets/pdfjs/web/locale/uk/viewer.ftl +618 -0
  1728. package/static/assets/pdfjs/web/locale/ur/viewer.ftl +298 -0
  1729. package/static/assets/pdfjs/web/locale/uz/viewer.ftl +237 -0
  1730. package/static/assets/pdfjs/web/locale/vi/viewer.ftl +603 -0
  1731. package/static/assets/pdfjs/web/locale/wo/viewer.ftl +177 -0
  1732. package/static/assets/pdfjs/web/locale/xh/viewer.ftl +262 -0
  1733. package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +603 -0
  1734. package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +603 -0
  1735. package/static/assets/pdfjs/web/standard_fonts/FoxitDingbats.pfb +0 -0
  1736. package/static/assets/pdfjs/web/standard_fonts/FoxitFixed.pfb +0 -0
  1737. package/static/assets/pdfjs/web/standard_fonts/FoxitFixedBold.pfb +0 -0
  1738. package/static/assets/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  1739. package/static/assets/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
  1740. package/static/assets/pdfjs/web/standard_fonts/FoxitSerif.pfb +0 -0
  1741. package/static/assets/pdfjs/web/standard_fonts/FoxitSerifBold.pfb +0 -0
  1742. package/static/assets/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  1743. package/static/assets/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
  1744. package/static/assets/pdfjs/web/standard_fonts/FoxitSymbol.pfb +0 -0
  1745. package/static/assets/pdfjs/web/standard_fonts/LICENSE_FOXIT +27 -0
  1746. package/static/assets/pdfjs/web/standard_fonts/LICENSE_LIBERATION +102 -0
  1747. package/static/assets/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
  1748. package/static/assets/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  1749. package/static/assets/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
  1750. package/static/assets/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
  1751. package/static/assets/pdfjs/web/viewer.css +6766 -0
  1752. package/static/assets/pdfjs/web/viewer.html +768 -0
  1753. package/static/assets/pdfjs/web/viewer.mjs +17445 -0
  1754. package/static/assets/pdfjs/web/viewer.mjs.map +1 -0
  1755. package/static/assets/pdfjs/web/wasm/LICENSE_OPENJPEG +39 -0
  1756. package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_OPENJPEG +22 -0
  1757. package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_QCMS +22 -0
  1758. package/static/assets/pdfjs/web/wasm/LICENSE_QCMS +21 -0
  1759. package/static/assets/pdfjs/web/wasm/openjpeg.wasm +0 -0
  1760. package/static/assets/pdfjs/web/wasm/openjpeg_nowasm_fallback.js +29 -0
  1761. package/static/assets/pdfjs/web/wasm/qcms_bg.wasm +0 -0
  1762. package/static/assets/protected.png +0 -0
  1763. package/static/chunk-2EBPSJJT.js +1 -0
  1764. package/static/chunk-3V7XYPSJ.js +4 -0
  1765. package/static/chunk-4IYQWOGR.js +1 -0
  1766. package/static/chunk-5RFOYHL3.js +1 -0
  1767. package/static/chunk-7PCJMNDR.js +1 -0
  1768. package/static/chunk-7WRQICEB.js +1 -0
  1769. package/static/chunk-AKM2LQUU.js +1 -0
  1770. package/static/chunk-ATFX6EIO.js +1 -0
  1771. package/static/chunk-ATLT5DK5.js +1 -0
  1772. package/static/chunk-DVHXFWN7.js +1 -0
  1773. package/static/chunk-E27KCFP6.js +24 -0
  1774. package/static/chunk-FPEGN42P.js +564 -0
  1775. package/static/chunk-GAL4ENT6.js +1 -0
  1776. package/static/chunk-GWUCWOVK.js +1 -0
  1777. package/static/chunk-I644MKAO.js +1 -0
  1778. package/static/chunk-IFJD2ISM.js +1 -0
  1779. package/static/chunk-IUUTIYHF.js +1 -0
  1780. package/static/chunk-JXZCNFW7.js +1 -0
  1781. package/static/chunk-MEKYVWV4.js +1 -0
  1782. package/static/chunk-MQZEETHL.js +7 -0
  1783. package/static/chunk-NPLV4M2H.js +1 -0
  1784. package/static/chunk-NU3TPXFY.js +4 -0
  1785. package/static/chunk-O4CXCITB.js +1 -0
  1786. package/static/chunk-OWGR4BYT.js +1 -0
  1787. package/static/chunk-QFRQQ4K3.js +1 -0
  1788. package/static/chunk-RAVRSB6R.js +1 -0
  1789. package/static/chunk-RUNMEQOV.js +1 -0
  1790. package/static/chunk-UGSGMP2I.js +1 -0
  1791. package/static/chunk-UV4UIX6J.js +1 -0
  1792. package/static/chunk-VBD7QTEP.js +1 -0
  1793. package/static/chunk-VBWPPICY.js +1 -0
  1794. package/static/chunk-VQRN7HFP.js +1 -0
  1795. package/static/chunk-WTPZUBNX.js +24 -0
  1796. package/static/chunk-XI72YZ2M.js +1 -0
  1797. package/static/chunk-Z6IHRUVL.js +1 -0
  1798. package/static/chunk-ZVPX26RB.js +1 -0
  1799. package/static/chunk-ZZ3LHYOY.js +1 -0
  1800. package/static/favicon.ico +0 -0
  1801. package/static/index.html +19 -0
  1802. package/static/main-ILCPT3IK.js +10 -0
  1803. package/static/media/videogular-54D7AHHD.woff +0 -0
  1804. package/static/media/videogular-H7MSXT3I.eot +0 -0
  1805. package/static/media/videogular-ULU7CHZC.ttf +0 -0
  1806. package/static/media/videogular-WX5DESMV.svg +29 -0
  1807. package/static/polyfills-GNKGQMRJ.js +2 -0
  1808. package/static/prerendered-routes.json +3 -0
  1809. package/static/scripts-MQMRSPYD.js +30 -0
  1810. package/static/styles-TJJDSCD4.css +1 -0
  1811. package/sync-in-server.js +309 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-manager.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common'\nimport { eq, isNotNull, lte } from 'drizzle-orm'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { ACTION } from '../../../common/constants'\nimport { convertDiffUpdate, diffCollection, differencePermissions } from '../../../common/functions'\nimport type { Entries } from '../../../common/interfaces'\nimport { createSlug, regExpNumberSuffix } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../../infrastructure/context/services/context-manager.service'\nimport { DEFAULT_FILTERS } from '../../files/constants/files'\nimport { FileError } from '../../files/models/file-error'\nimport { dirListFileNames, dirSize, getProps, isPathExists, moveFiles, removeFiles } from '../../files/utils/files'\nimport { LINK_TYPE } from '../../links/constants/links'\nimport { NOTIFICATION_APP, NOTIFICATION_APP_EVENT } from '../../notifications/constants/notifications'\nimport { NotificationContent } from '../../notifications/interfaces/notification-properties.interface'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { CreateOrUpdateShareDto } from '../../shares/dto/create-or-update-share.dto'\nimport type { ShareLink } from '../../shares/interfaces/share-link.interface'\nimport type { ShareProps } from '../../shares/interfaces/share-props.interface'\nimport type { ShareChild } from '../../shares/models/share-child.model'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport { UserModel } from '../../users/models/user.model'\nimport { users } from '../../users/schemas/users.schema'\nimport { UsersQueries } from '../../users/services/users-queries.service'\nimport { CACHE_QUOTA_SPACE_PREFIX, CACHE_QUOTA_TTL, CACHE_QUOTA_USER_PREFIX } from '../constants/cache'\nimport {\n SPACE_ALIAS,\n SPACE_ALL_OPERATIONS,\n SPACE_MAX_DISABLED_DAYS,\n SPACE_OPERATION,\n SPACE_PERSONAL,\n SPACE_REPOSITORY,\n SPACE_ROLE,\n SPACE_SHARES\n} from '../constants/spaces'\nimport { CreateOrUpdateSpaceDto, SpaceMemberDto } from '../dto/create-or-update-space.dto'\nimport { DeleteSpaceDto } from '../dto/delete-space.dto'\nimport { SearchSpaceDto } from '../dto/search-space.dto'\nimport { SpaceQuota } from '../interfaces/space-quota.interface'\nimport { SpaceTrash } from '../interfaces/space-trash.interface'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpaceProps } from '../models/space-props.model'\nimport type { SpaceRootProps } from '../models/space-root-props.model'\nimport { SpaceModel } from '../models/space.model'\nimport type { SpaceRoot } from '../schemas/space-root.interface'\nimport type { Space } from '../schemas/space.interface'\nimport { spaces } from '../schemas/spaces.schema'\nimport { quotaKeyFromSpace } from '../utils/paths'\nimport { haveSpacePermission } from '../utils/permissions'\nimport { SpacesQueries } from './spaces-queries.service'\n\n@Injectable()\nexport class SpacesManager {\n private readonly logger = new Logger(SpacesManager.name)\n\n constructor(\n private readonly contextManager: ContextManager,\n private readonly cache: Cache,\n private readonly spacesQueries: SpacesQueries,\n private readonly usersQueries: UsersQueries,\n private readonly sharesManager: SharesManager,\n private readonly notificationsManager: NotificationsManager\n ) {}\n\n listSpaces(userId: number): Promise<Partial<SpaceProps>[]> {\n return this.spacesQueries.spaces(userId)\n }\n\n spacesWithDetails(userId: number): Promise<SpaceProps[]> {\n return this.spacesQueries.spacesWithDetails(userId)\n }\n\n uniqueRootName(name: string, names: string[]) {\n if (names.find((fName: string) => name.toLowerCase() === fName.toLowerCase())) {\n const nameExtension = path.extname(name)\n const nameWithoutExtension = path.basename(name, nameExtension)\n const originalName = nameWithoutExtension.replace(regExpNumberSuffix, '')\n let count = 1\n let newName = `${originalName}-${count}${nameExtension}`\n while (names.find((fName: string) => newName.toLowerCase() === fName.toLowerCase())) {\n count += 1\n newName = `${originalName}-${count}${nameExtension}`\n }\n return newName\n }\n return null\n }\n\n async spaceEnv(user: UserModel, urlSegments: string[], skipEndpointProtection = false): Promise<SpaceEnv> {\n /* SpaceEnv builder */\n let [repository, spaceAlias, rootAlias, ...paths] = urlSegments\n\n if (\n !repository ||\n (!spaceAlias && repository !== SPACE_REPOSITORY.SHARES) ||\n Object.values(SPACE_REPOSITORY).indexOf(repository as SPACE_REPOSITORY) === -1\n ) {\n throw new Error(`Space path is not valid : ${urlSegments}`)\n }\n\n let space: SpaceEnv\n if (spaceAlias === SPACE_ALIAS.PERSONAL) {\n /* Personal Space (static) */\n if (rootAlias) {\n // there is no root in a personal space\n paths.unshift(rootAlias)\n rootAlias = null\n }\n space = new SpaceEnv(SPACE_PERSONAL, rootAlias, false)\n } else if (repository === SPACE_REPOSITORY.SHARES) {\n if (spaceAlias) {\n /* Share */\n const spacePermissions: Partial<SpaceEnv> = await this.sharesManager.permissions(user, spaceAlias)\n if (spacePermissions) {\n space = new SpaceEnv(spacePermissions, null, false)\n }\n } else {\n /* Shares List (static) */\n space = new SpaceEnv(SPACE_SHARES, null, false)\n }\n } else {\n /* Space */\n if (repository === SPACE_REPOSITORY.TRASH && rootAlias) {\n // there is no root in a trash space\n paths.unshift(rootAlias)\n rootAlias = null\n }\n const spacePermissions: Partial<SpaceEnv> = await this.spacesQueries.permissions(user.id, spaceAlias, rootAlias)\n if (spacePermissions) {\n space = new SpaceEnv(spacePermissions, rootAlias || '')\n }\n }\n if (!space) return null\n try {\n space.setup(user, repository as SPACE_REPOSITORY, rootAlias, paths, urlSegments, skipEndpointProtection)\n await this.setQuotaExceeded(user, space)\n return space\n } catch (e) {\n this.logger.warn(`${this.spaceEnv.name} - *${space.alias}* : ${e}`)\n throw new HttpException(e.message, e instanceof FileError ? e.httpCode : HttpStatus.BAD_REQUEST)\n }\n }\n\n async searchSpaces(userId: number, searchSpaceDto: SearchSpaceDto): Promise<SpaceProps[]> {\n const sps: SpaceProps[] = []\n for (const s of await this.spacesQueries.spaces(userId, true)) {\n if (searchSpaceDto.shareInsidePermission && !haveSpacePermission(s, SPACE_OPERATION.SHARE_INSIDE)) {\n continue\n }\n if (!searchSpaceDto.search || `${s.name} ${s.alias} ${s.description || ''}`.toLowerCase().indexOf(searchSpaceDto.search) > -1) {\n sps.push(s)\n }\n if (sps.length >= searchSpaceDto.limit) {\n break\n }\n }\n return sps\n }\n\n async listSpacesWithPermissions(user: UserModel): Promise<SpaceEnv[]> {\n return Promise.all(\n (await this.spacesQueries.spaces(user.id, true)).map(async (s) => {\n const space = new SpaceEnv(s)\n await this.setQuotaExceeded(user, space)\n return space\n })\n )\n }\n\n async listTrashes(user: UserModel): Promise<SpaceTrash[]> {\n const trashes: SpaceTrash[] = []\n // todo: store 'Personal files' as const somewhere (used in frontend too)\n const personalTrash: SpaceTrash = { id: 0, name: 'Personal files', alias: SPACE_ALIAS.PERSONAL, nb: 0, mtime: 0, ctime: 0 }\n for (const space of [...(await this.listSpaces(user.id)), personalTrash] as SpaceTrash[]) {\n const rPath = space.alias === SPACE_ALIAS.PERSONAL ? user.trashPath : SpaceModel.getTrashPath(space.alias)\n try {\n space.nb = (await fs.readdir(rPath)).filter((f) => !DEFAULT_FILTERS.has(f)).length\n if (space.nb) {\n const stats = await fs.stat(rPath)\n space.mtime = stats.mtime.getTime()\n space.ctime = stats.birthtime.getTime()\n trashes.push(space)\n }\n } catch (e) {\n this.logger.error(`${this.listTrashes.name} - ${e}`)\n }\n }\n return trashes\n }\n\n async getSpace(user: UserModel, spaceId: number): Promise<SpaceProps> {\n const space: SpaceProps = await this.userCanAccessSpace(user.id, spaceId, true)\n if (space.roots?.length && !user.isAdmin) {\n // remove external path if the current user is not an administrator\n for (const root of space.roots) {\n root.externalPath = null\n }\n }\n return space\n }\n\n async createSpace(user: UserModel, createOrUpdateSpaceDto: CreateOrUpdateSpaceDto): Promise<SpaceProps> {\n /* only users with admin space role can create a space */\n // create space\n const space: SpaceProps = new SpaceProps({\n name: createOrUpdateSpaceDto.name,\n alias: await this.uniqueSpaceAlias(createOrUpdateSpaceDto.name, true),\n description: createOrUpdateSpaceDto.description,\n enabled: createOrUpdateSpaceDto.enabled,\n storageQuota: createOrUpdateSpaceDto.storageQuota,\n disabledAt: createOrUpdateSpaceDto.enabled ? null : new Date()\n })\n try {\n space.id = await this.spacesQueries.createSpace(space)\n } catch (e) {\n this.logger.error(`${this.createSpace.name} - unable to create space *${space.alias}* : ${e}`)\n throw new HttpException('Unable to create space', e)\n }\n // create space paths\n await SpaceModel.makePaths(space.alias)\n // add roots\n await this.updateRoots(user, space, space.roots, createOrUpdateSpaceDto.roots, [], [])\n // add members\n await this.updateMembers(user, space, createOrUpdateSpaceDto.members.concat(createOrUpdateSpaceDto.managers))\n // create links after members, user must be a space manager to create links\n await this.sharesManager.createOrUpdateLinksAsMembers(user, space, LINK_TYPE.SPACE, createOrUpdateSpaceDto.links)\n return this.spacesQueries.getSpaceAsManager(user.id, space.id)\n }\n\n async updateSpace(user: UserModel, spaceId: number, createOrUpdateSpaceDto: CreateOrUpdateSpaceDto): Promise<SpaceProps> {\n /* only managers of the space can update it */\n const space: SpaceProps = await this.userCanAccessSpace(user.id, spaceId, true)\n // check & update space info\n const spaceDiffProps: Partial<SpaceProps> = { modifiedAt: new Date() }\n for (const prop of ['name', 'description', 'enabled', 'storageQuota']) {\n if (createOrUpdateSpaceDto[prop] !== space[prop]) {\n spaceDiffProps[prop] = createOrUpdateSpaceDto[prop]\n if (prop === 'name') {\n spaceDiffProps.alias = await this.uniqueSpaceAlias(spaceDiffProps.name, true)\n if (space.alias !== spaceDiffProps.alias) {\n // must move the space to match the new alias\n const spaceLocationWasRenamed: boolean = await this.renameSpaceLocation(space.alias, spaceDiffProps.alias)\n if (!spaceLocationWasRenamed) {\n throw new HttpException('Unable to rename space', HttpStatus.INTERNAL_SERVER_ERROR)\n }\n space.alias = spaceDiffProps.alias\n }\n } else if (prop === 'enabled') {\n spaceDiffProps.disabledAt = spaceDiffProps[prop] ? null : new Date()\n }\n }\n }\n // updates in db\n this.spacesQueries.updateSpace(spaceId, spaceDiffProps).catch((e: Error) => this.logger.error(`${this.updateSpace.name} - ${e}`))\n // checks & updates members\n const linkMembers: SpaceMemberDto[] = await this.sharesManager.createOrUpdateLinksAsMembers(\n user,\n space,\n LINK_TYPE.SPACE,\n createOrUpdateSpaceDto.links\n )\n const rootOwnerIds: number[] = await this.updateMembers(user, space, [\n ...createOrUpdateSpaceDto.members,\n ...createOrUpdateSpaceDto.managers,\n ...linkMembers\n ])\n if (rootOwnerIds.length) {\n // removes the roots of removed members or those no longer having the `share inside` permission\n createOrUpdateSpaceDto.roots = createOrUpdateSpaceDto.roots.filter((r) => rootOwnerIds.indexOf(r.owner.id) === -1)\n }\n // checks & updates roots\n const aliases: string[] = space.roots.map((r) => r.alias)\n const names: string[] = [...(await dirListFileNames(SpaceModel.getFilesPath(space.alias))), ...space.roots.map((r) => r.name)]\n await this.updateRoots(user, space, space.roots, createOrUpdateSpaceDto.roots, aliases, names)\n if (rootOwnerIds.indexOf(user.id) > -1) {\n // current manager was removed\n return null\n } else {\n return this.spacesQueries.getSpaceAsManager(user.id, spaceId)\n }\n }\n\n async deleteSpace(user: UserModel, spaceId: number, deleteSpaceDto?: DeleteSpaceDto) {\n /* only managers of the space can disable it */\n const space: SpaceProps = await this.userCanAccessSpace(user.id, spaceId, true)\n // only admin can delete the space data, managers can only disable the space for 30 days\n const deleteNow: boolean = user.isAdmin && !!deleteSpaceDto?.deleteNow\n try {\n if (deleteNow) {\n await this.sharesManager.deleteAllLinkMembers(spaceId, LINK_TYPE.SPACE)\n }\n await this.deleteOrDisableSpace(space, deleteNow)\n this.logger.log(`${this.deleteSpace.name} - *${space.alias}* (${space.id}) was ${deleteNow ? 'deleted' : 'disabled'}`)\n } catch (e) {\n this.logger.error(`${this.deleteSpace.name} - *${space.alias}* (${space.id}) was not ${deleteNow ? 'deleted' : 'disabled'} : ${e}`)\n throw new HttpException('Unable to delete space', HttpStatus.INTERNAL_SERVER_ERROR)\n }\n }\n\n async getUserRoots(user: UserModel, spaceId: number): Promise<SpaceRootProps[]> {\n /* if user has no permissions on the space an empty array will be returned */\n return this.spacesQueries.getSpaceRoots(spaceId, user.id)\n }\n\n async updateUserRoots(user: UserModel, spaceId: number, userRoots: SpaceRootProps[], addOnly: boolean = false): Promise<SpaceRootProps[]> {\n const space: Partial<SpaceProps> = await this.userCanAccessSpace(user.id, spaceId)\n if (space.role !== SPACE_ROLE.IS_MANAGER && !haveSpacePermission(space, SPACE_OPERATION.SHARE_INSIDE)) {\n this.logger.warn(`is not allowed to share inside on this space : *${space.alias}* (${space.id})`)\n throw new HttpException('You are not allowed to do this action', HttpStatus.FORBIDDEN)\n }\n // current states\n const spaceRoots: SpaceRootProps[] = await this.spacesQueries.getSpaceRoots(spaceId)\n const aliases = spaceRoots.map((r) => r.alias)\n const names = [...(await dirListFileNames(SpaceModel.getFilesPath(space.alias))), ...spaceRoots.map((r) => r.name)]\n // force owner.id on new user roots (owner is optional and required for the next steps)\n userRoots.forEach((r: SpaceRootProps) => (r.owner = { id: user.id }))\n if (addOnly) {\n // short circuit the `updateRoots` function\n // we need to provide all space roots to avoid collisions on aliases and names for new user roots\n const toAdd: SpaceRootProps[] = await this.validateNewRoots(user, space, spaceRoots, userRoots, aliases, names)\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]> = await this.spacesQueries.updateSpaceRoots(\n user.id,\n space.id,\n toAdd,\n [],\n []\n )\n Object.entries(status).forEach(([action, roots]: [ACTION, SpaceRootProps[]]) =>\n this.clearCachePermissionsAndOrNotify(space, action, user, null, roots).catch((e: Error) =>\n this.logger.error(`${this.updateUserRoots.name} - ${e}`)\n )\n )\n return this.getUserRoots(user, spaceId)\n } else {\n const currentUserRoots: SpaceRootProps[] = spaceRoots.filter((r) => r.owner?.id === user.id)\n await this.updateRoots(user, space, currentUserRoots, userRoots, aliases, names)\n return this.spacesQueries.getSpaceRoots(spaceId, user.id)\n }\n }\n\n async uniqueRootAlias(spaceId: number, alias: string, aliasesAndNames: string[], replaceCount = false): Promise<string> {\n /* for some webdav clients the root alias is displayed instead of the file name.\n * This is why a root alias must be unique for files too */\n if (aliasesAndNames.find((fName: string) => alias.toLowerCase() === fName.toLowerCase())) {\n const aliasExtension = path.extname(alias)\n const aliasWithoutExtension = path.basename(alias, aliasExtension)\n const originalAlias = createSlug(aliasWithoutExtension, replaceCount)\n let count = 1\n let newAlias = `${originalAlias}-${count}${aliasExtension}`\n while (await this.spacesQueries.spaceRootExistsForAlias(spaceId, newAlias)) {\n count += 1\n newAlias = `${originalAlias}-${count}${aliasExtension}`\n }\n return newAlias\n }\n return null\n }\n\n async updatePersonalSpacesQuota(forUser?: UserModel) {\n for (const user of await this.usersQueries.selectUsers(\n ['id', 'login', 'storageUsage', 'storageQuota'],\n [lte(users.role, USER_ROLE.USER), ...(forUser ? [eq(users.id, forUser.id)] : [])]\n )) {\n const userPath = UserModel.getHomePath(user.login)\n if (!(await isPathExists(userPath))) {\n this.logger.warn(`${this.updatePersonalSpacesQuota.name} - *${user.login}* home path does not exist`)\n continue\n }\n const [size, errors] = await dirSize(userPath)\n for (const [path, error] of Object.entries(errors)) {\n this.logger.warn(`${this.updatePersonalSpacesQuota.name} - unable to get size for *${user.login}* on ${path} : ${error}`)\n }\n const spaceQuota: SpaceQuota = { storageUsage: size, storageQuota: user.storageQuota }\n this.cache\n .set(`${CACHE_QUOTA_USER_PREFIX}-${user.id}`, spaceQuota, CACHE_QUOTA_TTL)\n .catch((e: Error) => this.logger.error(`${this.updatePersonalSpacesQuota.name} - ${e}`))\n if (user.storageUsage !== spaceQuota.storageUsage) {\n this.logger.log(\n `${this.updatePersonalSpacesQuota.name} - user *${user.login}* (${user.id}) : storage usage updated : ${spaceQuota.storageUsage}`\n )\n await this.usersQueries.updateUserOrGuest(user.id, { storageUsage: spaceQuota.storageUsage })\n }\n }\n }\n\n async updateSpacesQuota(spaceId?: number) {\n for (const space of await this.spacesQueries.selectSpaces(\n ['id', 'alias', 'storageUsage', 'storageQuota'],\n [...(spaceId ? [eq(spaces.id, spaceId)] : [])]\n )) {\n const spacePath = SpaceModel.getHomePath(space.alias)\n if (!(await isPathExists(spacePath))) {\n this.logger.warn(`${this.updateSpacesQuota.name} - *${space.alias}* home path does not exist`)\n continue\n }\n const [size, errors] = await dirSize(spacePath)\n for (const [path, error] of Object.entries(errors)) {\n this.logger.warn(`${this.updateSpacesQuota.name} - unable to get size for *${space.alias}* on ${path} : ${error}`)\n }\n const spaceQuota: SpaceQuota = { storageUsage: size, storageQuota: space.storageQuota }\n this.cache\n .set(`${CACHE_QUOTA_SPACE_PREFIX}-${space.id}`, spaceQuota, CACHE_QUOTA_TTL)\n .catch((e: Error) => this.logger.error(`${this.updateSpacesQuota.name} - ${e}`))\n if (space.storageUsage !== spaceQuota.storageUsage) {\n this.logger.log(`${this.updateSpacesQuota.name} - space *${space.alias}* (${space.id}) : storage usage updated : ${spaceQuota.storageUsage}`)\n await this.spacesQueries.updateSpace(space.id, { storageUsage: spaceQuota.storageUsage })\n }\n }\n }\n\n async deleteExpiredSpaces() {\n /* Removes spaces that have been disabled for more than 30 days */\n for (const space of (await this.spacesQueries.selectSpaces(\n ['id', 'name', 'alias', 'disabledAt'],\n [eq(spaces.enabled, false), isNotNull(spaces.disabledAt)]\n )) as Pick<Space, 'id' | 'name' | 'alias' | 'disabledAt'>[]) {\n const disabled = new Date(space.disabledAt)\n disabled.setDate(disabled.getDate() + SPACE_MAX_DISABLED_DAYS)\n if (new Date() > disabled) {\n try {\n await this.sharesManager.deleteAllLinkMembers(space.id, LINK_TYPE.SPACE)\n await this.deleteOrDisableSpace(space, true)\n this.logger.log(`${this.deleteExpiredSpaces.name} - space *${space.alias}* (${space.id}) was deleted`)\n } catch (e) {\n this.logger.error(`${this.deleteExpiredSpaces.name} - space *${space.alias}* (${space.id}) was not deleted : ${e}`)\n }\n }\n }\n }\n\n async listSpaceShares(user: UserModel, spaceId: number): Promise<ShareChild[]> {\n if (await this.userIsSpaceManager(user, spaceId)) {\n return this.sharesManager.listSpaceShares(spaceId)\n }\n }\n\n async getSpaceShare(user: UserModel, spaceId: number, shareId: number): Promise<ShareProps> {\n if (await this.userIsSpaceManager(user, spaceId, shareId)) {\n return this.sharesManager.getShareWithMembers(user, shareId, true)\n }\n }\n\n async updateSpaceShare(user: UserModel, spaceId: number, shareId: number, createOrUpdateShareDto: CreateOrUpdateShareDto): Promise<ShareProps> {\n if (await this.userIsSpaceManager(user, spaceId, shareId)) {\n return this.sharesManager.updateShare(user, shareId, createOrUpdateShareDto, true)\n }\n }\n\n async deleteSpaceShare(user: UserModel, spaceId: number, shareId: number): Promise<void> {\n if (await this.userIsSpaceManager(user, spaceId, shareId)) {\n return this.sharesManager.deleteShare(user, shareId, true)\n }\n }\n\n async getSpaceShareLink(user: UserModel, spaceId: number, shareId: number): Promise<ShareLink> {\n if (await this.userIsSpaceManager(user, spaceId, shareId)) {\n return this.sharesManager.getShareLink(user, shareId, true)\n }\n }\n\n private async updateMembers(user: UserModel, space: SpaceProps, currentMembers: SpaceMemberDto[]): Promise<number[]> {\n if (space.members.length === 0 && currentMembers.length === 0) {\n return\n }\n // diff\n const [add, update, remove]: [SpaceMemberDto[], Record<string | 'object', { old: any; new: any } | SpaceMemberDto>[], SpaceMemberDto[]] =\n diffCollection(space.members, currentMembers, ['permissions', 'spaceRole'], ['id', 'type'])\n\n // check members whitelists\n let toAdd: SpaceMemberDto[] = []\n if (add.length) {\n const [userIdsWhitelist, groupIdsWhitelist] = await Promise.all([\n this.usersQueries.usersWhitelist(user.id),\n this.usersQueries.groupsWhitelist(user.id)\n ])\n toAdd = add.filter((m) => {\n if (\n ((m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST) && !m.linkId && userIdsWhitelist.indexOf(m.id) === -1) ||\n ((m.type === MEMBER_TYPE.GROUP || m.type === MEMBER_TYPE.PGROUP) && groupIdsWhitelist.indexOf(m.id) === -1)\n ) {\n this.logger.warn(\n `${this.updateMembers.name} - cannot add ${m.type} (${m.id}) to space *${space.alias}* (${space.id}) : not in the members whitelist`\n )\n return false\n }\n return true\n })\n }\n\n // filter links\n const toRemove: SpaceMemberDto[] = remove.filter((m) => !m.linkId)\n // do remove links\n this.sharesManager.deleteLinkMembers(remove.filter((m) => !!m.linkId)).catch((e: Error) => this.logger.error(`${this.updateMembers.name} - ${e}`))\n // do update members\n const status: Record<\n Exclude<ACTION, ACTION.DELETE_PERMANENTLY>,\n {\n groupIds: number[]\n userIds: number[]\n }\n > = await this.spacesQueries.updateMembers(space.id, toAdd, convertDiffUpdate(update), toRemove)\n\n // lists deleted and updated members as potential share or space roots owners\n const [rmShareOwners, upShareOwners, rmRootOwners]: [\n SpaceMemberDto[],\n {\n object: SpaceMemberDto\n rmPermissions: SPACE_OPERATION[]\n }[],\n number[]\n ] = [[], [], []]\n\n for (const [action, members] of Object.entries(status) as Entries<typeof status>) {\n if (!members.userIds.length && !members.groupIds.length) continue\n if (action === ACTION.DELETE) {\n // stores the removed members who might own shares created from the current space\n rmShareOwners.push(\n ...toRemove.filter(\n (m) =>\n ((m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST) && members.userIds.indexOf(m.id) > -1) ||\n ((m.type === MEMBER_TYPE.GROUP || m.type === MEMBER_TYPE.PGROUP) && members.groupIds.indexOf(m.id) > -1)\n )\n )\n // stores ids of removed members that might have space roots\n rmRootOwners.push(...members.userIds)\n } else if (action === ACTION.UPDATE) {\n // stores permissions updates and members who might own shares created from the current space\n // ignore space managers (they have all permissions)\n for (const m of update as {\n object: SpaceMemberDto\n permissions?: { old: string; new: string }\n spaceRole?: { old: number; new: number }\n }[]) {\n if (\n ((m.object.type === MEMBER_TYPE.USER || m.object.type === MEMBER_TYPE.GUEST) &&\n m.object.spaceRole !== SPACE_ROLE.IS_MANAGER &&\n members.userIds.indexOf(m.object.id) > -1) ||\n ((m.object.type === MEMBER_TYPE.GROUP || m.object.type === MEMBER_TYPE.PGROUP) && members.groupIds.indexOf(m.object.id) > -1)\n ) {\n // special case, the manager was moved to members without permissions change\n if (!m.permissions && m.spaceRole.new === SPACE_ROLE.IS_MEMBER) {\n m.permissions = { old: SPACE_ALL_OPERATIONS, new: m.object.permissions }\n }\n // `share inside` permission is only used for spaces\n const diffPermissions = differencePermissions(m.permissions.old, m.permissions.new).filter((p) => p !== SPACE_OPERATION.SHARE_INSIDE)\n if (diffPermissions.length) {\n upShareOwners.push({ object: m.object, rmPermissions: diffPermissions as SPACE_OPERATION[] })\n }\n }\n }\n }\n // clear cache &|| notify\n this.onSpaceActionForMembers(space, action, members, user).catch((e: Error) => this.logger.error(`${this.updateMembers.name} - ${e}`))\n }\n // do updates\n // remove or update potential shares\n this.sharesManager\n .updateSharesFromSpace(space.id, currentMembers, rmShareOwners, upShareOwners)\n .catch((e: Error) => this.logger.error(`${this.updateMembers.name} - ${e}`))\n // return potential root owner ids\n return rmRootOwners\n }\n\n private async updateRoots(\n user: UserModel,\n space: Partial<SpaceProps>,\n curRoots: SpaceRootProps[],\n newRoots: SpaceRootProps[],\n aliases: string[],\n names: string[]\n ) {\n // diff\n const [add, toUpdate, toRemove]: [\n SpaceRootProps[],\n Record<\n string | 'object',\n | {\n old: any\n new: any\n }\n | SpaceRootProps\n | any\n >[],\n SpaceRootProps[]\n ] = diffCollection(curRoots, newRoots, ['name', 'alias', 'permissions'])\n\n // update\n for (const props of toUpdate) {\n if ('alias' in props) {\n props.alias.new = (await this.uniqueRootAlias(space.id, props.alias.new, aliases.concat(names), true)) || props.alias.new\n // remove from space cache permissions\n this.spacesQueries\n .clearCachePermissions(space.alias, [props.alias.old, props.alias.new])\n .catch((e: Error) => this.logger.error(`${this.updateRoots.name} - ${e}`))\n // update aliases list for next roots\n aliases.push(props.alias.new)\n }\n if ('name' in props) {\n props.name.new = this.uniqueRootName(props.name.new, names) || props.name.new\n // update names list for next roots\n names.push(props.name.new)\n }\n }\n\n // format actions\n const toAdd = await this.validateNewRoots(user, space, curRoots, add, aliases, names)\n\n // remove a root implies that all shares with a reference to root.id will be deleted in cascade\n // however, it is \"cleaner\" to warn users about the deletion of these shares and to clear the permission caches before the cascade deletion\n // it must be assumed that the deletion and modifications of space roots will be successful\n const [rmRoots, rmRootPermissions]: [\n SpaceRoot['id'][],\n {\n id: SpaceRoot['id']\n rmPermissions: SPACE_OPERATION[]\n }[]\n ] = [\n toRemove.map((r) => r.id),\n (toUpdate as any).reduce((acc: typeof rmRootPermissions, r: any): typeof rmRootPermissions => {\n if (r.permissions !== undefined) {\n const diffPermissions = differencePermissions(r.permissions.old, r.permissions.new) as SPACE_OPERATION[]\n if (diffPermissions.length) {\n acc.push({ id: r.object.id, rmPermissions: diffPermissions })\n }\n }\n return acc\n }, [])\n ]\n // do share updates\n await this.sharesManager.updateSharesFromSpaceRoots(space.id, rmRoots, rmRootPermissions)\n\n // do root updates\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]> = await this.spacesQueries.updateSpaceRoots(\n user.id,\n space.id,\n toAdd,\n convertDiffUpdate(toUpdate),\n toRemove\n )\n Object.entries(status).forEach(([action, roots]: [ACTION, SpaceRootProps[]]) =>\n this.clearCachePermissionsAndOrNotify(space, action, user, null, roots).catch((e: Error) =>\n this.logger.error(`${this.updateRoots.name} - ${e}`)\n )\n )\n }\n\n private async validateNewRoots(\n user: UserModel,\n space: Partial<SpaceProps>,\n curRoots: SpaceRootProps[],\n newRoots: SpaceRootProps[],\n aliases: string[],\n names: string[]\n ): Promise<SpaceRootProps[]> {\n const toAdd: SpaceRootProps[] = []\n for (const r of newRoots) {\n if (r.externalPath && !user.isAdmin) {\n this.logger.warn(`ignore new root *${r.alias}* (${r.externalPath}) : adding an external path requires the admin role`)\n continue\n }\n const rPath = r.externalPath || path.join(user.filesPath, r.file.path)\n if (!(await isPathExists(rPath))) {\n this.logger.warn(`ignore new root *${r.alias}* (${r.file.path}) : *${rPath}* does not exist`)\n continue\n }\n // check if a parent exists for an externalPath or if the file (or parent) is already anchored\n let rExists: SpaceRootProps\n if (r.externalPath) {\n rExists = curRoots.find((cr) => cr.externalPath && r.externalPath.startsWith(cr.externalPath))\n } else {\n rExists = curRoots.find(\n (cr) => cr.file?.id === r.file.id || (cr.owner?.id === r.owner.id && cr.file?.path && r.file.path.startsWith(cr.file.path))\n )\n }\n if (rExists) {\n this.logger.warn(`ignore new root *${r.alias}* (${r.externalPath || r.file.path}) (${r.file?.id}) : parent or file already exists in roots`)\n continue\n }\n // keep the file id (maybe already in db)\n if (!r.externalPath) {\n r.file = { ...(await getProps(rPath, r.file.path)), id: r.file.id }\n }\n r.alias = (await this.uniqueRootAlias(space.id, r.alias, aliases.concat(names), true)) || r.alias\n // update aliases list for next roots\n aliases.push(r.alias)\n r.name = this.uniqueRootName(r.name, names) || r.name\n // update names list for next roots\n names.push(r.name)\n // reset id\n r.id = 0\n toAdd.push(r)\n }\n return toAdd\n }\n\n private async deleteOrDisableSpace(space: Partial<SpaceProps>, deleteNow: boolean = false) {\n if (deleteNow) {\n // clear cache &|| notify\n const memberIds: { groupIds: number[]; userIds: number[] } = await this.spacesQueries.getSpaceMemberIds(space.id)\n this.onSpaceActionForMembers(space, ACTION.DELETE_PERMANENTLY, memberIds).catch((e: Error) =>\n this.logger.error(`${this.deleteOrDisableSpace.name} - ${e}`)\n )\n // remove all shares related to the space\n await this.sharesManager.removeSharesFromSpace(space.id)\n }\n await this.spacesQueries.deleteSpace(space.id, deleteNow)\n if (deleteNow) {\n this.cache.del(`${CACHE_QUOTA_SPACE_PREFIX}-${space.id}`).catch((e: Error) => this.logger.error(`${this.deleteOrDisableSpace.name} - ${e}`))\n await this.deleteSpaceLocation(space.alias)\n }\n }\n\n private async deleteSpaceLocation(spaceAlias: string) {\n const spaceLocation = SpaceModel.getHomePath(spaceAlias)\n if (await isPathExists(spaceLocation)) {\n await removeFiles(spaceLocation)\n this.logger.warn(`${this.deleteSpaceLocation.name} - space *${spaceAlias}* location was deleted`)\n } else {\n this.logger.warn(`${this.deleteSpaceLocation.name} - space *${spaceAlias}* location does not exist : ${spaceLocation}`)\n }\n }\n\n private async renameSpaceLocation(oldSpaceAlias: string, newSpaceAlias: string): Promise<boolean> {\n const currentSpaceLocation: string = SpaceModel.getHomePath(oldSpaceAlias)\n if (await isPathExists(currentSpaceLocation)) {\n const newSpaceLocation: string = SpaceModel.getHomePath(newSpaceAlias)\n if (await isPathExists(newSpaceLocation)) {\n this.logger.warn(`${this.renameSpaceLocation.name} - *${newSpaceAlias}* home path already exists : ${newSpaceLocation}`)\n return false\n } else {\n try {\n await moveFiles(currentSpaceLocation, newSpaceLocation)\n return true\n } catch (e) {\n // try to restore\n await moveFiles(newSpaceLocation, currentSpaceLocation, true)\n this.logger.error(\n `${this.renameSpaceLocation.name} - unable to rename space location from *${currentSpaceLocation}* to *${newSpaceLocation}* : ${e}`\n )\n return false\n }\n }\n } else {\n this.logger.warn(`${this.renameSpaceLocation.name} - *${oldSpaceAlias}* space location does not exist : ${currentSpaceLocation}`)\n return false\n }\n }\n\n private async uniqueSpaceAlias(name: string, replaceCount = false): Promise<string> {\n let alias = createSlug(name, replaceCount)\n let count = 0\n // Personal space name is reserved\n if (alias === SPACE_ALIAS.PERSONAL) {\n count += 1\n alias = `${name}-${count}`\n }\n while (await this.spacesQueries.spaceExistsForAlias(alias)) {\n count += 1\n alias = `${name}-${count}`\n }\n return alias\n }\n\n private async userCanAccessSpace(userId: number, spaceId: number, asManager: true): Promise<SpaceProps>\n private async userCanAccessSpace(userId: number, spaceId: number, asManager?: false): Promise<Partial<SpaceProps>>\n private async userCanAccessSpace(userId: number, spaceId: number, asManager: boolean = false): Promise<Partial<SpaceProps>> {\n if (asManager) {\n // Get all space details if user is a manager\n const space: SpaceProps = await this.spacesQueries.getSpaceAsManager(userId, spaceId)\n if (!space) {\n this.logger.warn(`space (${spaceId}) not found or not authorized for user (${userId})`)\n throw new HttpException('Not authorized', HttpStatus.FORBIDDEN)\n }\n return space\n } else {\n const [space]: SpaceProps[] = await this.spacesQueries.spaces(userId, true, spaceId)\n if (!space) {\n this.logger.warn(`space (${spaceId}) not found or not authorized for user (${userId})`)\n throw new HttpException('Space not found', HttpStatus.NOT_FOUND)\n }\n return space\n }\n }\n\n private async userIsSpaceManager(user: UserModel, spaceId: number, shareId?: number): Promise<boolean> {\n if (!(await this.spacesQueries.userIsSpaceManager(user.id, spaceId, shareId))) {\n this.logger.warn(`space (${spaceId}) not found or not authorized for user (${user.id})`)\n throw new HttpException('Not authorized', HttpStatus.FORBIDDEN)\n }\n return true\n }\n\n private async setQuotaExceeded(user: UserModel, space: SpaceEnv) {\n /* extract quota from spaces|shares|roots */\n if (space.inSharesList || (space.inSharesRepository && space.root?.externalPath)) {\n return\n }\n const cacheQuotaKey = quotaKeyFromSpace(user.id, space)\n if (!cacheQuotaKey) {\n this.logger.verbose(`${this.setQuotaExceeded.name} - quota was ignored for space : *${space.alias}* (${space.id})`)\n return\n }\n let quota: SpaceQuota = await this.cache.get(cacheQuotaKey)\n if (!quota) {\n // the quota scheduler has not started yet or the cache has been cleared\n if (space.inPersonalSpace) {\n await this.updatePersonalSpacesQuota(user)\n } else {\n await this.updateSpacesQuota(space.id)\n }\n quota = await this.cache.get(cacheQuotaKey)\n }\n if (quota) {\n space.storageUsage = quota.storageUsage\n space.storageQuota = quota.storageQuota\n space.quotaIsExceeded = quota.storageQuota !== null && quota.storageUsage >= quota.storageQuota\n } else {\n this.logger.verbose(`${this.setQuotaExceeded.name} - quota not found for space : *${space.alias}* (${space.id})`)\n }\n }\n\n private async onSpaceActionForMembers(\n space: Partial<SpaceProps>,\n action: ACTION,\n members: {\n groupIds: number[]\n userIds: number[]\n },\n user?: UserModel\n ) {\n this.clearCachePermissionsAndOrNotify(\n space,\n action,\n user,\n Array.from(new Set([...(await this.usersQueries.allUserIdsFromGroupsAndSubGroups(members.groupIds)), ...members.userIds])).filter(\n (uid) => uid !== user?.id\n )\n ).catch((e: Error) => this.logger.error(`${this.onSpaceActionForMembers.name} - ${e}`))\n }\n\n private async clearCachePermissionsAndOrNotify(\n space: Partial<SpaceProps>,\n action: ACTION,\n user?: UserModel,\n memberIds?: number[],\n roots?: SpaceRootProps[]\n ): Promise<void> {\n if (memberIds?.length) {\n // clear permissions for space members\n if (action === ACTION.DELETE_PERMANENTLY) {\n this.logger.verbose(`${this.clearCachePermissionsAndOrNotify.name} - space:${space.alias} ${action}`)\n this.spacesQueries\n .clearCachePermissions(space.alias)\n .catch((e: Error) => this.logger.error(`${this.clearCachePermissionsAndOrNotify.name} - ${e}`))\n } else {\n // update space members cache\n this.logger.verbose(`${this.clearCachePermissionsAndOrNotify.name} - space:${space.alias} ${action} members:${JSON.stringify(memberIds)}`)\n this.spacesQueries\n .clearCachePermissions(space.alias, undefined, memberIds)\n .catch((e: Error) => this.logger.error(`${this.clearCachePermissionsAndOrNotify.name} - ${e}`))\n }\n // notify\n if (action !== ACTION.UPDATE) {\n // notify the members who have joined or left the space\n const notification: NotificationContent = {\n app: NOTIFICATION_APP.SPACES,\n event: NOTIFICATION_APP_EVENT.SPACES[action],\n element: space.name,\n url: ''\n }\n this.notificationsManager\n .create(memberIds, notification, {\n currentUrl: this.contextManager.get('headerOriginUrl'),\n action: action\n })\n .catch((e: Error) => this.logger.error(`${this.clearCachePermissionsAndOrNotify.name} - ${e}`))\n }\n } else if (roots?.length) {\n // clear permissions for space roots\n const rootAliases: string[] = roots.map((r) => r.alias)\n this.logger.verbose(`${this.clearCachePermissionsAndOrNotify.name} - space:${space.alias} ${action} roots:${JSON.stringify(rootAliases)}`)\n if (action !== ACTION.ADD) {\n this.spacesQueries\n .clearCachePermissions(space.alias, rootAliases)\n .catch((e: Error) => this.logger.error(`${this.clearCachePermissionsAndOrNotify.name} - ${e}`))\n }\n // notify\n if (action !== ACTION.UPDATE) {\n // notify the space members that a new root was anchored / unanchored\n const spaceMembers = await this.spacesQueries.getSpaceMemberIds(space.id)\n const spaceUserIds = Array.from(\n new Set([...(await this.usersQueries.allUserIdsFromGroupsAndSubGroups(spaceMembers.groupIds)), ...spaceMembers.userIds])\n ).filter((uid) => uid !== user?.id)\n if (!spaceUserIds.length) {\n return\n }\n for (const r of roots) {\n const notification: NotificationContent = {\n app: NOTIFICATION_APP.SPACE_ROOTS,\n event: NOTIFICATION_APP_EVENT.SPACE_ROOTS[action],\n element: r.name,\n url: `${SPACE_REPOSITORY.FILES}/${space.name}`\n }\n this.notificationsManager\n .create(spaceUserIds, notification, {\n currentUrl: this.contextManager.get('headerOriginUrl'),\n author: user,\n action: action\n })\n .catch((e: Error) => this.logger.error(`${this.clearCachePermissionsAndOrNotify.name} - ${e}`))\n }\n }\n }\n }\n}\n"],"names":["SpacesManager","listSpaces","userId","spacesQueries","spaces","spacesWithDetails","uniqueRootName","name","names","find","fName","toLowerCase","nameExtension","path","extname","nameWithoutExtension","basename","originalName","replace","regExpNumberSuffix","count","newName","spaceEnv","user","urlSegments","skipEndpointProtection","repository","spaceAlias","rootAlias","paths","SPACE_REPOSITORY","SHARES","Object","values","indexOf","Error","space","SPACE_ALIAS","PERSONAL","unshift","SpaceEnv","SPACE_PERSONAL","spacePermissions","sharesManager","permissions","SPACE_SHARES","TRASH","id","setup","setQuotaExceeded","e","logger","warn","alias","HttpException","message","FileError","httpCode","HttpStatus","BAD_REQUEST","searchSpaces","searchSpaceDto","sps","s","shareInsidePermission","haveSpacePermission","SPACE_OPERATION","SHARE_INSIDE","search","description","push","length","limit","listSpacesWithPermissions","Promise","all","map","listTrashes","trashes","personalTrash","nb","mtime","ctime","rPath","trashPath","SpaceModel","getTrashPath","fs","readdir","filter","f","DEFAULT_FILTERS","has","stats","stat","getTime","birthtime","error","getSpace","spaceId","userCanAccessSpace","roots","isAdmin","root","externalPath","createSpace","createOrUpdateSpaceDto","SpaceProps","uniqueSpaceAlias","enabled","storageQuota","disabledAt","Date","makePaths","updateRoots","updateMembers","members","concat","managers","createOrUpdateLinksAsMembers","LINK_TYPE","SPACE","links","getSpaceAsManager","updateSpace","spaceDiffProps","modifiedAt","prop","spaceLocationWasRenamed","renameSpaceLocation","INTERNAL_SERVER_ERROR","catch","linkMembers","rootOwnerIds","r","owner","aliases","dirListFileNames","getFilesPath","deleteSpace","deleteSpaceDto","deleteNow","deleteAllLinkMembers","deleteOrDisableSpace","log","getUserRoots","getSpaceRoots","updateUserRoots","userRoots","addOnly","role","SPACE_ROLE","IS_MANAGER","FORBIDDEN","spaceRoots","forEach","toAdd","validateNewRoots","status","updateSpaceRoots","entries","action","clearCachePermissionsAndOrNotify","currentUserRoots","uniqueRootAlias","aliasesAndNames","replaceCount","aliasExtension","aliasWithoutExtension","originalAlias","createSlug","newAlias","spaceRootExistsForAlias","updatePersonalSpacesQuota","forUser","usersQueries","selectUsers","lte","users","USER_ROLE","USER","eq","userPath","UserModel","getHomePath","login","isPathExists","size","errors","dirSize","spaceQuota","storageUsage","cache","set","CACHE_QUOTA_USER_PREFIX","CACHE_QUOTA_TTL","updateUserOrGuest","updateSpacesQuota","selectSpaces","spacePath","CACHE_QUOTA_SPACE_PREFIX","deleteExpiredSpaces","isNotNull","disabled","setDate","getDate","SPACE_MAX_DISABLED_DAYS","listSpaceShares","userIsSpaceManager","getSpaceShare","shareId","getShareWithMembers","updateSpaceShare","createOrUpdateShareDto","updateShare","deleteSpaceShare","deleteShare","getSpaceShareLink","getShareLink","currentMembers","add","update","remove","diffCollection","userIdsWhitelist","groupIdsWhitelist","usersWhitelist","groupsWhitelist","m","type","MEMBER_TYPE","GUEST","linkId","GROUP","PGROUP","toRemove","deleteLinkMembers","convertDiffUpdate","rmShareOwners","upShareOwners","rmRootOwners","userIds","groupIds","ACTION","DELETE","UPDATE","object","spaceRole","new","IS_MEMBER","old","SPACE_ALL_OPERATIONS","diffPermissions","differencePermissions","p","rmPermissions","onSpaceActionForMembers","updateSharesFromSpace","curRoots","newRoots","toUpdate","props","clearCachePermissions","rmRoots","rmRootPermissions","reduce","acc","undefined","updateSharesFromSpaceRoots","join","filesPath","file","rExists","cr","startsWith","getProps","memberIds","getSpaceMemberIds","DELETE_PERMANENTLY","removeSharesFromSpace","del","deleteSpaceLocation","spaceLocation","removeFiles","oldSpaceAlias","newSpaceAlias","currentSpaceLocation","newSpaceLocation","moveFiles","spaceExistsForAlias","asManager","NOT_FOUND","inSharesList","inSharesRepository","cacheQuotaKey","quotaKeyFromSpace","verbose","quota","get","inPersonalSpace","quotaIsExceeded","Array","from","Set","allUserIdsFromGroupsAndSubGroups","uid","JSON","stringify","notification","app","NOTIFICATION_APP","SPACES","event","NOTIFICATION_APP_EVENT","element","url","notificationsManager","create","currentUrl","contextManager","rootAliases","ADD","spaceMembers","spaceUserIds","SPACE_ROOTS","FILES","author","Logger"],"mappings":"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"}
@@ -0,0 +1,269 @@
1
+ /*
2
+ * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
+ * This file is part of Sync-in | The open source file sync and share solution
4
+ * See the LICENSE file for licensing details
5
+ */ "use strict";
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ const _config = require("@nestjs/config");
10
+ const _testing = require("@nestjs/testing");
11
+ const _promises = /*#__PURE__*/ _interop_require_default(require("node:fs/promises"));
12
+ const _nodeos = /*#__PURE__*/ _interop_require_default(require("node:os"));
13
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
14
+ const _functions = require("../../../common/functions");
15
+ const _configenvironment = require("../../../configuration/config.environment");
16
+ const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
17
+ const _contextmanagerservice = require("../../../infrastructure/context/services/context-manager.service");
18
+ const _constants = require("../../../infrastructure/database/constants");
19
+ const _fileerror = require("../../files/models/file-error");
20
+ const _filesqueriesservice = require("../../files/services/files-queries.service");
21
+ const _files = require("../../files/utils/files");
22
+ const _linksqueriesservice = require("../../links/services/links-queries.service");
23
+ const _notificationsmanagerservice = require("../../notifications/services/notifications-manager.service");
24
+ const _sharesmanagerservice = require("../../shares/services/shares-manager.service");
25
+ const _sharesqueriesservice = require("../../shares/services/shares-queries.service");
26
+ const _member = require("../../users/constants/member");
27
+ const _usermodel = require("../../users/models/user.model");
28
+ const _usersqueriesservice = require("../../users/services/users-queries.service");
29
+ const _test = require("../../users/utils/test");
30
+ const _spaces = require("../constants/spaces");
31
+ const _createorupdatespacedto = require("../dto/create-or-update-space.dto");
32
+ const _spacerootsdto = require("../dto/space-roots.dto");
33
+ const _spacemodel = require("../models/space.model");
34
+ const _paths = require("../utils/paths");
35
+ const _spacesmanagerservice = require("./spaces-manager.service");
36
+ const _spacesqueriesservice = require("./spaces-queries.service");
37
+ function _interop_require_default(obj) {
38
+ return obj && obj.__esModule ? obj : {
39
+ default: obj
40
+ };
41
+ }
42
+ describe(_spacesmanagerservice.SpacesManager.name, ()=>{
43
+ let filesConfig;
44
+ let spacesManager;
45
+ let spacesQueries;
46
+ let userTest;
47
+ const spaceAlias = 'project';
48
+ const tmpDir = _nodeos.default.tmpdir();
49
+ beforeAll(async ()=>{
50
+ const module = await _testing.Test.createTestingModule({
51
+ imports: [
52
+ await _config.ConfigModule.forRoot({
53
+ load: [
54
+ _configenvironment.exportConfiguration
55
+ ],
56
+ isGlobal: true
57
+ })
58
+ ],
59
+ providers: [
60
+ {
61
+ provide: _constants.DB_TOKEN_PROVIDER,
62
+ useValue: {}
63
+ },
64
+ {
65
+ provide: _cacheservice.Cache,
66
+ useValue: {
67
+ get: ()=>null
68
+ }
69
+ },
70
+ {
71
+ provide: _contextmanagerservice.ContextManager,
72
+ useValue: {}
73
+ },
74
+ {
75
+ provide: _notificationsmanagerservice.NotificationsManager,
76
+ useValue: {}
77
+ },
78
+ _spacesmanagerservice.SpacesManager,
79
+ _spacesqueriesservice.SpacesQueries,
80
+ _usersqueriesservice.UsersQueries,
81
+ _sharesmanagerservice.SharesManager,
82
+ _sharesqueriesservice.SharesQueries,
83
+ _filesqueriesservice.FilesQueries,
84
+ _linksqueriesservice.LinksQueries
85
+ ]
86
+ }).compile();
87
+ module.useLogger([
88
+ 'fatal'
89
+ ]);
90
+ filesConfig = module.get(_config.ConfigService).get('applications.files');
91
+ spacesManager = module.get(_spacesmanagerservice.SpacesManager);
92
+ spacesQueries = module.get(_spacesqueriesservice.SpacesQueries);
93
+ spacesManager['setQuotaExceeded'] = jest.fn();
94
+ userTest = new _usermodel.UserModel((0, _test.generateUserTest)());
95
+ // todo: validate shares, permissions
96
+ });
97
+ afterAll(async ()=>{
98
+ await (0, _files.removeFiles)(userTest.homePath);
99
+ await (0, _files.removeFiles)(_spacemodel.SpaceModel.getHomePath(spaceAlias));
100
+ });
101
+ it('should be defined', ()=>{
102
+ expect(filesConfig).toBeDefined();
103
+ expect(spacesManager).toBeDefined();
104
+ expect(userTest).toBeDefined();
105
+ });
106
+ it('should prevent path traversal', ()=>{
107
+ const createOrUpdateSpaceDto = (0, _functions.transformAndValidate)(_createorupdatespacedto.CreateOrUpdateSpaceDto, {
108
+ name: '../../../foo/..bar',
109
+ alias: '../../bar.',
110
+ managers: [
111
+ (0, _functions.transformAndValidate)(_createorupdatespacedto.SpaceMemberDto, {
112
+ id: 0,
113
+ type: _member.MEMBER_TYPE.USER
114
+ })
115
+ ]
116
+ });
117
+ expect(createOrUpdateSpaceDto.name).toEqual('foobar');
118
+ expect(createOrUpdateSpaceDto.alias).toEqual('bar');
119
+ const spaceRootFileDto = (0, _functions.transformAndValidate)(_spacerootsdto.SpaceRootFileDto, {
120
+ id: 0,
121
+ path: '../../foo/bar'
122
+ });
123
+ expect(spaceRootFileDto.path).toEqual('foo/bar');
124
+ const spaceRootFileDto2 = (0, _functions.transformAndValidate)(_spacerootsdto.SpaceRootFileDto, {
125
+ id: 0,
126
+ path: `${_spaces.SPACE_REPOSITORY.FILES}/${_spaces.SPACE_ALIAS.PERSONAL}/../../../foo/bar`
127
+ });
128
+ expect(spaceRootFileDto2.path).toEqual('foo/bar');
129
+ });
130
+ it('should validate the permissions on personal & shares space', async ()=>{
131
+ const personalSpace = await spacesManager.spaceEnv(userTest, [
132
+ 'files',
133
+ _spaces.SPACE_ALIAS.PERSONAL
134
+ ]);
135
+ expect(personalSpace.envPermissions).toBe(Object.values(_spaces.SPACE_OPERATION).filter((p)=>p !== _spaces.SPACE_OPERATION.DELETE).join(_spaces.SPACE_PERMS_SEP));
136
+ const sharesSpace = await spacesManager.spaceEnv(userTest, [
137
+ 'shares'
138
+ ]);
139
+ expect(sharesSpace.envPermissions).toBe('');
140
+ });
141
+ it("should validate (or not) the user's personal space (files & trash repositories)", async ()=>{
142
+ for (const repository of [
143
+ _spaces.SPACE_REPOSITORY.FILES,
144
+ _spaces.SPACE_REPOSITORY.TRASH
145
+ ]){
146
+ const spaceEnv = await spacesManager.spaceEnv(userTest, [
147
+ repository,
148
+ _spaces.SPACE_ALIAS.PERSONAL,
149
+ 'foo',
150
+ 'bar'
151
+ ]);
152
+ expect(spaceEnv.envPermissions).toBe(_spaces.SPACE_ALL_OPERATIONS);
153
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).rejects.toThrow();
154
+ const repoPath = _usermodel.UserModel.getRepositoryPath(userTest.login, spaceEnv.inTrashRepository);
155
+ await _promises.default.mkdir(_nodepath.default.join(repoPath, 'foo', 'bar'), {
156
+ recursive: true
157
+ });
158
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).resolves.toBeUndefined();
159
+ await (0, _files.removeFiles)(_nodepath.default.join(repoPath, 'foo', 'bar'));
160
+ try {
161
+ await (0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath);
162
+ } catch (e) {
163
+ expect(e).toBeInstanceOf(_fileerror.FileError);
164
+ }
165
+ }
166
+ });
167
+ it(`should validate (or not) the space : ${spaceAlias} (files & trash repositories)`, async ()=>{
168
+ const permissions = {
169
+ id: 1,
170
+ alias: spaceAlias,
171
+ name: spaceAlias,
172
+ enabled: true,
173
+ permissions: 'a:d:m:so',
174
+ role: 0
175
+ };
176
+ spacesQueries.permissions = jest.fn().mockReturnValue(permissions);
177
+ for (const repository of [
178
+ _spaces.SPACE_REPOSITORY.FILES,
179
+ _spaces.SPACE_REPOSITORY.TRASH
180
+ ]){
181
+ const spaceEnv = await spacesManager.spaceEnv(userTest, [
182
+ repository,
183
+ spaceAlias,
184
+ 'foo',
185
+ 'bar'
186
+ ]);
187
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).rejects.toThrow();
188
+ const repoPath = _spacemodel.SpaceModel.getRepositoryPath(spaceAlias, spaceEnv.inTrashRepository);
189
+ await _promises.default.mkdir(_nodepath.default.join(repoPath, spaceEnv.root.alias, ...spaceEnv.paths), {
190
+ recursive: true
191
+ });
192
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).resolves.toBeUndefined();
193
+ await (0, _files.removeFiles)(_nodepath.default.join(repoPath, spaceEnv.root.alias, ...spaceEnv.paths));
194
+ }
195
+ });
196
+ it(`should validate (or not) the space : ${spaceAlias} with a root (an external dir)`, async ()=>{
197
+ const permissions = {
198
+ id: 0,
199
+ alias: spaceAlias,
200
+ name: spaceAlias,
201
+ permissions: _spaces.SPACE_ALL_OPERATIONS,
202
+ root: {
203
+ id: 1,
204
+ alias: 'foo',
205
+ name: 'foo',
206
+ externalPath: tmpDir,
207
+ permissions: _spaces.SPACE_ALL_OPERATIONS
208
+ }
209
+ };
210
+ spacesQueries.permissions = jest.fn().mockReturnValueOnce(permissions);
211
+ const spaceEnv = await spacesManager.spaceEnv(userTest, [
212
+ _spaces.SPACE_REPOSITORY.FILES,
213
+ spaceAlias,
214
+ 'foo',
215
+ 'bar'
216
+ ]);
217
+ const rootPath = _nodepath.default.join(tmpDir, ...spaceEnv.paths);
218
+ await _promises.default.mkdir(rootPath, {
219
+ recursive: true
220
+ });
221
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).resolves.toBeUndefined();
222
+ await (0, _files.removeFiles)(rootPath);
223
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).rejects.toThrow();
224
+ });
225
+ it(`should validate (or not) the space : ${spaceAlias} with a root (a file/directory from user)`, async ()=>{
226
+ const permissions = {
227
+ id: 0,
228
+ alias: spaceAlias,
229
+ name: spaceAlias,
230
+ permissions: _spaces.SPACE_ALL_OPERATIONS,
231
+ root: {
232
+ id: 1,
233
+ alias: 'document',
234
+ name: 'document',
235
+ file: {
236
+ id: 0,
237
+ path: '/foo',
238
+ inTrash: false
239
+ },
240
+ owner: {
241
+ id: 0,
242
+ login: userTest.login
243
+ },
244
+ permissions: _spaces.SPACE_ALL_OPERATIONS
245
+ }
246
+ };
247
+ spacesQueries.permissions = jest.fn().mockReturnValueOnce(permissions);
248
+ const spaceEnv = await spacesManager.spaceEnv(userTest, [
249
+ _spaces.SPACE_REPOSITORY.FILES,
250
+ spaceAlias,
251
+ 'document',
252
+ 'bar'
253
+ ]);
254
+ await _promises.default.mkdir(_nodepath.default.join(_usermodel.UserModel.getFilesPath(userTest.login), 'foo', 'bar'), {
255
+ recursive: true
256
+ });
257
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).resolves.toBeUndefined();
258
+ await (0, _files.removeFiles)(_nodepath.default.join(_usermodel.UserModel.getFilesPath(userTest.login), 'foo', 'bar'));
259
+ await expect((0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath)).rejects.toThrow();
260
+ delete spaceEnv.root.file.path;
261
+ try {
262
+ await (0, _paths.IsRealPathIsDirAndExists)(spaceEnv.realPath);
263
+ } catch (e) {
264
+ expect(e).toBeInstanceOf(_fileerror.FileError);
265
+ }
266
+ });
267
+ });
268
+
269
+ //# sourceMappingURL=spaces-manager.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-manager.service.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { ConfigModule, ConfigService } from '@nestjs/config'\nimport { Test, TestingModule } from '@nestjs/testing'\nimport fs from 'node:fs/promises'\nimport os from 'node:os'\nimport path from 'node:path'\nimport { transformAndValidate } from '../../../common/functions'\nimport { exportConfiguration } from '../../../configuration/config.environment'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../../infrastructure/context/services/context-manager.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesConfig } from '../../files/files.config'\nimport { FileError } from '../../files/models/file-error'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { removeFiles } from '../../files/utils/files'\nimport { LinksQueries } from '../../links/services/links-queries.service'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { SharesQueries } from '../../shares/services/shares-queries.service'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { UserModel } from '../../users/models/user.model'\nimport { UsersQueries } from '../../users/services/users-queries.service'\nimport { generateUserTest } from '../../users/utils/test'\nimport { SPACE_ALIAS, SPACE_ALL_OPERATIONS, SPACE_OPERATION, SPACE_PERMS_SEP, SPACE_REPOSITORY } from '../constants/spaces'\nimport { CreateOrUpdateSpaceDto, SpaceMemberDto } from '../dto/create-or-update-space.dto'\nimport { SpaceRootFileDto } from '../dto/space-roots.dto'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpaceModel } from '../models/space.model'\nimport { IsRealPathIsDirAndExists } from '../utils/paths'\nimport { SpacesManager } from './spaces-manager.service'\nimport { SpacesQueries } from './spaces-queries.service'\n\ndescribe(SpacesManager.name, () => {\n let filesConfig: FilesConfig\n let spacesManager: SpacesManager\n let spacesQueries: SpacesQueries\n let userTest: UserModel\n const spaceAlias = 'project'\n const tmpDir = os.tmpdir()\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n imports: [await ConfigModule.forRoot({ load: [exportConfiguration], isGlobal: true })],\n providers: [\n { provide: DB_TOKEN_PROVIDER, useValue: {} },\n {\n provide: Cache,\n useValue: { get: () => null }\n },\n { provide: ContextManager, useValue: {} },\n {\n provide: NotificationsManager,\n useValue: {}\n },\n SpacesManager,\n SpacesQueries,\n UsersQueries,\n SharesManager,\n SharesQueries,\n FilesQueries,\n LinksQueries\n ]\n }).compile()\n\n module.useLogger(['fatal'])\n filesConfig = module.get<ConfigService>(ConfigService).get('applications.files')\n spacesManager = module.get<SpacesManager>(SpacesManager)\n spacesQueries = module.get<SpacesQueries>(SpacesQueries)\n spacesManager['setQuotaExceeded'] = jest.fn()\n userTest = new UserModel(generateUserTest())\n // todo: validate shares, permissions\n })\n\n afterAll(async () => {\n await removeFiles(userTest.homePath)\n await removeFiles(SpaceModel.getHomePath(spaceAlias))\n })\n\n it('should be defined', () => {\n expect(filesConfig).toBeDefined()\n expect(spacesManager).toBeDefined()\n expect(userTest).toBeDefined()\n })\n\n it('should prevent path traversal', () => {\n const createOrUpdateSpaceDto = transformAndValidate(CreateOrUpdateSpaceDto, {\n name: '../../../foo/..bar',\n alias: '../../bar.',\n managers: [transformAndValidate(SpaceMemberDto, { id: 0, type: MEMBER_TYPE.USER })]\n } satisfies CreateOrUpdateSpaceDto)\n expect(createOrUpdateSpaceDto.name).toEqual('foobar')\n expect(createOrUpdateSpaceDto.alias).toEqual('bar')\n const spaceRootFileDto = transformAndValidate(SpaceRootFileDto, { id: 0, path: '../../foo/bar' } satisfies SpaceRootFileDto)\n expect(spaceRootFileDto.path).toEqual('foo/bar')\n const spaceRootFileDto2 = transformAndValidate(SpaceRootFileDto, {\n id: 0,\n path: `${SPACE_REPOSITORY.FILES}/${SPACE_ALIAS.PERSONAL}/../../../foo/bar`\n } satisfies SpaceRootFileDto)\n expect(spaceRootFileDto2.path).toEqual('foo/bar')\n })\n\n it('should validate the permissions on personal & shares space', async () => {\n const personalSpace = await spacesManager.spaceEnv(userTest, ['files', SPACE_ALIAS.PERSONAL])\n expect(personalSpace.envPermissions).toBe(\n Object.values(SPACE_OPERATION)\n .filter((p) => p !== SPACE_OPERATION.DELETE)\n .join(SPACE_PERMS_SEP)\n )\n const sharesSpace = await spacesManager.spaceEnv(userTest, ['shares'])\n expect(sharesSpace.envPermissions).toBe('')\n })\n\n it(\"should validate (or not) the user's personal space (files & trash repositories)\", async () => {\n for (const repository of [SPACE_REPOSITORY.FILES, SPACE_REPOSITORY.TRASH]) {\n const spaceEnv = await spacesManager.spaceEnv(userTest, [repository, SPACE_ALIAS.PERSONAL, 'foo', 'bar'])\n expect(spaceEnv.envPermissions).toBe(SPACE_ALL_OPERATIONS)\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).rejects.toThrow()\n const repoPath = UserModel.getRepositoryPath(userTest.login, spaceEnv.inTrashRepository)\n await fs.mkdir(path.join(repoPath, 'foo', 'bar'), { recursive: true })\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).resolves.toBeUndefined()\n await removeFiles(path.join(repoPath, 'foo', 'bar'))\n try {\n await IsRealPathIsDirAndExists(spaceEnv.realPath)\n } catch (e) {\n expect(e).toBeInstanceOf(FileError)\n }\n }\n })\n\n it(`should validate (or not) the space : ${spaceAlias} (files & trash repositories)`, async () => {\n const permissions: Partial<SpaceEnv> = {\n id: 1,\n alias: spaceAlias,\n name: spaceAlias,\n enabled: true,\n permissions: 'a:d:m:so',\n role: 0\n }\n spacesQueries.permissions = jest.fn().mockReturnValue(permissions)\n for (const repository of [SPACE_REPOSITORY.FILES, SPACE_REPOSITORY.TRASH]) {\n const spaceEnv = await spacesManager.spaceEnv(userTest, [repository, spaceAlias, 'foo', 'bar'])\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).rejects.toThrow()\n const repoPath = SpaceModel.getRepositoryPath(spaceAlias, spaceEnv.inTrashRepository)\n await fs.mkdir(path.join(repoPath, spaceEnv.root.alias, ...spaceEnv.paths), { recursive: true })\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).resolves.toBeUndefined()\n await removeFiles(path.join(repoPath, spaceEnv.root.alias, ...spaceEnv.paths))\n }\n })\n\n it(`should validate (or not) the space : ${spaceAlias} with a root (an external dir)`, async () => {\n const permissions: Partial<SpaceEnv> = {\n id: 0,\n alias: spaceAlias,\n name: spaceAlias,\n permissions: SPACE_ALL_OPERATIONS,\n root: { id: 1, alias: 'foo', name: 'foo', externalPath: tmpDir, permissions: SPACE_ALL_OPERATIONS }\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(permissions)\n const spaceEnv = await spacesManager.spaceEnv(userTest, [SPACE_REPOSITORY.FILES, spaceAlias, 'foo', 'bar'])\n const rootPath = path.join(tmpDir, ...spaceEnv.paths)\n await fs.mkdir(rootPath, { recursive: true })\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).resolves.toBeUndefined()\n await removeFiles(rootPath)\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).rejects.toThrow()\n })\n\n it(`should validate (or not) the space : ${spaceAlias} with a root (a file/directory from user)`, async () => {\n const permissions: Partial<SpaceEnv> = {\n id: 0,\n alias: spaceAlias,\n name: spaceAlias,\n permissions: SPACE_ALL_OPERATIONS,\n root: {\n id: 1,\n alias: 'document',\n name: 'document',\n file: { id: 0, path: '/foo', inTrash: false },\n owner: { id: 0, login: userTest.login },\n permissions: SPACE_ALL_OPERATIONS\n }\n }\n spacesQueries.permissions = jest.fn().mockReturnValueOnce(permissions)\n const spaceEnv = await spacesManager.spaceEnv(userTest, [SPACE_REPOSITORY.FILES, spaceAlias, 'document', 'bar'])\n await fs.mkdir(path.join(UserModel.getFilesPath(userTest.login), 'foo', 'bar'), { recursive: true })\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).resolves.toBeUndefined()\n await removeFiles(path.join(UserModel.getFilesPath(userTest.login), 'foo', 'bar'))\n await expect(IsRealPathIsDirAndExists(spaceEnv.realPath)).rejects.toThrow()\n delete spaceEnv.root.file.path\n try {\n await IsRealPathIsDirAndExists(spaceEnv.realPath)\n } catch (e) {\n expect(e).toBeInstanceOf(FileError)\n }\n })\n})\n"],"names":["describe","SpacesManager","name","filesConfig","spacesManager","spacesQueries","userTest","spaceAlias","tmpDir","os","tmpdir","beforeAll","module","Test","createTestingModule","imports","ConfigModule","forRoot","load","exportConfiguration","isGlobal","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","get","ContextManager","NotificationsManager","SpacesQueries","UsersQueries","SharesManager","SharesQueries","FilesQueries","LinksQueries","compile","useLogger","ConfigService","jest","fn","UserModel","generateUserTest","afterAll","removeFiles","homePath","SpaceModel","getHomePath","it","expect","toBeDefined","createOrUpdateSpaceDto","transformAndValidate","CreateOrUpdateSpaceDto","alias","managers","SpaceMemberDto","id","type","MEMBER_TYPE","USER","toEqual","spaceRootFileDto","SpaceRootFileDto","path","spaceRootFileDto2","SPACE_REPOSITORY","FILES","SPACE_ALIAS","PERSONAL","personalSpace","spaceEnv","envPermissions","toBe","Object","values","SPACE_OPERATION","filter","p","DELETE","join","SPACE_PERMS_SEP","sharesSpace","repository","TRASH","SPACE_ALL_OPERATIONS","IsRealPathIsDirAndExists","realPath","rejects","toThrow","repoPath","getRepositoryPath","login","inTrashRepository","fs","mkdir","recursive","resolves","toBeUndefined","e","toBeInstanceOf","FileError","permissions","enabled","role","mockReturnValue","root","paths","externalPath","mockReturnValueOnce","rootPath","file","inTrash","owner","getFilesPath"],"mappings":"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"}