@silexlabs/silex 3.0.1-alpha.0 → 3.0.2

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 (323) hide show
  1. package/.env.default +20 -0
  2. package/.silex.js +67 -8
  3. package/LICENSE +661 -203
  4. package/README.md +37 -35
  5. package/dist/client/client/api.d.ts +90 -0
  6. package/dist/client/client/assetUrl.d.ts +54 -0
  7. package/dist/client/client/config.d.ts +102 -0
  8. package/dist/client/client/events.d.ts +23 -0
  9. package/dist/client/client/expose.d.ts +8 -0
  10. package/dist/client/client/grapesjs/LoginDialog.d.ts +15 -0
  11. package/dist/client/client/grapesjs/PublicationManager.d.ts +73 -0
  12. package/dist/client/client/grapesjs/PublicationUi.d.ts +59 -0
  13. package/dist/client/client/grapesjs/blocks.d.ts +1 -0
  14. package/dist/client/client/grapesjs/breadcrumbs.d.ts +1 -0
  15. package/dist/client/client/grapesjs/css-props.d.ts +6 -0
  16. package/dist/client/client/grapesjs/footer.d.ts +2 -0
  17. package/dist/client/client/grapesjs/img.d.ts +6 -0
  18. package/dist/client/client/grapesjs/index.d.ts +9 -0
  19. package/dist/client/client/grapesjs/internal-links.d.ts +1 -0
  20. package/dist/client/client/grapesjs/keymaps.d.ts +123 -0
  21. package/dist/client/client/grapesjs/new-page-dialog.d.ts +2 -0
  22. package/dist/client/client/grapesjs/openImport.d.ts +9 -0
  23. package/dist/client/client/grapesjs/page-panel.d.ts +9 -0
  24. package/dist/client/client/grapesjs/project-bar.d.ts +21 -0
  25. package/dist/client/client/grapesjs/resize-panel.d.ts +1 -0
  26. package/dist/client/client/grapesjs/rich-text.d.ts +4 -0
  27. package/dist/client/client/grapesjs/semantic.d.ts +1 -0
  28. package/dist/client/client/grapesjs/settings-sections.d.ts +16 -0
  29. package/dist/client/client/grapesjs/settings.d.ts +4 -0
  30. package/dist/client/client/grapesjs/storage.d.ts +2 -0
  31. package/dist/client/client/grapesjs/symbolDialogs.d.ts +3 -0
  32. package/dist/client/client/grapesjs/view-buttons.d.ts +1 -0
  33. package/dist/client/client/index.d.ts +10 -0
  34. package/dist/client/client/publication-transformers.d.ts +42 -0
  35. package/dist/client/client/publish-custom-code-block.d.ts +4 -0
  36. package/dist/client/client/publish-fonts.d.ts +4 -0
  37. package/dist/client/client/utils.d.ts +22 -0
  38. package/dist/client/constants.d.ts +32 -0
  39. package/dist/client/css/admin.css +1114 -328
  40. package/dist/client/css/admin.css.map +1 -0
  41. package/dist/client/grapesjs-filter-styles/dist/index.d.ts +4 -0
  42. package/dist/client/grapesjs-fonts/dist/index.d.ts +4 -0
  43. package/dist/client/grapesjs-fonts/src/commands.d.ts +3 -0
  44. package/dist/client/grapesjs-fonts/src/fonts.d.ts +4 -0
  45. package/dist/client/grapesjs-storage-rate-limit/dist/index.d.ts +4 -0
  46. package/dist/client/grapesjs-ui-suggest-classes/dist/index.d.ts +4 -0
  47. package/dist/client/index.html +3 -2
  48. package/dist/client/js/main.js +356 -131
  49. package/dist/client/js/main.js.LICENSE.txt +15 -1
  50. package/dist/client/page.d.ts +2 -0
  51. package/dist/client/silex-lib/src/ts/client/api.d.ts +90 -0
  52. package/dist/client/silex-lib/src/ts/client/assetUrl.d.ts +54 -0
  53. package/dist/client/silex-lib/src/ts/client/config.d.ts +102 -0
  54. package/dist/client/silex-lib/src/ts/client/events.d.ts +23 -0
  55. package/dist/client/silex-lib/src/ts/client/expose.d.ts +8 -0
  56. package/dist/client/silex-lib/src/ts/client/grapesjs/LoginDialog.d.ts +15 -0
  57. package/dist/client/silex-lib/src/ts/client/grapesjs/PublicationManager.d.ts +73 -0
  58. package/dist/client/silex-lib/src/ts/client/grapesjs/PublicationUi.d.ts +59 -0
  59. package/dist/client/silex-lib/src/ts/client/grapesjs/blocks.d.ts +1 -0
  60. package/dist/client/silex-lib/src/ts/client/grapesjs/breadcrumbs.d.ts +1 -0
  61. package/dist/client/silex-lib/src/ts/client/grapesjs/css-props.d.ts +6 -0
  62. package/dist/client/silex-lib/src/ts/client/grapesjs/footer.d.ts +2 -0
  63. package/dist/client/silex-lib/src/ts/client/grapesjs/img.d.ts +6 -0
  64. package/dist/client/silex-lib/src/ts/client/grapesjs/index.d.ts +9 -0
  65. package/dist/client/silex-lib/src/ts/client/grapesjs/internal-links.d.ts +1 -0
  66. package/dist/client/silex-lib/src/ts/client/grapesjs/keymaps.d.ts +123 -0
  67. package/dist/client/silex-lib/src/ts/client/grapesjs/new-page-dialog.d.ts +2 -0
  68. package/dist/client/silex-lib/src/ts/client/grapesjs/openImport.d.ts +9 -0
  69. package/dist/client/silex-lib/src/ts/client/grapesjs/page-panel.d.ts +9 -0
  70. package/dist/client/silex-lib/src/ts/client/grapesjs/project-bar.d.ts +21 -0
  71. package/dist/client/silex-lib/src/ts/client/grapesjs/resize-panel.d.ts +1 -0
  72. package/dist/client/silex-lib/src/ts/client/grapesjs/rich-text.d.ts +4 -0
  73. package/dist/client/silex-lib/src/ts/client/grapesjs/semantic.d.ts +1 -0
  74. package/dist/client/silex-lib/src/ts/client/grapesjs/settings-sections.d.ts +16 -0
  75. package/dist/client/silex-lib/src/ts/client/grapesjs/settings.d.ts +4 -0
  76. package/dist/client/silex-lib/src/ts/client/grapesjs/storage.d.ts +2 -0
  77. package/dist/client/silex-lib/src/ts/client/grapesjs/symbolDialogs.d.ts +3 -0
  78. package/dist/client/silex-lib/src/ts/client/grapesjs/view-buttons.d.ts +1 -0
  79. package/dist/client/silex-lib/src/ts/client/index.d.ts +10 -0
  80. package/dist/client/silex-lib/src/ts/client/publication-transformers.d.ts +42 -0
  81. package/dist/client/silex-lib/src/ts/client/publish-custom-code-block.d.ts +4 -0
  82. package/dist/client/silex-lib/src/ts/client/publish-fonts.d.ts +4 -0
  83. package/dist/client/silex-lib/src/ts/client/utils.d.ts +22 -0
  84. package/dist/client/silex-lib/src/ts/constants.d.ts +32 -0
  85. package/dist/client/silex-lib/src/ts/page.d.ts +2 -0
  86. package/dist/client/silex-lib/src/ts/types.d.ts +339 -0
  87. package/dist/client/types.d.ts +339 -0
  88. package/dist/plugins/client/client/events.d.ts +23 -0
  89. package/dist/plugins/client/client/events.js +43 -0
  90. package/dist/plugins/client/client/events.js.map +1 -0
  91. package/dist/plugins/client/plugins/client/template.d.ts +2 -0
  92. package/dist/plugins/client/plugins/client/template.js +234 -0
  93. package/dist/plugins/client/plugins/client/template.js.map +1 -0
  94. package/dist/plugins/client/plugins/client/website-info.d.ts +1 -0
  95. package/dist/plugins/client/plugins/client/website-info.js +72 -0
  96. package/dist/plugins/client/plugins/client/website-info.js.map +1 -0
  97. package/dist/plugins/client/types.d.ts +339 -0
  98. package/dist/plugins/client/types.js +80 -0
  99. package/dist/plugins/client/types.js.map +1 -0
  100. package/dist/plugins/server/constants.d.ts +32 -0
  101. package/dist/plugins/server/constants.js +76 -0
  102. package/dist/plugins/server/constants.js.map +1 -0
  103. package/dist/plugins/server/plugins/server/Cache.d.ts +2 -0
  104. package/dist/plugins/server/plugins/server/Cache.js +36 -0
  105. package/dist/plugins/server/plugins/server/Cache.js.map +1 -0
  106. package/dist/plugins/server/plugins/server/DownloadConnector.d.ts +29 -0
  107. package/dist/plugins/server/plugins/server/DownloadConnector.js +127 -0
  108. package/dist/plugins/server/plugins/server/DownloadConnector.js.map +1 -0
  109. package/dist/plugins/server/plugins/server/FtpConnector.d.ts +86 -0
  110. package/dist/plugins/server/plugins/server/FtpConnector.js +536 -0
  111. package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -0
  112. package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +135 -0
  113. package/dist/plugins/server/plugins/server/GitlabConnector.js +649 -0
  114. package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -0
  115. package/dist/plugins/server/plugins/server/GitlabHostingConnector.d.ts +16 -0
  116. package/dist/plugins/server/plugins/server/GitlabHostingConnector.js +209 -0
  117. package/dist/plugins/server/plugins/server/GitlabHostingConnector.js.map +1 -0
  118. package/dist/plugins/server/plugins/server/PublicationOptimizer.d.ts +0 -0
  119. package/dist/plugins/server/plugins/server/PublicationOptimizer.js +14 -0
  120. package/dist/plugins/server/plugins/server/PublicationOptimizer.js.map +1 -0
  121. package/dist/plugins/server/plugins/server/SslPlugin.d.ts +1 -0
  122. package/dist/plugins/server/plugins/server/SslPlugin.js +86 -0
  123. package/dist/plugins/server/plugins/server/SslPlugin.js.map +1 -0
  124. package/dist/plugins/server/plugins/server/StaticPlugin.d.ts +8 -0
  125. package/dist/plugins/server/plugins/server/StaticPlugin.js +45 -0
  126. package/dist/plugins/server/plugins/server/StaticPlugin.js.map +1 -0
  127. package/dist/plugins/server/server/config.d.ts +59 -0
  128. package/dist/plugins/server/server/config.js +181 -0
  129. package/dist/plugins/server/server/config.js.map +1 -0
  130. package/dist/plugins/server/server/connectors/FsHosting.d.ts +14 -0
  131. package/dist/plugins/server/server/connectors/FsHosting.js +66 -0
  132. package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -0
  133. package/dist/plugins/server/server/connectors/FsStorage.d.ts +44 -0
  134. package/dist/plugins/server/server/connectors/FsStorage.js +261 -0
  135. package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -0
  136. package/dist/plugins/server/server/connectors/connectors.d.ts +86 -0
  137. package/dist/plugins/server/server/connectors/connectors.js +126 -0
  138. package/dist/plugins/server/server/connectors/connectors.js.map +1 -0
  139. package/dist/plugins/server/server/events.d.ts +26 -0
  140. package/dist/plugins/server/server/events.js +31 -0
  141. package/dist/plugins/server/server/events.js.map +1 -0
  142. package/dist/plugins/server/server/jobs.d.ts +12 -0
  143. package/dist/plugins/server/server/jobs.js +79 -0
  144. package/dist/plugins/server/server/jobs.js.map +1 -0
  145. package/dist/plugins/server/server/utils/validation.d.ts +7 -0
  146. package/dist/plugins/server/server/utils/validation.js +37 -0
  147. package/dist/plugins/server/server/utils/validation.js.map +1 -0
  148. package/dist/plugins/server/types.d.ts +339 -0
  149. package/dist/plugins/server/types.js +84 -0
  150. package/dist/plugins/server/types.js.map +1 -0
  151. package/dist/server/constants.js +55 -0
  152. package/dist/server/plugins/server/Cache.js +19 -0
  153. package/dist/server/server/api/api.js +20 -0
  154. package/dist/server/server/api/connectorApi.js +334 -0
  155. package/dist/server/server/api/publicationApi.js +106 -0
  156. package/dist/server/server/api/websiteApi.js +315 -0
  157. package/dist/server/server/cli.js +71 -0
  158. package/dist/server/server/config.js +120 -0
  159. package/dist/server/server/connectors/FsHosting.js +47 -0
  160. package/dist/server/server/connectors/FsStorage.js +228 -0
  161. package/dist/server/server/connectors/connectors.js +88 -0
  162. package/dist/server/server/events.js +14 -0
  163. package/dist/server/server/expose.js +27 -0
  164. package/dist/server/server/express.js +46 -0
  165. package/dist/server/server/index.js +92 -0
  166. package/dist/server/server/jobs.js +50 -0
  167. package/dist/server/server/utils/validation.js +14 -0
  168. package/dist/server/types.js +40 -0
  169. package/package.json +99 -49
  170. package/public/assets/download.png +0 -0
  171. package/public/assets/favicon.ico +0 -0
  172. package/public/assets/favicon.png +0 -0
  173. package/public/assets/ftp.png +0 -0
  174. package/public/assets/gitlab.png +0 -0
  175. package/public/assets/gitlab2.png +0 -0
  176. package/public/assets/laptop.png +0 -0
  177. package/public/assets/logo-silex-small.png +0 -0
  178. package/public/silex.js +22 -23
  179. package/src/css/_variables.scss +24 -20
  180. package/src/css/dialog.scss +35 -2
  181. package/src/css/fonts.scss +31 -0
  182. package/src/css/footer.scss +12 -0
  183. package/src/css/grapesjs-light.scss +180 -0
  184. package/src/css/grapesjs-plugins.scss +227 -0
  185. package/src/css/grapesjs.scss +159 -1
  186. package/src/css/index.scss +12 -1
  187. package/src/css/light.scss +7 -0
  188. package/src/css/loader.scss +2 -0
  189. package/src/css/project-bar.scss +32 -16
  190. package/src/css/silex.scss +79 -5
  191. package/src/css/website-info.scss +14 -0
  192. package/src/html/index.pug +3 -3
  193. package/src/html/templates/includes.pug +0 -1
  194. package/src/ts/client/api.ts +156 -0
  195. package/src/ts/client/assetUrl.test.ts +164 -0
  196. package/src/ts/client/assetUrl.ts +254 -0
  197. package/src/ts/client/config.ts +175 -13
  198. package/src/ts/client/events.ts +43 -0
  199. package/src/ts/client/expose.ts +27 -1
  200. package/src/ts/client/grapesjs/LoginDialog.ts +204 -0
  201. package/src/ts/client/grapesjs/PublicationManager.ts +433 -0
  202. package/src/ts/client/grapesjs/PublicationUi.ts +366 -0
  203. package/src/ts/client/grapesjs/blocks.ts +17 -0
  204. package/src/ts/client/grapesjs/breadcrumbs.ts +79 -0
  205. package/src/ts/client/grapesjs/css-props.ts +910 -0
  206. package/src/ts/client/grapesjs/eleventy.ts +30 -7
  207. package/src/ts/client/grapesjs/footer.ts +42 -0
  208. package/src/ts/client/grapesjs/img.ts +147 -0
  209. package/src/ts/client/grapesjs/index.ts +311 -122
  210. package/src/ts/client/grapesjs/internal-links.test.ts +19 -1
  211. package/src/ts/client/grapesjs/internal-links.ts +31 -7
  212. package/src/ts/client/grapesjs/keymaps.ts +207 -0
  213. package/src/ts/client/grapesjs/new-page-dialog.ts +19 -3
  214. package/src/ts/client/grapesjs/openImport.ts +22 -0
  215. package/src/ts/client/grapesjs/page-panel.ts +109 -7
  216. package/src/ts/client/grapesjs/project-bar.ts +133 -72
  217. package/src/ts/client/grapesjs/resize-panel.ts +20 -0
  218. package/src/ts/client/grapesjs/rich-text.ts +38 -13
  219. package/src/ts/client/grapesjs/semantic.ts +20 -3
  220. package/src/ts/client/grapesjs/settings-sections.ts +117 -0
  221. package/src/ts/client/grapesjs/settings.ts +191 -96
  222. package/src/ts/client/grapesjs/storage.ts +187 -0
  223. package/src/ts/client/grapesjs/symbolDialogs.ts +21 -5
  224. package/src/ts/client/grapesjs/view-buttons.ts +42 -0
  225. package/src/ts/client/index.ts +80 -21
  226. package/src/ts/client/publication-transformers.test.ts +207 -0
  227. package/src/ts/client/publication-transformers.ts +280 -0
  228. package/src/ts/client/publish-custom-code-block.ts +31 -0
  229. package/src/ts/client/publish-fonts.ts +36 -0
  230. package/src/ts/client/utils.ts +70 -1
  231. package/src/ts/constants.ts +78 -0
  232. package/src/ts/externs.ts +17 -0
  233. package/src/ts/page.ts +20 -3
  234. package/src/ts/plugins/client/template.ts +246 -0
  235. package/src/ts/plugins/client/website-info.ts +84 -0
  236. package/src/ts/plugins/server/Cache.ts +32 -0
  237. package/src/ts/plugins/server/DownloadConnector.ts +146 -0
  238. package/src/ts/plugins/server/FtpConnector.test.ts +82 -0
  239. package/src/ts/plugins/server/FtpConnector.ts +621 -0
  240. package/src/ts/plugins/server/GitlabConnector.ts +749 -0
  241. package/src/ts/plugins/server/GitlabHostingConnector.ts +215 -0
  242. package/src/ts/plugins/server/PublicationOptimizer.ts +14 -0
  243. package/src/ts/plugins/server/SslPlugin.ts +84 -0
  244. package/src/ts/plugins/server/StaticPlugin.ts +45 -0
  245. package/src/ts/server/api/api.ts +19 -0
  246. package/src/ts/server/api/connectorApi.ts +464 -0
  247. package/src/ts/server/api/publicationApi.ts +159 -0
  248. package/src/ts/server/api/websiteApi.ts +462 -0
  249. package/src/ts/server/cli.ts +48 -14
  250. package/src/ts/server/config.ts +158 -60
  251. package/src/ts/server/connectors/FsHosting.ts +66 -0
  252. package/src/ts/server/connectors/FsStorage.test.ts +51 -0
  253. package/src/ts/server/connectors/FsStorage.ts +290 -0
  254. package/src/ts/server/connectors/connectors.ts +203 -0
  255. package/src/ts/server/events.ts +37 -0
  256. package/src/ts/server/expose.ts +19 -0
  257. package/src/ts/server/express.ts +57 -5
  258. package/src/ts/server/index.ts +80 -19
  259. package/src/ts/server/jobs.test.ts +75 -0
  260. package/src/ts/server/jobs.ts +89 -0
  261. package/src/ts/server/utils/BackwardCompat.ts +546 -528
  262. package/src/ts/server/utils/validation.ts +34 -0
  263. package/src/ts/types.ts +295 -85
  264. package/.dockerignore +0 -5
  265. package/.editorconfig +0 -14
  266. package/.eslintrc.json +0 -43
  267. package/.github/FUNDING.yml +0 -13
  268. package/.github/workflows/docker-hub-publish.yml +0 -36
  269. package/.github/workflows/npm-publish.yml +0 -19
  270. package/.github/workflows/test.yml +0 -26
  271. package/.nvmrc +0 -1
  272. package/.silex/default/.silex.data.json +0 -1
  273. package/CODE_OF_CONDUCT.md +0 -128
  274. package/CONTRIBUTING.md +0 -131
  275. package/Dockerfile +0 -15
  276. package/directus.silex.js +0 -7
  277. package/dist/constants.js +0 -4
  278. package/dist/events.js +0 -5
  279. package/dist/page.js +0 -15
  280. package/dist/server/cli.js +0 -43
  281. package/dist/server/config.js +0 -70
  282. package/dist/server/express.js +0 -18
  283. package/dist/server/index.js +0 -58
  284. package/dist/types.js +0 -34
  285. package/jest.config.js +0 -10
  286. package/logos/logo_by_ceubri/silex-icon-2018@200px.png +0 -0
  287. package/logos/logo_by_ceubri/silex-icon-2018@4x.png +0 -0
  288. package/logos/logo_by_ceubri/silex-logo-2018-white-transp.pdf +0 -0
  289. package/logos/logo_by_ceubri/silex-logo-2018-white.jpg +0 -0
  290. package/logos/logo_by_ceubri/silex-logo-2018-white.pdf +0 -0
  291. package/logos/logo_by_ceubri/silex-logo-2018-white.png +0 -0
  292. package/logos/logo_by_ceubri/silex-logo-2018-white@0.5x.png +0 -0
  293. package/logos/logo_by_ceubri/silex-logo-2018-white@0.75x.png +0 -0
  294. package/logos/logo_by_ceubri/silex-logo-2018-white@4x.jpg +0 -0
  295. package/logos/logo_by_ceubri/silex-logo-2018-white@4x.png +0 -0
  296. package/logos/logo_by_ceubri/silex-logo-2018.ai +5 -2521
  297. package/logos/logo_by_ceubri/silex-logo-2018.jpg +0 -0
  298. package/logos/logo_by_ceubri/silex-logo-2018.pdf +0 -0
  299. package/logos/logo_by_ceubri/silex-logo-2018.png +0 -0
  300. package/logos/logo_by_ceubri/silex-logo-2018@0.5x.png +0 -0
  301. package/logos/logo_by_ceubri/silex-logo-2018@0.75x.png +0 -0
  302. package/logos/logo_by_ceubri/silex-logo-2018@4x.jpg +0 -0
  303. package/logos/logo_by_ceubri/silex-logo-2018@4x.png +0 -0
  304. package/logos/silexlabs.png +0 -0
  305. package/src/example-client-config.js +0 -47
  306. package/src/plugins/AuthPlugin.js +0 -21
  307. package/src/plugins/Cache.js +0 -11
  308. package/src/plugins/DefaultBackend.js +0 -149
  309. package/src/plugins/ExpressPlugin.js +0 -39
  310. package/src/plugins/HooksPlugin.js +0 -58
  311. package/src/plugins/PublishPlugin.js +0 -69
  312. package/src/plugins/SslPlugin.js +0 -66
  313. package/src/plugins/StaticPlugin.js +0 -48
  314. package/src/plugins/WebsitePlugin.js +0 -207
  315. package/src/ts/client/grapesjs/publish.ts +0 -386
  316. package/src/ts/client/grapesjs/template.ts +0 -166
  317. package/src/ts/events.ts +0 -2
  318. package/tsconfig-server-debug.json +0 -19
  319. package/tsconfig-server-release.json +0 -19
  320. package/tsconfig.jest.json +0 -9
  321. package/tsconfig.json +0 -26
  322. package/webpack.config.js +0 -28
  323. package/webpack.debug.config.js +0 -8
