@silexlabs/silex 3.0.0-alpha.41 → 3.0.0-alpha.43

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 (207) hide show
  1. package/.silex.js +2 -11
  2. package/dist/client/client/api.d.ts +83 -0
  3. package/dist/client/client/config.d.ts +3 -3
  4. package/dist/client/client/events.d.ts +12 -0
  5. package/dist/client/client/expose.d.ts +6 -0
  6. package/dist/client/client/grapesjs/LoginDialog.d.ts +3 -2
  7. package/dist/client/client/grapesjs/PublicationManager.d.ts +9 -3
  8. package/dist/client/client/grapesjs/PublicationUi.d.ts +9 -6
  9. package/dist/client/client/grapesjs/index.d.ts +4 -4
  10. package/dist/client/client/grapesjs/openImport.d.ts +5 -0
  11. package/dist/client/constants.d.ts +23 -14
  12. package/dist/client/css/admin.css +5 -0
  13. package/dist/client/js/main.js +90 -111
  14. package/dist/client/js/main.js.LICENSE.txt +0 -6
  15. package/dist/client/page.d.ts +1 -1
  16. package/dist/client/types.d.ts +125 -86
  17. package/dist/plugins/client/client/events.d.ts +12 -0
  18. package/dist/plugins/client/client/events.js +30 -0
  19. package/dist/plugins/client/client/events.js.map +1 -0
  20. package/dist/plugins/client/client/utils.d.ts +1 -0
  21. package/{src/ts/events.ts → dist/plugins/client/client/utils.js} +9 -3
  22. package/dist/plugins/client/client/utils.js.map +1 -0
  23. package/dist/plugins/client/constants.d.ts +30 -0
  24. package/dist/plugins/client/constants.js +47 -0
  25. package/dist/plugins/client/constants.js.map +1 -0
  26. package/dist/plugins/client/page.d.ts +2 -0
  27. package/dist/plugins/client/page.js +31 -0
  28. package/dist/plugins/client/page.js.map +1 -0
  29. package/dist/plugins/client/plugins/client/publicationRenderer.d.ts +2 -0
  30. package/dist/plugins/client/plugins/client/publicationRenderer.js +128 -0
  31. package/dist/plugins/client/plugins/client/publicationRenderer.js.map +1 -0
  32. package/dist/plugins/client/plugins/client/template.d.ts +2 -0
  33. package/dist/plugins/client/plugins/client/template.js +186 -0
  34. package/dist/plugins/client/plugins/client/template.js.map +1 -0
  35. package/dist/plugins/client/server/config.d.ts +59 -0
  36. package/dist/plugins/client/server/config.js +178 -0
  37. package/dist/plugins/client/server/config.js.map +1 -0
  38. package/dist/plugins/client/server/connectors/FsHosting.d.ts +13 -0
  39. package/dist/plugins/client/server/connectors/FsHosting.js +51 -0
  40. package/dist/plugins/client/server/connectors/FsHosting.js.map +1 -0
  41. package/dist/plugins/client/server/connectors/FsStorage.d.ts +41 -0
  42. package/dist/plugins/client/server/connectors/FsStorage.js +220 -0
  43. package/dist/plugins/client/server/connectors/FsStorage.js.map +1 -0
  44. package/dist/plugins/client/server/connectors/connectors.d.ts +83 -0
  45. package/dist/plugins/client/server/connectors/connectors.js +91 -0
  46. package/dist/plugins/client/server/connectors/connectors.js.map +1 -0
  47. package/dist/plugins/client/server/events.d.ts +26 -0
  48. package/dist/plugins/client/server/events.js +12 -0
  49. package/dist/plugins/client/server/events.js.map +1 -0
  50. package/dist/plugins/client/server/jobs.js +67 -0
  51. package/dist/plugins/client/server/jobs.js.map +1 -0
  52. package/dist/plugins/client/server/utils/validation.js +34 -0
  53. package/dist/plugins/client/server/utils/validation.js.map +1 -0
  54. package/dist/plugins/client/types.d.ts +309 -0
  55. package/dist/plugins/client/types.js +49 -0
  56. package/dist/plugins/client/types.js.map +1 -0
  57. package/dist/plugins/server/constants.d.ts +30 -0
  58. package/dist/plugins/server/constants.js +50 -0
  59. package/dist/plugins/server/constants.js.map +1 -0
  60. package/dist/plugins/server/plugins/server/AuthPlugin.js.map +1 -0
  61. package/dist/plugins/server/plugins/server/Cache.js.map +1 -0
  62. package/dist/plugins/server/plugins/server/FtpConnector.d.ts +94 -0
  63. package/dist/plugins/server/plugins/server/FtpConnector.js +521 -0
  64. package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -0
  65. package/dist/plugins/{HooksPlugin.d.ts → server/plugins/server/HooksPlugin.d.ts} +1 -1
  66. package/dist/plugins/{HooksPlugin.js → server/plugins/server/HooksPlugin.js} +8 -10
  67. package/dist/plugins/server/plugins/server/HooksPlugin.js.map +1 -0
  68. package/dist/plugins/server/plugins/server/PublicationOptimizer.d.ts +0 -0
  69. package/dist/plugins/server/plugins/server/PublicationOptimizer.js +14 -0
  70. package/dist/plugins/server/plugins/server/PublicationOptimizer.js.map +1 -0
  71. package/dist/plugins/{SslPlugin.js → server/plugins/server/SslPlugin.js} +8 -8
  72. package/dist/plugins/server/plugins/server/SslPlugin.js.map +1 -0
  73. package/dist/plugins/{StaticPlugin.js → server/plugins/server/StaticPlugin.js} +9 -4
  74. package/dist/plugins/server/plugins/server/StaticPlugin.js.map +1 -0
  75. package/dist/plugins/server/server/config.d.ts +59 -0
  76. package/dist/plugins/server/server/config.js +182 -0
  77. package/dist/plugins/server/server/config.js.map +1 -0
  78. package/dist/plugins/server/server/connectors/FsHosting.d.ts +13 -0
  79. package/dist/plugins/server/server/connectors/FsHosting.js +55 -0
  80. package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -0
  81. package/dist/plugins/server/server/connectors/FsStorage.d.ts +41 -0
  82. package/dist/{server/backends/FsBackend.js → plugins/server/server/connectors/FsStorage.js} +103 -125
  83. package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -0
  84. package/dist/plugins/server/server/connectors/connectors.d.ts +83 -0
  85. package/dist/plugins/server/server/connectors/connectors.js +99 -0
  86. package/dist/plugins/server/server/connectors/connectors.js.map +1 -0
  87. package/dist/plugins/server/server/events.d.ts +26 -0
  88. package/dist/plugins/server/server/events.js +15 -0
  89. package/dist/plugins/server/server/events.js.map +1 -0
  90. package/dist/plugins/server/server/jobs.d.ts +6 -0
  91. package/dist/plugins/server/server/jobs.js.map +1 -0
  92. package/dist/plugins/server/server/utils/validation.d.ts +7 -0
  93. package/dist/{server → plugins/server/server}/utils/validation.js +3 -2
  94. package/dist/plugins/server/server/utils/validation.js.map +1 -0
  95. package/dist/plugins/server/types.d.ts +309 -0
  96. package/dist/{types.js → plugins/server/types.js} +18 -7
  97. package/dist/plugins/server/types.js.map +1 -0
  98. package/dist/server/constants.js +30 -0
  99. package/dist/server/plugins/server/Cache.js +15 -0
  100. package/dist/server/server/api/api.js +20 -0
  101. package/dist/server/server/api/connectorApi.js +200 -0
  102. package/dist/server/server/api/publicationApi.js +116 -0
  103. package/dist/server/server/api/websiteApi.js +297 -0
  104. package/dist/server/{cli.js → server/cli.js} +6 -5
  105. package/dist/server/server/config.js +121 -0
  106. package/dist/server/server/connectors/FsHosting.js +37 -0
  107. package/dist/server/server/connectors/FsStorage.js +218 -0
  108. package/dist/server/server/connectors/connectors.js +65 -0
  109. package/dist/server/server/events.js +14 -0
  110. package/dist/server/{express.js → server/express.js} +4 -3
  111. package/dist/server/{index.js → server/index.js} +14 -7
  112. package/dist/server/server/jobs.js +47 -0
  113. package/dist/server/server/utils/validation.js +15 -0
  114. package/dist/server/types.js +19 -0
  115. package/package.json +26 -15
  116. package/src/css/grapesjs.scss +5 -0
  117. package/src/ts/client/api.ts +135 -0
  118. package/src/ts/client/config.ts +3 -3
  119. package/{dist/events.js → src/ts/client/events.ts} +13 -6
  120. package/src/ts/client/expose.ts +11 -0
  121. package/src/ts/client/grapesjs/LoginDialog.ts +33 -32
  122. package/src/ts/client/grapesjs/PublicationManager.ts +86 -112
  123. package/src/ts/client/grapesjs/PublicationUi.ts +43 -33
  124. package/src/ts/client/grapesjs/eleventy.ts +4 -1
  125. package/src/ts/client/grapesjs/index.ts +6 -19
  126. package/src/ts/client/grapesjs/openImport.ts +5 -0
  127. package/src/ts/client/grapesjs/storage.ts +18 -14
  128. package/src/ts/client/index.ts +21 -15
  129. package/src/ts/constants.ts +24 -14
  130. package/src/ts/page.ts +1 -1
  131. package/src/ts/plugins/client/publicationRenderer.ts +128 -0
  132. package/src/ts/plugins/client/template.ts +196 -0
  133. package/src/ts/plugins/server/FtpConnector.ts +602 -0
  134. package/src/ts/plugins/{HooksPlugin.ts → server/HooksPlugin.ts} +9 -12
  135. package/src/ts/plugins/server/PublicationOptimizer.ts +14 -0
  136. package/src/ts/plugins/{SslPlugin.ts → server/SslPlugin.ts} +8 -8
  137. package/src/ts/plugins/{StaticPlugin.ts → server/StaticPlugin.ts} +8 -4
  138. package/src/ts/server/api/api.ts +19 -0
  139. package/src/ts/server/api/connectorApi.ts +322 -0
  140. package/src/ts/server/api/publicationApi.ts +166 -0
  141. package/src/ts/server/api/websiteApi.ts +420 -0
  142. package/src/ts/server/cli.ts +7 -5
  143. package/src/ts/server/config.ts +107 -95
  144. package/src/ts/server/connectors/FsHosting.ts +60 -0
  145. package/src/ts/server/connectors/FsStorage.ts +247 -0
  146. package/src/ts/server/connectors/connectors.ts +173 -0
  147. package/src/ts/server/events.ts +20 -0
  148. package/src/ts/server/express.ts +4 -3
  149. package/src/ts/server/index.ts +19 -15
  150. package/src/ts/server/jobs.test.ts +1 -0
  151. package/src/ts/server/utils/BackwardCompat.ts +1 -1
  152. package/src/ts/server/utils/validation.ts +3 -2
  153. package/src/ts/types.ts +93 -61
  154. package/.silex/default/website.json +0 -1
  155. package/dist/client/client/grapesjs/eleventy.d.ts +0 -1
  156. package/dist/client/client/grapesjs/template.d.ts +0 -1
  157. package/dist/client/client/services.d.ts +0 -35
  158. package/dist/client/events.d.ts +0 -2
  159. package/dist/constants.d.ts +0 -21
  160. package/dist/constants.js +0 -41
  161. package/dist/constants.js.map +0 -1
  162. package/dist/events.d.ts +0 -2
  163. package/dist/events.js.map +0 -1
  164. package/dist/plugins/AuthPlugin.js.map +0 -1
  165. package/dist/plugins/Cache.js.map +0 -1
  166. package/dist/plugins/FtpBackend.d.ts +0 -92
  167. package/dist/plugins/FtpBackend.js +0 -604
  168. package/dist/plugins/FtpBackend.js.map +0 -1
  169. package/dist/plugins/HooksPlugin.js.map +0 -1
  170. package/dist/plugins/PublicationPlugin.d.ts +0 -17
  171. package/dist/plugins/PublicationPlugin.js +0 -170
  172. package/dist/plugins/PublicationPlugin.js.map +0 -1
  173. package/dist/plugins/SslPlugin.js.map +0 -1
  174. package/dist/plugins/StaticPlugin.js.map +0 -1
  175. package/dist/plugins/WebsitePlugin.d.ts +0 -14
  176. package/dist/plugins/WebsitePlugin.js +0 -302
  177. package/dist/plugins/WebsitePlugin.js.map +0 -1
  178. package/dist/server/backends/FsBackend.d.ts +0 -42
  179. package/dist/server/backends/FsBackend.js.map +0 -1
  180. package/dist/server/backends/index.d.ts +0 -95
  181. package/dist/server/backends/index.js +0 -255
  182. package/dist/server/backends/index.js.map +0 -1
  183. package/dist/server/config.d.ts +0 -58
  184. package/dist/server/config.js +0 -174
  185. package/dist/server/config.js.map +0 -1
  186. package/dist/server/jobs.js.map +0 -1
  187. package/dist/server/utils/validation.js.map +0 -1
  188. package/dist/types.d.ts +0 -270
  189. package/dist/types.js.map +0 -1
  190. package/src/ts/client/grapesjs/template.ts +0 -183
  191. package/src/ts/client/services.ts +0 -129
  192. package/src/ts/plugins/FtpBackend.ts +0 -689
  193. package/src/ts/plugins/PublicationPlugin.ts +0 -170
  194. package/src/ts/plugins/WebsitePlugin.ts +0 -318
  195. package/src/ts/server/backends/FsBackend.ts +0 -266
  196. package/src/ts/server/backends/index.ts +0 -309
  197. /package/dist/{server → plugins/client/server}/jobs.d.ts +0 -0
  198. /package/dist/{server → plugins/client/server}/utils/validation.d.ts +0 -0
  199. /package/dist/plugins/{AuthPlugin.d.ts → server/plugins/server/AuthPlugin.d.ts} +0 -0
  200. /package/dist/plugins/{AuthPlugin.js → server/plugins/server/AuthPlugin.js} +0 -0
  201. /package/dist/plugins/{Cache.d.ts → server/plugins/server/Cache.d.ts} +0 -0
  202. /package/dist/plugins/{Cache.js → server/plugins/server/Cache.js} +0 -0
  203. /package/dist/plugins/{SslPlugin.d.ts → server/plugins/server/SslPlugin.d.ts} +0 -0
  204. /package/dist/plugins/{StaticPlugin.d.ts → server/plugins/server/StaticPlugin.d.ts} +0 -0
  205. /package/dist/{server → plugins/server/server}/jobs.js +0 -0
  206. /package/src/ts/plugins/{AuthPlugin.ts → server/AuthPlugin.ts} +0 -0
  207. /package/src/ts/plugins/{Cache.ts → server/Cache.ts} +0 -0
