renderer-dependency-plan.mjs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. export const rendererModularizationLines = [
  2. {
  3. id: 'office-word',
  4. group: 'office',
  5. targetPackage: '@file-viewer/renderer-word',
  6. phase: 2,
  7. status: 'extracted',
  8. renderers: ['office-word-openxml', 'office-word-binary', 'open-document'],
  9. dependencies: ['@file-viewer/docx', 'msdoc-viewer', 'rtf.js', 'jszip', 'linkedom'],
  10. },
  11. {
  12. id: 'office-presentation',
  13. group: 'office',
  14. targetPackage: '@file-viewer/renderer-presentation',
  15. phase: 2,
  16. status: 'extracted',
  17. renderers: ['office-presentation'],
  18. dependencies: ['@file-viewer/pptx'],
  19. },
  20. {
  21. id: 'office-spreadsheet',
  22. group: 'office',
  23. targetPackage: '@file-viewer/renderer-spreadsheet',
  24. phase: 2,
  25. status: 'extracted',
  26. renderers: ['spreadsheet-openxml'],
  27. dependencies: ['styled-exceljs', 'e-virt-table', 'tinycolor2'],
  28. },
  29. {
  30. id: 'document-pdf',
  31. group: 'document',
  32. targetPackage: '@file-viewer/renderer-pdf',
  33. phase: 2,
  34. status: 'extracted',
  35. renderers: ['pdf'],
  36. dependencies: ['pdfjs-dist'],
  37. },
  38. {
  39. id: 'document-ofd',
  40. group: 'document',
  41. targetPackage: '@file-viewer/renderer-ofd',
  42. phase: 2,
  43. status: 'extracted',
  44. renderers: ['ofd'],
  45. dependencies: ['ofd-xml-parser', 'jszip'],
  46. },
  47. {
  48. id: 'document-typst',
  49. group: 'document',
  50. targetPackage: '@file-viewer/renderer-typst',
  51. phase: 2,
  52. status: 'extracted',
  53. renderers: ['typst'],
  54. dependencies: [
  55. '@myriaddreamin/typst.ts',
  56. '@myriaddreamin/typst-ts-renderer',
  57. '@myriaddreamin/typst-ts-web-compiler',
  58. ],
  59. },
  60. {
  61. id: 'engineering-cad',
  62. group: 'engineering',
  63. targetPackage: '@file-viewer/renderer-cad',
  64. phase: 2,
  65. status: 'extracted',
  66. renderers: ['cad'],
  67. dependencies: ['@flyfish-dev/cad-viewer'],
  68. },
  69. {
  70. id: 'engineering-model',
  71. group: 'engineering',
  72. targetPackage: '@file-viewer/renderer-3d',
  73. phase: 3,
  74. status: 'extracted',
  75. renderers: ['model'],
  76. dependencies: ['three', '@file-viewer/geometry-engine'],
  77. },
  78. {
  79. id: 'engineering-drawing',
  80. group: 'engineering',
  81. targetPackage: '@file-viewer/renderer-drawing',
  82. phase: 3,
  83. status: 'extracted',
  84. renderers: ['drawing'],
  85. dependencies: ['@excalidraw/excalidraw', 'roughjs', 'mermaid', 'plantuml-encoder', '@panzoom/panzoom'],
  86. },
  87. {
  88. id: 'engineering-mindmap',
  89. group: 'engineering',
  90. targetPackage: '@file-viewer/renderer-mindmap',
  91. phase: 3,
  92. status: 'extracted',
  93. renderers: ['mindmap'],
  94. dependencies: ['@ljheee/xmind-parser'],
  95. },
  96. {
  97. id: 'engineering-geo',
  98. group: 'engineering',
  99. targetPackage: '@file-viewer/renderer-geo',
  100. phase: 3,
  101. status: 'extracted',
  102. renderers: ['geo'],
  103. dependencies: ['@tmcw/togeojson', 'shpjs'],
  104. },
  105. {
  106. id: 'engineering-eda',
  107. group: 'engineering',
  108. targetPackage: '@file-viewer/renderer-eda',
  109. phase: 4,
  110. status: 'extracted',
  111. renderers: ['eda'],
  112. dependencies: ['cfb', '@file-viewer/eda-layout', '@file-viewer/eda-orcad'],
  113. },
  114. {
  115. id: 'archive',
  116. group: 'archiveEmailEbook',
  117. targetPackage: '@file-viewer/renderer-archive',
  118. phase: 2,
  119. status: 'extracted',
  120. renderers: ['archive'],
  121. dependencies: ['libarchive.js', 'jszip'],
  122. },
  123. {
  124. id: 'email',
  125. group: 'archiveEmailEbook',
  126. targetPackage: '@file-viewer/renderer-email',
  127. phase: 3,
  128. status: 'extracted',
  129. renderers: ['email'],
  130. dependencies: ['postal-mime', '@kenjiuno/msgreader'],
  131. },
  132. {
  133. id: 'ebook',
  134. group: 'archiveEmailEbook',
  135. targetPackage: '@file-viewer/renderer-epub',
  136. phase: 3,
  137. status: 'extracted',
  138. renderers: ['epub', 'umd'],
  139. dependencies: ['epubjs', 'pako'],
  140. },
  141. {
  142. id: 'code-markdown',
  143. group: 'mediaAndData',
  144. targetPackage: '@file-viewer/renderer-text',
  145. phase: 3,
  146. status: 'extracted',
  147. renderers: ['code', 'markdown'],
  148. dependencies: ['highlight.js', 'marked', 'diff2html', 'pako'],
  149. },
  150. {
  151. id: 'media',
  152. group: 'mediaAndData',
  153. targetPackage: '@file-viewer/renderer-media',
  154. phase: 3,
  155. status: 'extracted',
  156. renderers: ['audio', 'video'],
  157. dependencies: ['hls.js', '@tonejs/midi'],
  158. },
  159. {
  160. id: 'image',
  161. group: 'mediaAndData',
  162. targetPackage: '@file-viewer/renderer-image',
  163. phase: 3,
  164. status: 'partially-extracted',
  165. renderers: ['image'],
  166. dependencies: ['heic2any'],
  167. },
  168. {
  169. id: 'data-asset',
  170. group: 'mediaAndData',
  171. targetPackage: '@file-viewer/renderer-data',
  172. phase: 4,
  173. status: 'extracted',
  174. renderers: ['data-asset'],
  175. dependencies: ['ag-psd', 'sql.js', 'hyparquet', 'avsc'],
  176. },
  177. {
  178. id: 'worker-dom',
  179. group: 'smallShared',
  180. targetPackage: '@file-viewer/renderer-word',
  181. phase: 2,
  182. status: 'extracted',
  183. renderers: ['office-word-openxml'],
  184. dependencies: ['@xmldom/xmldom'],
  185. },
  186. ];
  187. export const rendererDependencyGroups = rendererModularizationLines.reduce((result, line) => {
  188. if (line.status === 'extracted' || line.status === 'retained') {
  189. return result;
  190. }
  191. result[line.group] ||= [];
  192. line.dependencies.forEach(dependency => {
  193. if (!result[line.group].includes(dependency)) {
  194. result[line.group].push(dependency);
  195. }
  196. });
  197. return result;
  198. }, {});
  199. export const dependencyToRendererLines = rendererModularizationLines.reduce((result, line) => {
  200. line.dependencies.forEach(dependency => {
  201. result.set(dependency, [...(result.get(dependency) || []), line]);
  202. });
  203. return result;
  204. }, new Map());
  205. export const dependencyToRendererLine = new Map(
  206. Array.from(dependencyToRendererLines.entries()).map(([dependency, lines]) => [
  207. dependency,
  208. lines.find(line => line.status !== 'extracted' && line.status !== 'retained') || lines[0],
  209. ])
  210. );
  211. export const modularizedRendererLines = rendererModularizationLines.filter(line => line.status !== 'retained');
  212. export const retainedCoreDependencyLines = rendererModularizationLines.filter(line => line.status === 'retained');