Binary file
@@ -1,47 +0,0 @@
1
- import directusStorage from 'https://unpkg.com/@silexlabs/grapesjs-directus-storage'
2
- console.log('directusStorage', directusStorage, directusStorage?.default)
3
-
4
- // Use the environment variable SILEX_CLIENT_CONFIG or the CLI option --client-config to override the default config with this file
5
- export default async function (config, options) {
6
- console.log('In example config')
7
- //await config.addPlugin('gjs-blocks-basic', 'https://unpkg.com/grapesjs-blocks-basic', {
8
- // blocks: ['text', 'image', 'video', 'map'],
9
- //})
10
-
11
- // Optional plugins
12
- await config.addPlugin([
13
- '@silexlabs/grapesjs-directus-storage',
14
- './plugins/@silexlabs/grapesjs-directus-storage/dist/index.js',
15
- ], {
16
- '@silexlabs/grapesjs-directus-storage': {
17
- directusUrl: 'http://localhost:8055',
18
- },
19
- './plugins/@silexlabs/grapesjs-directus-storage/dist/index.js': {
20
- directusUrl: 'http://localhost:8055',
21
- },
22
- })
23
-
24
- // Return an object to override default config
25
- return {
26
- ...config,
27
- ...options,
28
- editor: {
29
- ...config.editor,
30
- storageManager: {
31
- autoload: false,
32
- type: 'directus',
33
- },
34
- plugins: [
35
- ...config.editor.plugins,
36
- directusStorage,
37
- ],
38
- pluginsOpts: {
39
- ...config.editor.pluginsOpts,
40
- [directusStorage]: {
41
- directusUrl: 'http://localhost:8055',
42
- },
43
- },
44
- },
45
- }
46
- }
47
-
@@ -1,21 +0,0 @@
1
- const express = require('express')
2
- const { Directus } = require('@directus/sdk')
3
-
4
- module.exports = async function(config, opts = {}) {
5
- config.on('silex:startup:start', ({app}) => {
6
- const router = express.Router()
7
- router.post(['/publish', '/website', '/assets'], async function(req, res, next) {
8
- try {
9
- const token = req.body.token || opts.directusToken
10
- const directus = new Directus(opts.directusUrl)
11
- directus.storage.auth_token = token
12
- const me = await directus.users.me.read()
13
- next()
14
- } catch(err) {
15
- console.error('Publish failed in auth module. Did you provide a directus token?', err.message)
16
- res.status(403).json({ message: err.message })
17
- }
18
- })
19
- app.use(router)
20
- })
21
- }
@@ -1,11 +0,0 @@
1
- exports.noCache = function (req, res, next) {
2
- res.header('Cache-Control', 'private,no-cache,no-store,must-revalidate,proxy-revalidate')
3
- res.header('Expires', '-1')
4
- res.header('Pragma', 'no-cache')
5
- next()
6
- }
7
-
8
- exports.withCache = function (req, res, next) {
9
- res.header('Cache-Control', 'public,max-age=86400,immutable') // 24h
10
- next()
11
- }
@@ -1,149 +0,0 @@
1
- const { readFile, writeFile, mkdir, copyFile, readdir, stat, rm } = require('node:fs/promises')
2
- const { join, dirname, basename } = require('path')
3
- const { homedir } = require('os')
4
-
5
- //const { URLRewriter, URLTranslator } = require('cssurl')
6
-
7
- async function mkdirIfNotExists(path, options = null) {
8
- try {
9
- return await mkdir(path, options)
10
- } catch (err) {
11
- if (err.code === 'EEXIST') {
12
- return
13
- } else {
14
- throw err
15
- }
16
- }
17
- }
18
-
19
- // Paths
20
- const FS_ROOT = process.env.FS_ROOT || join(homedir(), '.silex')
21
- const ASSETS_PATH = 'assets'
22
- const ASSETS_URL = 'assets'
23
- const DATA_FILE_NAME = '/.silex.data.json'
24
- const PUBLICATION_PATH = 'publication'
25
-
26
- function path(id = 'default') {
27
- return join(FS_ROOT, id)
28
- }
29
-
30
- exports.assetsDir = async function (id) {
31
- return join(path(id), ASSETS_PATH)
32
- }
33
-
34
- exports.assetUrl = async function (id, fileName) {
35
- return `${ASSETS_URL}/${fileName}`
36
- }
37
-
38
- // Init files for projects and each project
39
- exports.init = async function (id) {
40
- await mkdirIfNotExists(FS_ROOT)
41
- const folder = path(id)
42
- const uploadDir = join(folder, ASSETS_PATH)
43
- await mkdirIfNotExists(uploadDir, { recursive: true, })
44
- }
45
-
46
- exports.del = async function (id) {
47
- const folder = path(id)
48
- console.log('Delete', folder)
49
- await rm(folder, {recursive: true})
50
- return {ok: true}
51
- }
52
-
53
- // List projects
54
- exports.list = async function () {
55
- try {
56
- const ids = await readdir(FS_ROOT)
57
- return Promise.all(ids.map(async id => ({
58
- id,
59
- ...await exports.readData(id),
60
- stats: await stat(path(id) + DATA_FILE_NAME),
61
- })))
62
- } catch (error) {
63
- if (error.code === 'ENOENT') {
64
- console.log(`\nError: Directory ${FS_ROOT} does not exist.\nIf your want to read from a different folder ues the FS_ROOT environment variable or --fs-root command line argument?\n`);
65
- const betterError = new Error(`The directory ${FS_ROOT} does not exist`)
66
- betterError.code = 'ENOENT'
67
- throw betterError
68
- }
69
- throw error
70
- }
71
- }
72
- // Read project data
73
- exports.readData = async function (id) {
74
- const filePath = path(id) + DATA_FILE_NAME
75
- try {
76
- const data = await readFile(filePath)
77
- return JSON.parse(data.toString())
78
- } catch (error) {
79
- if (error.code === 'ENOENT') {
80
- console.log(`\nError: File ${filePath} or directory ${FS_ROOT} do not exist.\nIf your want to read from a different folder use the FS_ROOT environment variable or --fs-root command line argument?\n`);
81
- const betterError = new Error(`The website ${id} does not exist`)
82
- betterError.code = 'ENOENT'
83
- throw betterError
84
- }
85
- throw error
86
- }
87
- }
88
- // Write project data
89
- exports.writeData = async function (id, data) {
90
- return writeFile(path(id) + DATA_FILE_NAME, JSON.stringify(data))
91
- }
92
- function required(prop, name) {
93
- if (!prop) throw new Error(`Error missing required param ${name}`)
94
- }
95
- exports.publish = async function (id, files, data) {
96
- const { assets, settings, publication } = data
97
- required(assets, 'assets')
98
- required(files, 'files')
99
- required(id, 'id')
100
- const folder = path(id)
101
- const publicationDir = join(folder, publication?.path || PUBLICATION_PATH)
102
-
103
- // HTML and CSS
104
- await Promise.all(files
105
- .map(async (file) => {
106
- // // Process the page CSS to have correct relative URLs
107
- // let css = file.css
108
- // try {
109
- // if(settings?.html?.path != settings?.css?.path) {
110
- // const rewriter = new URLRewriter(function(url) {
111
- // const translator = new URLTranslator()
112
- // return translator.translate(url, settings?.html?.path, settings?.css?.path)
113
- // })
114
- // css = rewriter.rewrite(css)
115
- // }
116
- // } catch (err) {
117
- // console.error('Error processing CSS', err, file)
118
- // throw new Error(`Error processing CSS. ${err.message}`)
119
- // }
120
- try {
121
- // Paths
122
- const htmlPath = join(publicationDir, file.htmlPath)
123
- const cssPath = join(publicationDir, file.cssPath)
124
- // Init
125
- await mkdirIfNotExists(dirname(htmlPath), { recursive: true, })
126
- await mkdirIfNotExists(dirname(cssPath), { recursive: true, })
127
- // Write
128
- await writeFile(htmlPath, file.html)
129
- await writeFile(cssPath, file.css)
130
- } catch (err) {
131
- throw new Error(`Publication error: could not write files ${file.cssPath} and ${file.htmlPath}. ${err.message}`)
132
- }
133
- }))
134
- // Assets
135
- const assetsFolder = join(publicationDir, publication?.assets?.path || ASSETS_PATH)
136
- await mkdirIfNotExists(assetsFolder, { recursive: true, })
137
-
138
- assets.forEach(async asset => {
139
- required(asset.src, 'asset\'s "src" attribute')
140
- const src = join(folder, asset.src)
141
- const dst = join(assetsFolder, basename(asset.src))
142
- try {
143
- await copyFile(src, dst)
144
- } catch (err) {
145
- throw new Error(`Publication error: could not copy asset file ${src} to ${dst}. ${err.message}`)
146
- }
147
- })
148
- return publication?.url
149
- }
@@ -1,39 +0,0 @@
1
- const bodyParser = require('body-parser')
2
- const compression = require('compression')
3
- const cookieParser = require('cookie-parser')
4
- const session = require('cookie-session')
5
- const cors = require('cors')
6
-
7
- module.exports = async function(config, opts = {}) {
8
- // Options with defaults
9
- const options = {
10
- jsonLimit: process.env.SILEX_EXPRESS_JSON_LIMIT || '1mb',
11
- textLimit: process.env.SILEX_EXPRESS_TEXT_LIMIT || '10mb',
12
- sessionName: process.env.SILEX_SESSION_NAME || 'silex-session',
13
- sessionSecret: process.env.SILEX_SESSION_SECRET || 'replace this session secret in env vars',
14
- cors: process.env.SILEX_CORS_URL,
15
- ...opts,
16
- }
17
-
18
- config.on('silex:startup:start', ({app}) => {
19
- // CORS
20
- if (options.cors) {
21
- console.log('> CORS are ENABLED:', options.cors)
22
- app.use(cors({
23
- origin: options.cors,
24
- }))
25
- }
26
- // compress gzip when possible
27
- app.use(compression())
28
-
29
- // cookie & session
30
- app.use(bodyParser.json({limit: options.jsonLimit}))
31
- app.use(bodyParser.text({limit: options.textLimit}))
32
- app.use(cookieParser())
33
- app.use(session({
34
- name: options.sessionName,
35
- secret: options.sessionSecret,
36
- }))
37
- })
38
- }
39
-
@@ -1,58 +0,0 @@
1
- import { Config } from '../config'
2
- import { EVENT_WRITE_END, EVENT_ASSET_WRITE_END } from './WebsitePlugin'
3
- import { EVENT_PUBLISH_END } from './PublishPlugin'
4
- import fetch from 'node-fetch'
5
- import { projectPath, assetsDir } from '../project'
6
-
7
- // type HooksOptions = {
8
- // gitUrl?: string
9
- // buildUrl?: string
10
- // }
11
-
12
- const rootPath = process.env.DATA_FOLDER
13
-
14
- module.exports = async function(config, opts = {}) {
15
- // Options with defaults
16
- const options = {
17
- gitUrl: process.env.SILEX_HOOK_GIT,
18
- buildUrl: process.env.SILEX_HOOK_BUILD,
19
- ...opts
20
- }
21
- config.on(EVENT_WRITE_END, async ({ res, req, projectId, data }) => {
22
- if(options.gitUrl) {
23
- await hook(options.gitUrl, {
24
- path: projectPath(projectId),
25
- message: 'Change from Silex',
26
- })
27
- }
28
- })
29
- config.on(EVENT_ASSET_WRITE_END, async ({ res, req, projectId, uploadDir, form, data }) => {
30
- if(options.gitUrl) {
31
- await hook(options.gitUrl, {
32
- path: projectPath(projectId),
33
- message: 'Change from Silex',
34
- })
35
- }
36
- })
37
- config.on(EVENT_PUBLISH_END, async ({ projectId, files, req, res }) => {
38
- if(options.buildUrl) {
39
- await hook(options.buildUrl)
40
- }
41
- })
42
- }
43
-
44
- async function hook(url, params = {}) {
45
- if(url) {
46
- const urlObj = new URL(url)
47
- console.log('Calling hook', {url})
48
- try {
49
- Object.keys(params)
50
- .forEach(key => urlObj.searchParams.append(key, params[key]))
51
- return fetch(urlObj.toString())
52
- } catch(error) {
53
- console.log('Hook call failed', {url, error})
54
- return null
55
- }
56
- }
57
- }
58
-
@@ -1,69 +0,0 @@
1
- const express = require('express')
2
- const { resolve } = require('path')
3
-
4
- const { noCache } = require('./Cache')
5
- const { minify } = require('html-minifier')
6
-
7
- const router = express.Router()
8
-
9
- // type PublishOptions = {
10
- // statusUrl?: string
11
- // }
12
-
13
- module.exports = async function(config, opts = {}) {
14
- const options = {
15
- // Defaults
16
- statusUrl: process.env.SILEX_PUBLICATION_STATUS_URL,
17
- backend: 'src/plugins/DefaultBackend.js',
18
- // Options
19
- ...opts,
20
- }
21
-
22
- // Link to the desired backend
23
- const backend = resolve(__dirname, '../..', options.backend)
24
- const { publish } = require(backend)
25
-
26
- config.on('silex:startup:start', ({app}) => {
27
- // Start publication
28
- router.post('/publish', async function(req, res) {
29
- const { pages, files, id } = req.body.data
30
- if (!pages || !id) {
31
- console.error('Error in the request, pages and id params required', {id})
32
- res.status(400).send({
33
- message: 'Error in the request, pages and id params required',
34
- })
35
- } else {
36
- // Optim
37
- files.forEach(file => {
38
- file.html = minify(file.html, {
39
- continueOnParseError: true,
40
- collapseInlineTagWhitespace: true,
41
- collapseWhitespace: true,
42
- minifyCSS: true,
43
- minifyJS: true,
44
- removeScriptTypeAttributes: true,
45
- removeStyleLinkTypeAttributes: true,
46
- }).trim()
47
- })
48
- // Publication
49
- await config.emit('silex:publish:start', { id, files, req})
50
- let url
51
- try {
52
- url = await publish(id, files, req.body.data)
53
- } catch (err) {
54
- console.error('Error publishing the website', err)
55
- res.status(500).json({ message: `Error publishing the website. ${err.message}`})
56
- return
57
- }
58
- const mutable = { id, files, req, res, url, statusUrl: options.statusUrl }
59
- await config.emit('silex:publish:end', mutable)
60
- res.json({
61
- url: mutable.url,
62
- statusUrl: mutable.statusUrl,
63
- })
64
- }
65
- })
66
-
67
- app.use(noCache, router)
68
- })
69
- }
@@ -1,66 +0,0 @@
1
- const express = require('express')
2
- const { readFileSync } = require('fs')
3
- const { createServer } = require('https')
4
- const fromorceSSL = require('express-force-ssl')
5
-
6
- // interface SslOptions {
7
- // forceHttps?: boolean
8
- // trustXFPHeader?: boolean
9
- // privateKey?: string
10
- // certificate?: string
11
- // sslPort?: string
12
- // }
13
-
14
- module.exports = async function(config, opts = {}) {
15
- // Options with defaults
16
- const options = {
17
- forceHttps: process.env.SILEX_FORCE_HTTPS === 'true',
18
- trustXFPHeader: process.env.SILEX_FORCE_HTTPS_TRUST_XFP_HEADER === 'true',
19
- privateKey: process.env.SILEX_SSL_PRIVATE_KEY,
20
- certificate: process.env.SILEX_SSL_CERTIFICATE,
21
- sslPort: process.env.SSL_PORT || '443',
22
- ...opts,
23
- }
24
-
25
- // Add routes on silex startup
26
- config.on('silex:startup:start', ({app}) => {
27
- const router = express.Router()
28
-
29
- // SSL
30
- // force ssl if the env var SILEX_FORCE_HTTPS is set
31
- if (options.forceHttps) {
32
- console.log('> Force SSL option is enabled')
33
- app.set('forceSSLOptions', {
34
- trustXFPHeader: !!options.trustXFPHeader,
35
- })
36
- router.use(forceSSL)
37
- } else {
38
- console.log('> Force SSL option is disabled, env var SILEX_FORCE_HTTPS not set')
39
- }
40
-
41
- // SSL certificate
42
- if (options.privateKey && options.certificate) {
43
- console.log('> SSL certificate is enabled, found certificate:', options.certificate)
44
- try {
45
- const privateKey = readFileSync(options.privateKey).toString()
46
- const certificate = readFileSync(options.certificate).toString()
47
-
48
- const sslServerOptions = {
49
- key: privateKey,
50
- cert: certificate,
51
- requestCert: true,
52
- rejectUnauthorized: false,
53
- }
54
-
55
- createServer(sslServerOptions, this).listen(options.sslPort, () => {
56
- console.log('SSL: listening on port ', options.sslPort)
57
- })
58
- } catch (e) {
59
- console.error('SSL: load certificate failed.', e)
60
- }
61
- } else {
62
- console.log('> SSL certificate disabled, env vars SILEX_SSL_CERTIFICATE and SILEX_SSL_PRIVATE_KEY not set')
63
- }
64
- app.use(router)
65
- })
66
- }
@@ -1,48 +0,0 @@
1
- const express = require('express')
2
- const nodeModules = require('node_modules-path')
3
- const serveStatic = require('serve-static')
4
- const { withCache } = require('./Cache')
5
-
6
- const Path = require('path')
7
-
8
- // type StaticOptions = {
9
- // routes?: {
10
- // path?: string
11
- // route?: string
12
- // module?: string
13
- // }[]
14
- // }
15
-
16
- module.exports = async function(config, opts = {}) {
17
- // Options with defaults
18
- const options = {
19
- rootPath: Path.join(__dirname, '../..'),
20
- routes: [
21
- {
22
- route: '/',
23
- path: 'public',
24
- }, {
25
- route: '/',
26
- path: 'dist/client',
27
- },
28
- ]
29
- // add project route for source maps
30
- .concat(config.debug ? [{
31
- route: '/',
32
- path: './',
33
- }] : []),
34
- ...opts,
35
- }
36
-
37
- config.on('silex:startup:start', ({app}) => {
38
- const router = express.Router()
39
- options.routes
40
- .forEach(folder => {
41
- // either the module root folder or silex root folder
42
- const path = Path.join(options.rootPath, folder.path || '')
43
- if (!folder.route) throw new Error('The config for static module has no `route` attribute: ' + folder)
44
- router.use(folder.route, serveStatic(path))
45
- })
46
- app.use(withCache, router)
47
- })
48
- }