@@ -0,0 +1,521 @@
1
+ "use strict";
2
+ /*
3
+ * Silex website builder, free/libre no-code tool for makers.
4
+ * Copyright (c) 2023 lexoyo and Silex Labs foundation
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License as published by
8
+ * the Free Software Foundation, either version 3 of the License, or any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const basic_ftp_1 = require("basic-ftp");
20
+ const stream_1 = require("stream");
21
+ const connectors_1 = require("../../server/connectors/connectors");
22
+ const validation_1 = require("../../server/utils/validation");
23
+ const constants_1 = require("../../constants");
24
+ const types_1 = require("../../types");
25
+ const jobs_1 = require("../../server/jobs");
26
+ const path_1 = require("path");
27
+ const os_1 = require("os");
28
+ const uuid_1 = require("uuid");
29
+ // **
30
+ // Utils methos
31
+ function formHtml(redirectTo, type, { host, user, pass, port, secure, storageRootPath, publicationPath, websiteUrl }, err = '') {
32
+ return `
33
+ ${err && `<div class="error">${err || ''}</div>`}
34
+ <form method="POST" action="${redirectTo}">
35
+ <label for="host">Host</label>
36
+ <input placeholder="ftp.example.com" type="text" name="host" value="${host || ''}" />
37
+ <label for="user">User</label>
38
+ <input placeholder="user" type="text" name="user" value="${user || ''}" />
39
+ <label for="pass">Pass</label>
40
+ <input placeholder="****" type="password" name="pass" value="${pass || ''}" />
41
+ <label for="port">Port</label>
42
+ <input placeholder="21" type="number" name="port" value="${port || '21'}" />
43
+ <div class="checkbox-container">
44
+ <input class="checkbox" type="checkbox" name="secure" value="true" ${secure ? 'checked' : ''} />
45
+ <label for="secure">Secure</label>
46
+ </div>
47
+ ${type === types_1.ConnectorType.STORAGE ? `
48
+ <details>
49
+ <summary>Storage options</summary>
50
+ <p>If you are not sure, don't change this</p>
51
+ <label for="storageRootPath">Root path where to store the website files</label>
52
+ <input placeholder="/silex/" type="text" name="storageRootPath" value="${storageRootPath || '/silex/'}" />
53
+ </details>
54
+ ` : ''}
55
+ ${type === types_1.ConnectorType.HOSTING ? `
56
+ <fieldset>
57
+ <legend>Publication options</legend>
58
+ <label for="publicationPath">Path where to publish</label>
59
+ <input placeholder="/public_html/" type="text" name="publicationPath" value="${publicationPath || ''}" />
60
+ <label for="websiteUrl">URL where to the site will be accessible</label>
61
+ <input placeholder="https://mysite.com/" type="text" name="websiteUrl" value="${websiteUrl || ''}" />
62
+ </fieldset>
63
+ ` : ''}
64
+ <div class="button-container">
65
+ <button type="submit" class="primary-button">Login</button>
66
+ <button type="button" class="secondary-button">Cancel</button>
67
+ </div>
68
+ </form>
69
+ `;
70
+ }
71
+ const formCss = `
72
+ /* Reset default form styles */
73
+ form {
74
+ margin: 0;
75
+ padding: 0;
76
+ }
77
+
78
+ /* Center the form */
79
+ body {
80
+ display: flex;
81
+ justify-content: center;
82
+ align-items: center;
83
+ height: 100vh;
84
+ background-color: #f5f5f5;
85
+ }
86
+
87
+ /* Style form container */
88
+ form {
89
+ width: 400px;
90
+ padding: 20px;
91
+ border-radius: 4px;
92
+ background-color: white;
93
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
94
+ }
95
+
96
+ /* Style form labels */
97
+ label {
98
+ font-weight: bold;
99
+ margin-bottom: 5px;
100
+ color: #333;
101
+ }
102
+
103
+ /* Style form inputs */
104
+ input {
105
+ width: 100%;
106
+ padding: 8px;
107
+ margin-bottom: 10px;
108
+ border: 1px solid #ccc;
109
+ border-radius: 4px;
110
+ }
111
+ input.checkbox {
112
+ width: 20px;
113
+ height: 20px;
114
+ }
115
+ fieldset {
116
+ padding: 20px;
117
+ }
118
+
119
+ /* Style form buttons */
120
+ .button-container {
121
+ display: flex;
122
+ justify-content: space-between;
123
+ margin-top: 20px;
124
+ }
125
+
126
+ .primary-button,
127
+ .secondary-button {
128
+ width: 48%;
129
+ padding: 10px;
130
+ border: none;
131
+ border-radius: 4px;
132
+ cursor: pointer;
133
+ transition: background-color 0.3s ease;
134
+ }
135
+
136
+ .primary-button {
137
+ background-color: #4caf50;
138
+ color: white;
139
+ }
140
+
141
+ .secondary-button {
142
+ background-color: #e0e0e0;
143
+ color: #333;
144
+ }
145
+
146
+ .primary-button:hover,
147
+ .secondary-button:hover {
148
+ background-color: #388e3c;
149
+ }
150
+
151
+ /* Style form checkbox */
152
+ .checkbox-container {
153
+ display: flex;
154
+ align-items: center;
155
+ margin-bottom: 10px;
156
+ margin: 20px 0;
157
+ }
158
+
159
+ .checkbox-container label {
160
+ margin-left: 5px;
161
+ color: #333;
162
+ }
163
+
164
+ /* Style details and summary elements */
165
+ details {
166
+ margin-top: 20px;
167
+ color: #333;
168
+ }
169
+
170
+ summary {
171
+ font-weight: bold;
172
+ cursor: pointer;
173
+ }
174
+
175
+ details > p {
176
+ margin-top: 10px;
177
+ }
178
+ `;
179
+ /**
180
+ * @class FtpConnector
181
+ * @implements {HostingConnector}
182
+ * @implements {StorageConnector}
183
+ */
184
+ class FtpConnector {
185
+ connectorId = 'ftp';
186
+ displayName = 'Ftp';
187
+ icon = 'ftp';
188
+ options;
189
+ connectorType;
190
+ constructor(config, opts) {
191
+ this.options = {
192
+ path: '',
193
+ authorizeUrl: '/api/authorize/ftp/',
194
+ authorizePath: '/api/authorize/ftp/',
195
+ ...opts,
196
+ };
197
+ this.connectorType = this.options.type;
198
+ }
199
+ // **
200
+ // Utils
201
+ sessionData(session) {
202
+ return session[this.options.type] ?? {};
203
+ }
204
+ rootPath(session) {
205
+ return this.connectorType === types_1.ConnectorType.STORAGE ?
206
+ (0, validation_1.requiredParam)(this.sessionData(session).storageRootPath, 'storage root path') :
207
+ (0, validation_1.requiredParam)(this.sessionData(session).publicationPath, 'publication path');
208
+ }
209
+ // **
210
+ // FTP methods
211
+ async write(ftp, path, content, progress) {
212
+ ftp.trackProgress(info => {
213
+ progress && progress(`Uploading ${info.bytes / 1000} KB}`);
214
+ });
215
+ progress && progress('Upload started');
216
+ await ftp.uploadFrom((0, connectors_1.contentToReadable)(content), path);
217
+ progress && progress('Upload complete');
218
+ return path;
219
+ }
220
+ async read(ftp, path) {
221
+ const stream = new stream_1.PassThrough();
222
+ await ftp.downloadTo(stream, path);
223
+ return stream;
224
+ }
225
+ async readdir(ftp, path) {
226
+ const list = await ftp.list(path);
227
+ return list.map((file) => ({
228
+ name: file.name,
229
+ isDir: file.isDirectory,
230
+ size: file.size,
231
+ createdAt: file.modifiedAt,
232
+ updatedAt: file.modifiedAt,
233
+ metaData: file,
234
+ }));
235
+ }
236
+ async mkdir(ftp, path) {
237
+ return ftp.ensureDir(path);
238
+ }
239
+ async rmdir(ftp, path) {
240
+ return ftp.removeDir(path);
241
+ }
242
+ async unlink(ftp, path) {
243
+ return ftp.remove(path);
244
+ }
245
+ async getClient({ host, user, pass, port, secure }) {
246
+ const ftp = new basic_ftp_1.Client();
247
+ await ftp.access({
248
+ host,
249
+ port,
250
+ user,
251
+ password: pass,
252
+ secure,
253
+ });
254
+ ftp['test'] = (0, uuid_1.v4)();
255
+ return ftp;
256
+ }
257
+ closeClient(ftp) {
258
+ if (ftp && !ftp.closed) {
259
+ ftp.close();
260
+ }
261
+ else {
262
+ console.warn('ftp already closed');
263
+ }
264
+ }
265
+ // **
266
+ // Connector interface
267
+ getOptions(formData) {
268
+ return {
269
+ // Storage
270
+ storageRootPath: formData['storageRootPath'],
271
+ // Hosting
272
+ publicationPath: formData['publicationPath'],
273
+ websiteUrl: formData['websiteUrl'],
274
+ };
275
+ }
276
+ async getOAuthUrl(session) { return null; }
277
+ async getLoginForm(session, redirectTo) {
278
+ const { host, user, pass, port, secure, publicationPath, storageRootPath, websiteUrl } = this.sessionData(session);
279
+ (0, validation_1.requiredParam)(os_1.type, 'connector type');
280
+ return `
281
+ <style>
282
+ ${formCss}
283
+ </style>
284
+ ${formHtml(redirectTo, this.connectorType, { host, user, pass, port, secure, publicationPath, storageRootPath, websiteUrl })}
285
+ `;
286
+ }
287
+ async getSettingsForm(session, redirectTo) { return null; }
288
+ async setToken(session, token) {
289
+ // Check all required params are present
290
+ const { host, user, pass, port, secure = false, publicationPath, storageRootPath, websiteUrl } = token;
291
+ (0, validation_1.requiredParam)(session, 'session');
292
+ (0, validation_1.requiredParam)(host, 'host');
293
+ (0, validation_1.requiredParam)(user, 'user');
294
+ (0, validation_1.requiredParam)(pass, 'pass');
295
+ (0, validation_1.requiredParam)(port, 'port');
296
+ // Check if the connection is valid
297
+ const ftp = await this.getClient({ host, user, pass, port, secure });
298
+ // Save the token
299
+ session[this.connectorType] = { host, user, pass, port, secure, publicationPath, storageRootPath, websiteUrl };
300
+ // Clean up
301
+ this.closeClient(ftp);
302
+ }
303
+ async logout(session) {
304
+ delete session[this.options.type];
305
+ }
306
+ async getUser(session) {
307
+ return {
308
+ name: this.sessionData(session).user,
309
+ picture: 'data://image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAA',
310
+ storage: await (0, connectors_1.toConnectorData)(session, this)
311
+ };
312
+ }
313
+ async isLoggedIn(session) {
314
+ try {
315
+ if (!session[this.options.type]) {
316
+ return false;
317
+ }
318
+ const ftp = await this.getClient(this.sessionData(session));
319
+ this.closeClient(ftp);
320
+ return true;
321
+ }
322
+ catch (err) {
323
+ return false;
324
+ }
325
+ }
326
+ async setWebsiteMeta(session, id, data) {
327
+ const websiteId = (0, validation_1.requiredParam)(id, 'website id');
328
+ const path = (0, path_1.join)(this.rootPath(session), websiteId, constants_1.WEBSITE_META_DATA_FILE);
329
+ const ftp = await this.getClient(this.sessionData(session));
330
+ await this.write(ftp, path, JSON.stringify(data));
331
+ this.closeClient(ftp);
332
+ }
333
+ async getWebsiteMeta(session, id) {
334
+ try {
335
+ const websiteId = (0, validation_1.requiredParam)(id, 'website id');
336
+ const ftp = await this.getClient(this.sessionData(session));
337
+ // Get stats for the website folder
338
+ const folder = (0, path_1.join)(this.rootPath(session), websiteId);
339
+ const lastMod = await ftp.lastMod(folder);
340
+ // Read the meta data file to get the meta data set by the user
341
+ const path = (0, path_1.join)(this.rootPath(session), websiteId, constants_1.WEBSITE_META_DATA_FILE);
342
+ const readable = await this.read(ftp, path);
343
+ const meta = JSON.parse(await (0, connectors_1.contentToString)(readable));
344
+ this.closeClient(ftp);
345
+ // Return all meta
346
+ return {
347
+ websiteId,
348
+ //url: await this.getFileUrl(session, websiteId, WEBSITE_DATA_FILE_NAME),
349
+ createdAt: lastMod,
350
+ updatedAt: lastMod,
351
+ ...meta,
352
+ };
353
+ }
354
+ catch (err) {
355
+ console.error(err);
356
+ throw err;
357
+ }
358
+ }
359
+ // **
360
+ // Storage interface
361
+ /**
362
+ * Create necessary folders
363
+ * Assets and root folders
364
+ */
365
+ async createWebsite(session) {
366
+ const ftp = await this.getClient(this.sessionData(session));
367
+ // Generate a random id
368
+ const id = (0, uuid_1.v4)();
369
+ // // create root folder
370
+ // const rootPath = join(this.storageRootPath(session), id)
371
+ // await this.mkdir(ftp, rootPath)
372
+ // create assets folder
373
+ const assetsPath = (0, path_1.join)(this.rootPath(session), id, '/assets');
374
+ await this.mkdir(ftp, assetsPath);
375
+ // create website data file
376
+ const websiteDataPath = (0, path_1.join)(this.rootPath(session), id, constants_1.WEBSITE_DATA_FILE);
377
+ await this.write(ftp, websiteDataPath, JSON.stringify(types_1.defaultWebsiteData));
378
+ // create website meta data file
379
+ const websiteMetaDataPath = (0, path_1.join)(this.rootPath(session), id, constants_1.WEBSITE_META_DATA_FILE);
380
+ await this.write(ftp, websiteMetaDataPath, JSON.stringify({}));
381
+ // Clean up
382
+ this.closeClient(ftp);
383
+ // All good
384
+ return id;
385
+ }
386
+ async listWebsites(session) {
387
+ const storageRootPath = this.rootPath(session);
388
+ const ftp = await this.getClient(this.sessionData(session));
389
+ const files = await this.readdir(ftp, storageRootPath);
390
+ const list = await Promise.all(files.map(async (file) => {
391
+ const websiteId = file.name;
392
+ const websiteMeta = await this.getWebsiteMeta(session, websiteId);
393
+ return websiteMeta;
394
+ }));
395
+ this.closeClient(ftp);
396
+ return list;
397
+ }
398
+ async readWebsite(session, websiteId) {
399
+ const storageRootPath = this.rootPath(session);
400
+ const ftp = await this.getClient(this.sessionData(session));
401
+ const websiteDataPath = (0, path_1.join)(storageRootPath, websiteId, constants_1.WEBSITE_DATA_FILE);
402
+ const data = await this.read(ftp, websiteDataPath);
403
+ this.closeClient(ftp);
404
+ return data;
405
+ }
406
+ async updateWebsite(session, websiteId, data) {
407
+ const storageRootPath = this.rootPath(session);
408
+ const ftp = await this.getClient(this.sessionData(session));
409
+ const websiteDataPath = (0, path_1.join)(storageRootPath, websiteId, constants_1.WEBSITE_DATA_FILE);
410
+ await this.write(ftp, websiteDataPath, JSON.stringify(data));
411
+ this.closeClient(ftp);
412
+ }
413
+ async deleteWebsite(session, websiteId) {
414
+ const storageRootPath = this.rootPath(session);
415
+ const ftp = await this.getClient(this.sessionData(session));
416
+ const websitePath = (0, path_1.join)(storageRootPath, websiteId);
417
+ await this.rmdir(ftp, websitePath);
418
+ this.closeClient(ftp);
419
+ }
420
+ async writeAssets(session, id, files, statusCbk) {
421
+ // Connect to FTP server
422
+ statusCbk && statusCbk({
423
+ message: 'Connecting to FTP server',
424
+ status: types_1.JobStatus.IN_PROGRESS,
425
+ });
426
+ const ftp = await this.getClient(this.sessionData(session));
427
+ const rootPath = this.rootPath(session);
428
+ // Make sure that root folder exists
429
+ statusCbk && statusCbk({
430
+ message: 'Making sure that root folder exists',
431
+ status: types_1.JobStatus.IN_PROGRESS,
432
+ });
433
+ await this.mkdir(ftp, rootPath);
434
+ // Write files
435
+ const paths = [];
436
+ let lastFile;
437
+ try {
438
+ // Sequentially write files
439
+ for (const file of files) {
440
+ statusCbk && statusCbk({
441
+ message: `Writing file ${file.path}`,
442
+ status: types_1.JobStatus.IN_PROGRESS,
443
+ });
444
+ const dstPath = (0, path_1.join)(this.options.path, rootPath, id, file.path);
445
+ lastFile = file;
446
+ const result = await this.write(ftp, dstPath, file.content, message => {
447
+ statusCbk && statusCbk({
448
+ message: `Writing file ${file.path.split('/').pop()} to ${dstPath.split('/').slice(0, -1).join('/')}: ${message}`,
449
+ status: types_1.JobStatus.IN_PROGRESS,
450
+ });
451
+ });
452
+ paths.push(result);
453
+ }
454
+ this.closeClient(ftp);
455
+ statusCbk && statusCbk({
456
+ message: `Finished writing ${paths.length} files to ${rootPath}`,
457
+ status: types_1.JobStatus.SUCCESS,
458
+ });
459
+ return paths;
460
+ }
461
+ catch (err) {
462
+ // Not sure why it never gets here
463
+ statusCbk && statusCbk({
464
+ message: `Error writing file ${lastFile?.path}: ${err.message}`,
465
+ status: types_1.JobStatus.ERROR,
466
+ });
467
+ this.closeClient(ftp);
468
+ return [];
469
+ }
470
+ }
471
+ async readAsset(session, id, path) {
472
+ if (!this.sessionData(session))
473
+ throw new Error('Not logged in');
474
+ const storageRootPath = this.rootPath(session);
475
+ const ftp = await this.getClient(this.sessionData(session));
476
+ const dirPath = (0, path_1.join)(this.options.path, storageRootPath, id, path);
477
+ const asset = this.read(ftp, dirPath);
478
+ this.closeClient(ftp);
479
+ return asset;
480
+ }
481
+ async deleteAssets(session, id, paths) {
482
+ const storageRootPath = this.rootPath(session);
483
+ const ftp = await this.getClient(this.sessionData(session));
484
+ await Promise.all(paths.map((path) => this.unlink(ftp, (0, path_1.join)(this.options.path, storageRootPath, id, path))));
485
+ this.closeClient(ftp);
486
+ }
487
+ // **
488
+ // Hosting interface
489
+ async getUrl(session, id) {
490
+ // FIXME: do not store websiteUrl in the session, but in the website data
491
+ console.warn('FIXME: do not store websiteUrl in the session, but in the website data');
492
+ return this.sessionData(session).websiteUrl ?? '';
493
+ }
494
+ async publish(session, id, files) {
495
+ const job = (0, jobs_1.startJob)(`Publishing to ${this.displayName}`);
496
+ job.logs = [[`Publishing to ${this.displayName}`]];
497
+ job.errors = [[]];
498
+ // Create folders
499
+ const rootPath = this.rootPath(session);
500
+ const ftp = await this.getClient(this.sessionData(session));
501
+ await this.mkdir(ftp, rootPath);
502
+ await this.mkdir(ftp, (0, path_1.join)(rootPath, 'assets'));
503
+ // Write files
504
+ this.writeAssets(session, '', files, async ({ status, message }) => {
505
+ // Update the job status
506
+ job.status = status;
507
+ job.message = message;
508
+ job.logs[0].push(message);
509
+ if (status === types_1.JobStatus.SUCCESS) {
510
+ (0, jobs_1.jobSuccess)(job.jobId, message);
511
+ }
512
+ else if (status === types_1.JobStatus.ERROR) {
513
+ job.errors[0].push(message);
514
+ (0, jobs_1.jobError)(job.jobId, message);
515
+ }
516
+ });
517
+ return job;
518
+ }
519
+ }
520
+ exports.default = FtpConnector;
521
+ //# sourceMappingURL=FtpConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FtpConnector.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/server/FtpConnector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAEH,yCAAkC;AAClC,mCAAwD;AACxD,mEAAiN;AACjN,8DAA6D;AAC7D,+CAA2E;AAC3E,uCAA+M;AAC/M,4CAAkE;AAElE,+BAA2B;AAC3B,2BAAyB;AACzB,+BAAiC;AAiDjC,KAAK;AACL,eAAe;AACf,SAAS,QAAQ,CAAC,UAAkB,EAAE,IAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAiB,EAAE,GAAG,GAAG,EAAE;IAClK,OAAO;MACF,GAAG,IAAI,sBAAsB,GAAG,IAAI,EAAE,QAAS;kCACpB,UAAU;;4EAEgC,IAAI,IAAI,EAAE;;iEAErB,IAAI,IAAI,EAAE;;qEAEN,IAAI,IAAI,EAAE;;iEAEd,IAAI,IAAI,IAAI;;6EAEA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;QAG3F,IAAI,KAAK,qBAAa,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;iFAKuC,eAAe,IAAI,SAAS;;OAEtG,CAAC,CAAC,CAAC,EAAE;QACH,IAAI,KAAK,qBAAa,CAAC,OAAO,CAAC,CAAC,CAAC;;;;uFAI6C,eAAe,IAAI,EAAE;;wFAEpB,UAAU,IAAI,EAAE;;OAEjG,CAAC,CAAC,CAAC,EAAE;;;;;;GAMT,CAAA;AACH,CAAC;AAED,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Gf,CAAA;AAED;;;;GAIG;AACH,MAAqB,YAAY;IAC/B,WAAW,GAAG,KAAK,CAAA;IACnB,WAAW,GAAG,KAAK,CAAA;IACnB,IAAI,GAAG,KAAK,CAAA;IACZ,OAAO,CAAwB;IAC/B,aAAa,CAAe;IAE5B,YAAY,MAAoB,EAAE,IAAgB;QAChD,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,EAAE;YACR,YAAY,EAAE,qBAAqB;YACnC,aAAa,EAAE,qBAAqB;YACpC,GAAG,IAAI;SACR,CAAA;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IACxC,CAAC;IAED,KAAK;IACL,QAAQ;IACR,WAAW,CAAC,OAAmB;QAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAoB,CAAA;IAC3D,CAAC;IAED,QAAQ,CAAC,OAAmB;QAC1B,OAAO,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,OAAO,CAAC,CAAC;YACnD,IAAA,0BAAa,EAAS,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;YACvF,IAAA,0BAAa,EAAS,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAA;IACxF,CAAC;IAED,KAAK;IACL,cAAc;IACd,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAY,EAAE,OAA6B,EAAE,QAAoC;QACxG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YACvB,QAAQ,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QACF,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QACtC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAA,8BAAiB,EAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;QACtD,QAAQ,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,IAAY;QAClC,MAAM,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAA;QAChC,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAY;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,QAAQ,EAAE,IAAI;SACF,CAAA,CAAC,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAY;QACnC,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAY;QACnC,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,IAAY;QACpC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,kBAAM,EAAE,CAAA;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC;YACf,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,QAAQ,EAAE,IAAI;YACd,MAAM;SACP,CAAC,CAAA;QACF,GAAG,CAAC,MAAM,CAAC,GAAG,IAAA,SAAI,GAAE,CAAA;QACpB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,IAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACrB,GAAG,CAAC,KAAK,EAAE,CAAA;SACZ;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;SACnC;IACH,CAAC;IAED,KAAK;IACL,sBAAsB;IACtB,UAAU,CAAC,QAAgB;QACzB,OAAO;YACL,UAAU;YACV,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC;YAC5C,UAAU;YACV,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC;YAC5C,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;SACnC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB,IAA4B,OAAO,IAAI,CAAA,CAAC,CAAC;IAE9E,KAAK,CAAC,YAAY,CAAC,OAAmB,EAAE,UAAkB;QACxD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAClH,IAAA,0BAAa,EAAC,SAAI,EAAE,gBAAgB,CAAC,CAAA;QACrC,OAAO;;YAEC,OAAO;;UAET,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;OAC7H,CAAA;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAmB,EAAE,UAAkB,IAA4B,OAAO,IAAI,CAAA,CAAC,CAAC;IAEtG,KAAK,CAAC,QAAQ,CAAC,OAAmB,EAAE,KAAa;QAC/C,wCAAwC;QACxC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,KAAuB,CAAA;QACxH,IAAA,0BAAa,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QACjC,IAAA,0BAAa,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3B,IAAA,0BAAa,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3B,IAAA,0BAAa,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3B,IAAA,0BAAa,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAE3B,mCAAmC;QACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACpE,iBAAiB;QACjB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA;QAC9G,WAAW;QACX,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAmB;QAC9B,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAmB;QAC/B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI;YACpC,OAAO,EAAE,wEAAwE;YACjF,OAAO,EAAE,MAAM,IAAA,4BAAe,EAAC,OAAO,EAAE,IAAI,CAAC;SAC9C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAmB;QAClC,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,KAAK,CAAA;aACb;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;YAC3D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrB,OAAO,IAAI,CAAA;SACZ;QAAC,OAAM,GAAG,EAAE;YACX,OAAO,KAAK,CAAA;SACb;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAmB,EAAE,EAAU,EAAE,IAA4B;QAChF,MAAM,SAAS,GAAG,IAAA,0BAAa,EAAY,EAAE,EAAE,YAAY,CAAC,CAAA;QAC5D,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,kCAAsB,CAAC,CAAA;QAC5E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAmB,EAAE,EAAa;QACrD,IAAI;YACF,MAAM,SAAS,GAAG,IAAA,0BAAa,EAAY,EAAE,EAAE,YAAY,CAAC,CAAA;YAC5D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;YAC3D,mCAAmC;YACnC,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAA;YACtD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACzC,+DAA+D;YAC/D,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,kCAAsB,CAAC,CAAA;YAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,4BAAe,EAAC,QAAQ,CAAC,CAA2B,CAAA;YAClF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrB,kBAAkB;YAClB,OAAO;gBACL,SAAS;gBACT,yEAAyE;gBACzE,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,OAAO;gBAClB,GAAG,IAAI;aACR,CAAA;SACF;QAAC,OAAM,GAAG,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,GAAG,CAAA;SACV;IACH,CAAC;IAED,KAAK;IACL,oBAAoB;IACpB;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAAmB;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,uBAAuB;QACvB,MAAM,EAAE,GAAG,IAAA,SAAI,GAAE,CAAA;QACjB,wBAAwB;QACxB,2DAA2D;QAC3D,kCAAkC;QAClC,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACjC,2BAA2B;QAC3B,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,6BAAiB,CAAC,CAAA;QAC3E,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,0BAAkB,CAAC,CAAC,CAAA;QAC1E,gCAAgC;QAChC,MAAM,mBAAmB,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,kCAAsB,CAAC,CAAA;QACpF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9D,WAAW;QACX,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACrB,WAAW;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAmB;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;QACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;YAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;YACjE,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,CAAC,CAAA;QACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB,EAAE,SAAiB;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,SAAS,EAAE,6BAAiB,CAAC,CAAA;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;QAClD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAmB,EAAE,SAAiB,EAAE,IAAiB;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,SAAS,EAAE,6BAAiB,CAAC,CAAA;QAC3E,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAmB,EAAE,SAAiB;QACxD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,SAAS,CAAC,CAAA;QACpD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAY,EACZ,EAAa,EACb,KAAsB,EACtB,SAA0B;QAE1B,wBAAwB;QACxB,SAAS,IAAI,SAAS,CAAC;YACrB,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,iBAAS,CAAC,WAAW;SAC9B,CAAC,CAAA;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACvC,oCAAoC;QACpC,SAAS,IAAI,SAAS,CAAC;YACrB,OAAO,EAAE,qCAAqC;YAC9C,MAAM,EAAE,iBAAS,CAAC,WAAW;SAC9B,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC/B,cAAc;QACd,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,QAAmC,CAAA;QACvC,IAAI;YACF,2BAA2B;YAC3B,KAAI,MAAM,IAAI,IAAI,KAAK,EAAE;gBACvB,SAAS,IAAI,SAAS,CAAC;oBACrB,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,EAAE;oBACpC,MAAM,EAAE,iBAAS,CAAC,WAAW;iBAC9B,CAAC,CAAA;gBACF,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChE,QAAQ,GAAG,IAAI,CAAA;gBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;oBACpE,SAAS,IAAI,SAAS,CAAC;wBACrB,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE;wBACjH,MAAM,EAAE,iBAAS,CAAC,WAAW;qBAC9B,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;gBACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;aACnB;YACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrB,SAAS,IAAI,SAAS,CAAC;gBACrB,OAAO,EAAE,oBAAoB,KAAK,CAAC,MAAM,aAAa,QAAQ,EAAE;gBAChE,MAAM,EAAE,iBAAS,CAAC,OAAO;aAC1B,CAAC,CAAA;YACF,OAAO,KAAK,CAAA;SACb;QAAC,OAAM,GAAG,EAAE;YACX,kCAAkC;YAClC,SAAS,IAAI,SAAS,CAAC;gBACrB,OAAO,EAAE,sBAAsB,QAAQ,EAAE,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE;gBAC/D,MAAM,EAAE,iBAAS,CAAC,KAAK;aACxB,CAAC,CAAA;YACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrB,OAAO,EAAE,CAAA;SACV;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAmB,EAAE,EAAU,EAAE,IAAY;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAmB,EAAE,EAAa,EAAE,KAAe;QACpE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAC1F,CAAA;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,KAAK;IACL,oBAAoB;IACpB,KAAK,CAAC,MAAM,CAAC,OAAmB,EAAE,EAAa;QAC7C,yEAAyE;QACzE,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACtF,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,EAAE,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAmB,EAAE,EAAU,EAAE,KAAsB;QACnE,MAAM,GAAG,GAAG,IAAA,eAAQ,EAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,CAAuB,CAAA;QAC/E,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAClD,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAA;QACjB,iBAAiB;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC/C,cAAc;QACd,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,EAAE;YAC/D,wBAAwB;YACxB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;YACnB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;YACrB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,IAAG,MAAM,KAAK,iBAAS,CAAC,OAAO,EAAE;gBAC/B,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aAC/B;iBAAM,IAAG,MAAM,KAAK,iBAAS,CAAC,KAAK,EAAE;gBACpC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC3B,IAAA,eAAQ,EAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aAC7B;QACH,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAhXD,+BAgXC"}
@@ -1,4 +1,4 @@
1
- import { ServerConfig } from '../server/config';
1
+ import { ServerConfig } from '../../server/config';
2
2
  type HooksOptions = {
3
3
  gitUrl?: string;
4
4
  buildUrl?: string;
@@ -20,38 +20,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
22
  const node_fetch_1 = __importDefault(require("node-fetch"));
23
- const rootPath = process.env.DATA_FOLDER;
23
+ const events_1 = require("../../server/events");
24
24
  // **********
25
25
  throw new Error('TODO: implement hooks plugin');
26
- const EVENT_ASSET_WRITE_END = 'silex:asset:write:end';
27
- const EVENT_PUBLISH_END = 'silex:publish:end';
28
- const EVENT_WRITE_END = 'silex:write:end';
29
- function projectPath(projectId) { return `${rootPath}/${projectId}`; }
30
26
  // **********
31
27
  async function default_1(config, opts = {}) {
32
28
  // Options with defaults
33
29
  const options = {
34
30
  gitUrl: process.env.SILEX_HOOK_GIT,
35
31
  buildUrl: process.env.SILEX_HOOK_BUILD,
32
+ websitePath: process.env.DATA_FOLDER,
33
+ assetsPath: process.env.ASSETS_FOLDER,
36
34
  ...opts
37
35
  };
38
- config.on(EVENT_WRITE_END, async ({ res, req, projectId, data }) => {
36
+ config.on(events_1.ServerEvent.WEBSITE_STORE_END, async ({ res, req, projectId, data }) => {
39
37
  if (options.gitUrl) {
40
38
  await hook(options.gitUrl, {
41
- path: projectPath(projectId),
39
+ path: options.websitePath,
42
40
  message: 'Change from Silex',
43
41
  });
44
42
  }
45
43
  });
46
- config.on(EVENT_ASSET_WRITE_END, async ({ res, req, projectId, uploadDir, form, data }) => {
44
+ config.on(events_1.ServerEvent.WEBSITE_ASSET_STORE_END, async (e) => {
47
45
  if (options.gitUrl) {
48
46
  await hook(options.gitUrl, {
49
- path: projectPath(projectId),
47
+ path: options.assetsPath,
50
48
  message: 'Change from Silex',
51
49
  });
52
50
  }
53
51
  });
54
- config.on(EVENT_PUBLISH_END, async ({ projectId, files, req, res }) => {
52
+ config.on(events_1.ServerEvent.PUBLISH_END, async ({ projectId, files, req, res }) => {
55
53
  if (options.buildUrl) {
56
54
  await hook(options.buildUrl);
57
55
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HooksPlugin.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/server/HooksPlugin.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;AAEH,4DAA8B;AAE9B,gDAAgF;AAOhF,aAAa;AACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;AAC/C,aAAa;AAEE,KAAK,oBAAU,MAAoB,EAAE,OAAqB,EAAE;IACzE,wBAAwB;IACxB,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACpC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACrC,GAAG,IAAI;KACR,CAAA;IACD,MAAM,CAAC,EAAE,CAAC,oBAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/E,IAAG,OAAO,CAAC,MAAM,EAAE;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzB,IAAI,EAAE,OAAO,CAAC,WAAW;gBACzB,OAAO,EAAE,mBAAmB;aAC7B,CAAC,CAAA;SACH;IACH,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,oBAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAgC,EAAE,EAAE;QACxF,IAAG,OAAO,CAAC,MAAM,EAAE;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzB,IAAI,EAAE,OAAO,CAAC,UAAU;gBACxB,OAAO,EAAE,mBAAmB;aAC7B,CAAC,CAAA;SACH;IACH,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,oBAAW,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;QAC1E,IAAG,OAAO,CAAC,QAAQ,EAAE;YACnB,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;SAC7B;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AA9BD,4BA8BC;AAED,KAAK,UAAU,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE;IAClC,IAAG,GAAG,EAAE;QACN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAC,GAAG,EAAC,CAAC,CAAA;QAClC,IAAI;YACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iBAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC/D,OAAO,IAAA,oBAAK,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;SAChC;QAAC,OAAM,KAAK,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAA;YAC7C,OAAO,IAAI,CAAA;SACZ;KACF;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ //import { minify } from 'html-minifier'
2
+ //const optim = files.map(file => ({
3
+ // ...file,
4
+ // html: minify(file.html, {
5
+ // continueOnParseError: true,
6
+ // collapseInlineTagWhitespace: true,
7
+ // collapseWhitespace: true,
8
+ // minifyCSS: true,
9
+ // minifyJS: true,
10
+ // removeScriptTypeAttributes: true,
11
+ // removeStyleLinkTypeAttributes: true,
12
+ // }).trim(),
13
+ //}))
14
+ //# sourceMappingURL=PublicationOptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicationOptimizer.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/server/PublicationOptimizer.ts"],"names":[],"mappings":"AACA,wCAAwC;AACxC,oCAAoC;AACpC,YAAY;AACZ,6BAA6B;AAC7B,iCAAiC;AACjC,wCAAwC;AACxC,+BAA+B;AAC/B,sBAAsB;AACtB,qBAAqB;AACrB,uCAAuC;AACvC,0CAA0C;AAC1C,cAAc;AACd,KAAK"}