@silexlabs/silex 3.0.1-alpha.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +94 -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 +79 -16
  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
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FsStorage = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const fs_1 = require("fs");
9
+ const connectors_1 = require("./connectors");
10
+ const path_1 = require("path");
11
+ const types_1 = require("../../types");
12
+ const os_1 = require("os");
13
+ const validation_1 = require("../utils/validation");
14
+ const constants_1 = require("../../constants");
15
+ const stream_1 = require("stream");
16
+ const uuid_1 = require("uuid");
17
+ if (!globalThis.__dirname) {
18
+ globalThis.__dirname = (0, path_1.dirname)(process.cwd() + '/src/ts/server/connectors/FsStorage.ts');
19
+ console.info('Redefining __dirname', globalThis.__dirname);
20
+ }
21
+ async function copyDir(src, dest) {
22
+ await promises_1.default.mkdir(dest, { recursive: true });
23
+ const entries = await promises_1.default.readdir(src, { withFileTypes: true });
24
+ for (const entry of entries) {
25
+ const srcPath = (0, path_1.join)(src, entry.name);
26
+ const destPath = (0, path_1.join)(dest, entry.name);
27
+ entry.isDirectory() ?
28
+ await copyDir(srcPath, destPath) :
29
+ await promises_1.default.copyFile(srcPath, destPath);
30
+ }
31
+ }
32
+ const USER_ICON = 'data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' height=\'1em\' viewBox=\'0 0 448 512\'%3E%3Cpath d=\'M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z\'/%3E%3C/svg%3E';
33
+ const FILE_ICON = '/assets/laptop.png';
34
+ class FsStorage {
35
+ connectorId = 'fs-storage';
36
+ displayName = 'File system storage';
37
+ icon = FILE_ICON;
38
+ disableLogout = true;
39
+ options;
40
+ connectorType = types_1.ConnectorType.STORAGE;
41
+ color = '#ffffff';
42
+ background = '#006400';
43
+ constructor(config, opts) {
44
+ this.options = {
45
+ path: (0, path_1.join)(__dirname, '..', '..', '..', '..', 'data'),
46
+ assetsFolder: '/assets',
47
+ ...opts,
48
+ };
49
+ this.initFs();
50
+ }
51
+ async initFs() {
52
+ const stat = await promises_1.default.stat(this.options.path).catch(() => null);
53
+ if (!stat) {
54
+ const id = constants_1.DEFAULT_WEBSITE_ID;
55
+ await promises_1.default.mkdir((0, path_1.join)(this.options.path, id, this.options.assetsFolder), { recursive: true });
56
+ await this.setWebsiteMeta({}, id, { name: 'Default website', connectorUserSettings: {} });
57
+ await this.updateWebsite({}, id, types_1.defaultWebsiteData);
58
+ console.info(`> [FsStorage] Created ${id} in ${this.options.path}`);
59
+ }
60
+ }
61
+ updateStatus(filesStatuses, status, statusCbk) {
62
+ statusCbk && statusCbk({
63
+ message: `<p>Writing files:<ul><li>${filesStatuses.map(({ file, message }) => `${file.path}: ${message}`).join('</li><li>')}</li></ul></p>`,
64
+ status,
65
+ });
66
+ }
67
+ initStatus(files) {
68
+ return files.map(file => ({
69
+ file,
70
+ message: 'Waiting',
71
+ status: types_1.JobStatus.IN_PROGRESS,
72
+ }));
73
+ }
74
+ getOptions(formData) {
75
+ return {};
76
+ }
77
+ async getOAuthUrl(session) { return null; }
78
+ async getLoginForm(session, redirectTo) {
79
+ return null;
80
+ }
81
+ async getSettingsForm(session, redirectTo) {
82
+ return null;
83
+ }
84
+ async isLoggedIn(session) {
85
+ return true;
86
+ }
87
+ async setToken(session, query) { }
88
+ async logout(session) { }
89
+ async getUser(session) {
90
+ const { username, } = (0, os_1.userInfo)();
91
+ return {
92
+ name: username,
93
+ picture: USER_ICON,
94
+ storage: await (0, connectors_1.toConnectorData)(session, this),
95
+ };
96
+ }
97
+ async setWebsiteMeta(session, id, data) {
98
+ const websiteId = (0, validation_1.requiredParam)(id, 'website id');
99
+ const content = JSON.stringify(data);
100
+ const path = (0, path_1.join)(this.options.path, id, constants_1.WEBSITE_META_DATA_FILE);
101
+ await promises_1.default.writeFile(path, content);
102
+ }
103
+ async getWebsiteMeta(session, id) {
104
+ const websiteId = (0, validation_1.requiredParam)(id, 'website id');
105
+ const fileStat = await promises_1.default.stat((0, path_1.join)(this.options.path, websiteId));
106
+ const path = (0, path_1.join)(this.options.path, websiteId, constants_1.WEBSITE_META_DATA_FILE);
107
+ const content = await promises_1.default.readFile(path);
108
+ const meta = await JSON.parse(content.toString());
109
+ return {
110
+ websiteId,
111
+ name: meta.name,
112
+ imageUrl: meta.imageUrl,
113
+ connectorUserSettings: meta.connectorUserSettings,
114
+ createdAt: fileStat.birthtime,
115
+ updatedAt: fileStat.mtime,
116
+ };
117
+ }
118
+ async createWebsite(session, meta) {
119
+ const id = (0, uuid_1.v4)();
120
+ await promises_1.default.mkdir((0, path_1.join)(this.options.path, id, this.options.assetsFolder), { recursive: true });
121
+ await this.setWebsiteMeta(session, id, meta);
122
+ await this.updateWebsite(session, id, types_1.defaultWebsiteData);
123
+ return id;
124
+ }
125
+ async readWebsite(session, websiteId) {
126
+ const id = (0, validation_1.requiredParam)(websiteId, 'website id');
127
+ const path = (0, path_1.join)(this.options.path, id, constants_1.WEBSITE_DATA_FILE);
128
+ const content = await promises_1.default.readFile(path);
129
+ return JSON.parse(content.toString());
130
+ }
131
+ async updateWebsite(session, websiteId, data) {
132
+ const id = (0, validation_1.requiredParam)(websiteId, 'website id');
133
+ const path = (0, path_1.join)(this.options.path, id, constants_1.WEBSITE_DATA_FILE);
134
+ await promises_1.default.writeFile(path, JSON.stringify(data));
135
+ }
136
+ async deleteWebsite(session, websiteId) {
137
+ const id = (0, validation_1.requiredParam)(websiteId, 'website id');
138
+ const path = (0, path_1.join)(this.options.path, id);
139
+ return promises_1.default.rmdir(path, { recursive: true });
140
+ }
141
+ async duplicateWebsite(session, websiteId) {
142
+ const newWebsiteId = (0, uuid_1.v4)();
143
+ const from = (0, path_1.join)(this.options.path, websiteId);
144
+ const to = (0, path_1.join)(this.options.path, newWebsiteId);
145
+ await copyDir(from, to);
146
+ const meta = await this.getWebsiteMeta(session, websiteId);
147
+ await this.setWebsiteMeta(session, newWebsiteId, {
148
+ ...meta,
149
+ name: `${meta.name} copy`,
150
+ });
151
+ }
152
+ async listWebsites(session) {
153
+ const list = await promises_1.default.readdir(this.options.path);
154
+ return Promise.all(list.map(async (fileName) => {
155
+ const websiteId = fileName;
156
+ return this.getWebsiteMeta(session, websiteId);
157
+ }));
158
+ }
159
+ async getAsset(session, id, path) {
160
+ const fullPath = (0, path_1.join)(this.options.path, id, this.options.assetsFolder, path);
161
+ const content = await promises_1.default.readFile(fullPath);
162
+ return { path, content };
163
+ }
164
+ async writeAssets(session, id, files, statusCbk) {
165
+ return this.write(session, id, files, this.options.assetsFolder, statusCbk);
166
+ }
167
+ async write(session, id, files, assetsFolder, statusCbk) {
168
+ const filesStatuses = this.initStatus(files);
169
+ let error = null;
170
+ for (const fileStatus of filesStatuses) {
171
+ const { file } = fileStatus;
172
+ const path = (0, path_1.join)(this.options.path, id, assetsFolder, file.path);
173
+ if (typeof file.content === 'string' || Buffer.isBuffer(file.content)) {
174
+ fileStatus.message = 'Writing';
175
+ this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
176
+ try {
177
+ await promises_1.default.writeFile(path, file.content);
178
+ }
179
+ catch (err) {
180
+ fileStatus.message = `Error (${err})`;
181
+ this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
182
+ error = err;
183
+ continue;
184
+ }
185
+ fileStatus.message = 'Success';
186
+ this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
187
+ }
188
+ else if (file.content instanceof stream_1.Readable) {
189
+ fileStatus.message = 'Writing';
190
+ this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
191
+ const writeStream = (0, fs_1.createWriteStream)(path);
192
+ file.content.pipe(writeStream);
193
+ await new Promise((resolve) => {
194
+ writeStream.on('finish', () => {
195
+ fileStatus.message = 'Success';
196
+ this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
197
+ resolve(file);
198
+ });
199
+ writeStream.on('error', err => {
200
+ console.error('writeStream error', err);
201
+ fileStatus.message = `Error (${err})`;
202
+ this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
203
+ error = err;
204
+ resolve(file);
205
+ });
206
+ });
207
+ }
208
+ else {
209
+ console.error('Invalid file content', typeof file.content);
210
+ throw new Error('Invalid file content: ' + typeof file.content);
211
+ }
212
+ }
213
+ this.updateStatus(filesStatuses, error ? types_1.JobStatus.ERROR : types_1.JobStatus.SUCCESS, statusCbk);
214
+ if (error)
215
+ throw error;
216
+ }
217
+ async deleteAssets(session, id, paths) {
218
+ for (const path of paths) {
219
+ await promises_1.default.unlink((0, path_1.join)(this.options.path, id, path));
220
+ }
221
+ }
222
+ async readAsset(session, websiteId, fileName) {
223
+ const id = (0, validation_1.requiredParam)(websiteId, 'website id');
224
+ const path = (0, path_1.join)(this.options.path, id, this.options.assetsFolder, fileName);
225
+ return await promises_1.default.readFile(path);
226
+ }
227
+ }
228
+ exports.FsStorage = FsStorage;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toConnectorEnum = toConnectorEnum;
4
+ exports.getConnector = getConnector;
5
+ exports.toConnectorData = toConnectorData;
6
+ exports.contentToString = contentToString;
7
+ exports.contentToBuffer = contentToBuffer;
8
+ exports.contentToReadable = contentToReadable;
9
+ const stream_1 = require("stream");
10
+ const types_1 = require("../../types");
11
+ function toConnectorEnum(type) {
12
+ const result = types_1.ConnectorType[type.toString().toUpperCase()];
13
+ if (!result)
14
+ throw new Error(`Unknown connector type ${type}. It should be one of ${Object.keys(types_1.ConnectorType).join(', ')}`);
15
+ return result;
16
+ }
17
+ async function getConnector(config, session, type, connectorId) {
18
+ const connectors = config.getConnectors(type);
19
+ if (connectorId)
20
+ return connectors.find(s => s.connectorId === connectorId && s.connectorType === type);
21
+ for (const connector of connectors) {
22
+ if (await connector.isLoggedIn(session)) {
23
+ return connector;
24
+ }
25
+ }
26
+ return connectors[0];
27
+ }
28
+ async function toConnectorData(session, connector) {
29
+ return {
30
+ connectorId: connector.connectorId,
31
+ type: connector.connectorType,
32
+ displayName: connector.displayName,
33
+ icon: connector.icon,
34
+ disableLogout: !!connector.disableLogout,
35
+ isLoggedIn: await connector.isLoggedIn(session),
36
+ oauthUrl: await connector.getOAuthUrl(session),
37
+ color: connector.color,
38
+ background: connector.background,
39
+ };
40
+ }
41
+ async function contentToString(content) {
42
+ if (typeof content === 'string')
43
+ return content;
44
+ if (Buffer.isBuffer(content))
45
+ return content.toString('utf8');
46
+ return new Promise((resolve, reject) => {
47
+ let result = '';
48
+ content.on('data', (chunk) => {
49
+ result += chunk.toString('utf8');
50
+ });
51
+ content.on('error', (err) => {
52
+ reject(err);
53
+ });
54
+ content.on('end', () => {
55
+ resolve(result);
56
+ });
57
+ });
58
+ }
59
+ async function contentToBuffer(content) {
60
+ if (typeof content === 'string')
61
+ return Buffer.from(content, 'utf8');
62
+ if (Buffer.isBuffer(content))
63
+ return content;
64
+ if (content instanceof stream_1.Readable) {
65
+ return new Promise((resolve, reject) => {
66
+ const chunks = [];
67
+ content.on('data', (chunk) => {
68
+ chunks.push(chunk);
69
+ });
70
+ content.on('error', (err) => {
71
+ reject(err);
72
+ });
73
+ content.on('end', () => {
74
+ resolve(Buffer.concat(chunks));
75
+ });
76
+ });
77
+ }
78
+ throw new Error('Unknown content type');
79
+ }
80
+ function contentToReadable(content) {
81
+ if (typeof content === 'string')
82
+ return stream_1.Readable.from([content]);
83
+ if (Buffer.isBuffer(content))
84
+ return stream_1.Readable.from([content]);
85
+ if (content instanceof stream_1.Readable)
86
+ return content;
87
+ throw new Error('Unknown content type');
88
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServerEvent = void 0;
4
+ var ServerEvent;
5
+ (function (ServerEvent) {
6
+ ServerEvent["STARTUP_START"] = "startup-start";
7
+ ServerEvent["STARTUP_END"] = "startup-end";
8
+ ServerEvent["PUBLISH_START"] = "publish-start";
9
+ ServerEvent["PUBLISH_END"] = "publish-end";
10
+ ServerEvent["WEBSITE_STORE_START"] = "store-start";
11
+ ServerEvent["WEBSITE_STORE_END"] = "store-end";
12
+ ServerEvent["WEBSITE_ASSET_STORE_START"] = "asset-store-start";
13
+ ServerEvent["WEBSITE_ASSET_STORE_END"] = "asset-store-end";
14
+ })(ServerEvent || (exports.ServerEvent = ServerEvent = {}));
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.events = void 0;
27
+ exports.events = __importStar(require("./events"));
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.create = create;
7
+ exports.start = start;
8
+ const express_1 = __importDefault(require("express"));
9
+ const body_parser_1 = __importDefault(require("body-parser"));
10
+ const compression_1 = __importDefault(require("compression"));
11
+ const cookie_parser_1 = __importDefault(require("cookie-parser"));
12
+ const cookie_session_1 = __importDefault(require("cookie-session"));
13
+ const cors_1 = __importDefault(require("cors"));
14
+ const events_1 = require("./events");
15
+ function create(config) {
16
+ const app = (0, express_1.default)();
17
+ app.set('config', config);
18
+ const options = config.expressOptions;
19
+ if (options.cors) {
20
+ console.info('> CORS are ENABLED:', options.cors);
21
+ app.use((0, cors_1.default)({
22
+ origin: options.cors,
23
+ }));
24
+ }
25
+ app.use((0, compression_1.default)());
26
+ app.use(body_parser_1.default.json({ limit: options.jsonLimit }));
27
+ app.use(body_parser_1.default.text({ limit: options.textLimit }));
28
+ app.use(body_parser_1.default.urlencoded({ limit: options.urlencodedLimit }));
29
+ console.info('> Session name:', options.sessionName);
30
+ app.use((0, cookie_parser_1.default)());
31
+ app.use((0, cookie_session_1.default)({
32
+ name: options.sessionName,
33
+ secret: options.sessionSecret,
34
+ }));
35
+ return app;
36
+ }
37
+ async function start(app) {
38
+ const config = app.get('config');
39
+ config.emit(events_1.ServerEvent.STARTUP_START, { app });
40
+ return new Promise((resolve, reject) => {
41
+ app.listen(config.port, () => {
42
+ config.emit(events_1.ServerEvent.STARTUP_END, { app });
43
+ resolve(app);
44
+ });
45
+ });
46
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
+ };
28
+ var __importDefault = (this && this.__importDefault) || function (mod) {
29
+ return (mod && mod.__esModule) ? mod : { "default": mod };
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.default = silex;
33
+ const silexApp = __importStar(require("./express"));
34
+ const api_1 = __importDefault(require("./api/api"));
35
+ const config_1 = require("./config");
36
+ const dotenv_1 = __importDefault(require("dotenv"));
37
+ const path_1 = require("path");
38
+ const constants_1 = require("../constants");
39
+ __exportStar(require("./expose"), exports);
40
+ async function silex() {
41
+ console.info(constants_1.DEV_MESSAGE);
42
+ console.info(`Node version: ${process.version}`);
43
+ console.info(`CWD: ${process.cwd()}`);
44
+ const curDirEnv = dotenv_1.default.config();
45
+ if (curDirEnv.error) {
46
+ if (curDirEnv.error['code'] === 'ENOENT') {
47
+ console.info('> No .env file found in current directory');
48
+ }
49
+ else {
50
+ throw curDirEnv.error;
51
+ }
52
+ }
53
+ else {
54
+ console.info('> Env vars loaded from .env file');
55
+ }
56
+ const DEFAULT_ENV_FILE = (0, path_1.join)(__dirname, '../../../.env.default');
57
+ const rootDirEnv = dotenv_1.default.config({ path: DEFAULT_ENV_FILE });
58
+ if (rootDirEnv.error) {
59
+ if (rootDirEnv.error['code'] === 'ENOENT') {
60
+ throw new Error(`\n\nFailed to load default env vars. File not found ${DEFAULT_ENV_FILE}\n\n`);
61
+ }
62
+ else {
63
+ throw new Error(`\n\nFailed to load default env vars. Error in ${DEFAULT_ENV_FILE}: ${rootDirEnv.error.message}\n\n`);
64
+ }
65
+ }
66
+ console.info('> Default env vars loaded');
67
+ const config = new config_1.ServerConfig();
68
+ const app = silexApp.create(config);
69
+ await config.addRoutes(app);
70
+ await config.loadConfigFiles();
71
+ await config.initDefaultConnectors();
72
+ app.use('/api', (0, api_1.default)(config));
73
+ await silexApp.start(app);
74
+ console.info(`
75
+ I'm ready, listening to port ${config.port}
76
+ `);
77
+ if (config.debug) {
78
+ startLiverReload();
79
+ }
80
+ }
81
+ async function startLiverReload() {
82
+ const { createServer } = await Promise.resolve().then(() => __importStar(require('livereload')));
83
+ const { resolve } = await Promise.resolve().then(() => __importStar(require('path')));
84
+ const dist = resolve(__dirname, '../../client');
85
+ const server = createServer({
86
+ delay: 0,
87
+ }, () => {
88
+ console.info(`\n> Debug mode\n> Live reload server is running.\n> Watching ${dist}`);
89
+ });
90
+ server.watch(dist);
91
+ }
92
+ if (require.main === module) {
93
+ silex();
94
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jobManager = void 0;
4
+ exports.startJob = startJob;
5
+ exports.getJob = getJob;
6
+ exports.jobSuccess = jobSuccess;
7
+ exports.jobError = jobError;
8
+ exports.killJob = killJob;
9
+ const types_1 = require("../types");
10
+ const TIME_TO_KEEP_AFTER_STOP = 60 * 10 * 1000;
11
+ const jobs = new Array();
12
+ const timers = new WeakMap();
13
+ const processKey = Math.ceil(Math.random() * 1000000);
14
+ let nextJobId = 0;
15
+ function startJob(message = '') {
16
+ const jobId = `${processKey}_${++nextJobId}`;
17
+ const job = {
18
+ jobId,
19
+ status: types_1.JobStatus.IN_PROGRESS,
20
+ message: message
21
+ };
22
+ jobs.push(job);
23
+ return job;
24
+ }
25
+ function getJob(id) {
26
+ return jobs.find(job => job.jobId === id);
27
+ }
28
+ function jobSuccess(id, message = '') {
29
+ return end(id, types_1.JobStatus.SUCCESS, message);
30
+ }
31
+ function jobError(id, message = '') {
32
+ return end(id, types_1.JobStatus.ERROR, message);
33
+ }
34
+ function killJob(job) {
35
+ clearTimeout(timers.get(job));
36
+ timers.delete(job);
37
+ jobs.splice(jobs.findIndex(j => job.jobId === j.jobId), 1);
38
+ }
39
+ function end(id, status, message = '') {
40
+ const job = getJob(id);
41
+ if (job) {
42
+ job.status = status;
43
+ if (message)
44
+ job.message = message;
45
+ timers.set(job, setTimeout(() => killJob(job), TIME_TO_KEEP_AFTER_STOP));
46
+ return true;
47
+ }
48
+ return false;
49
+ }
50
+ exports.jobManager = { startJob, jobSuccess, jobError };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requiredParam = requiredParam;
4
+ function requiredParam(value, name, defaultValue) {
5
+ if (value === undefined) {
6
+ if (defaultValue !== undefined) {
7
+ return defaultValue;
8
+ }
9
+ const error = new Error(`Missing required parameter ${name}`);
10
+ console.error(`Missing required parameter ${name}`, error);
11
+ throw error;
12
+ }
13
+ return value;
14
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JobStatus = exports.ConnectorType = exports.Initiator = exports.ClientSideFileType = exports.Unit = exports.defaultWebsiteData = exports.ApiError = void 0;
4
+ class ApiError extends Error {
5
+ httpStatusCode;
6
+ constructor(message, httpStatusCode) {
7
+ super(message);
8
+ this.httpStatusCode = httpStatusCode;
9
+ console.info('API error', httpStatusCode, message);
10
+ }
11
+ }
12
+ exports.ApiError = ApiError;
13
+ exports.defaultWebsiteData = {};
14
+ var Unit;
15
+ (function (Unit) {
16
+ Unit["PX"] = "px";
17
+ })(Unit || (exports.Unit = Unit = {}));
18
+ var ClientSideFileType;
19
+ (function (ClientSideFileType) {
20
+ ClientSideFileType["HTML"] = "html";
21
+ ClientSideFileType["ASSET"] = "asset";
22
+ ClientSideFileType["CSS"] = "css";
23
+ ClientSideFileType["OTHER"] = "other";
24
+ })(ClientSideFileType || (exports.ClientSideFileType = ClientSideFileType = {}));
25
+ var Initiator;
26
+ (function (Initiator) {
27
+ Initiator["HTML"] = "html";
28
+ Initiator["CSS"] = "css";
29
+ })(Initiator || (exports.Initiator = Initiator = {}));
30
+ var ConnectorType;
31
+ (function (ConnectorType) {
32
+ ConnectorType["STORAGE"] = "STORAGE";
33
+ ConnectorType["HOSTING"] = "HOSTING";
34
+ })(ConnectorType || (exports.ConnectorType = ConnectorType = {}));
35
+ var JobStatus;
36
+ (function (JobStatus) {
37
+ JobStatus["IN_PROGRESS"] = "IN_PROGRESS";
38
+ JobStatus["SUCCESS"] = "SUCCESS";
39
+ JobStatus["ERROR"] = "ERROR";
40
+ })(JobStatus || (exports.JobStatus = JobStatus = {}));