@silexlabs/silex 3.0.0-alpha.43 → 3.0.0-alpha.44
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.
- package/dist/client/client/api.d.ts +6 -6
- package/dist/client/client/config.d.ts +26 -211
- package/dist/client/client/events.d.ts +2 -0
- package/dist/client/client/expose.d.ts +0 -1
- package/dist/client/client/grapesjs/LoginDialog.d.ts +1 -0
- package/dist/client/client/grapesjs/index.d.ts +3 -209
- package/dist/client/client/index.d.ts +1 -0
- package/dist/client/constants.d.ts +2 -3
- package/dist/client/css/admin.css +2 -0
- package/dist/client/js/main.js +47 -47
- package/dist/client/types.d.ts +7 -1
- package/dist/plugins/client/client/events.d.ts +2 -0
- package/dist/plugins/client/client/events.js +2 -0
- package/dist/plugins/client/client/events.js.map +1 -1
- package/dist/plugins/client/plugins/client/template.js +4 -4
- package/dist/plugins/client/plugins/client/template.js.map +1 -1
- package/dist/plugins/client/types.d.ts +7 -1
- package/dist/plugins/client/types.js +8 -0
- package/dist/plugins/client/types.js.map +1 -1
- package/dist/plugins/server/constants.d.ts +2 -3
- package/dist/plugins/server/constants.js +3 -4
- package/dist/plugins/server/constants.js.map +1 -1
- package/dist/plugins/server/plugins/server/FtpConnector.d.ts +17 -28
- package/dist/plugins/server/plugins/server/FtpConnector.js +17 -16
- package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -1
- package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +81 -0
- package/dist/plugins/server/plugins/server/GitlabConnector.js +373 -0
- package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -0
- package/dist/plugins/server/server/config.js +1 -1
- package/dist/plugins/server/server/config.js.map +1 -1
- package/dist/plugins/server/server/connectors/FsStorage.d.ts +13 -12
- package/dist/plugins/server/server/connectors/FsStorage.js +22 -15
- package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -1
- package/dist/plugins/server/server/connectors/connectors.d.ts +5 -2
- package/dist/plugins/server/server/connectors/connectors.js +31 -3
- package/dist/plugins/server/server/connectors/connectors.js.map +1 -1
- package/dist/plugins/server/types.d.ts +7 -1
- package/dist/plugins/server/types.js +10 -1
- package/dist/plugins/server/types.js.map +1 -1
- package/dist/server/constants.js +3 -4
- package/dist/server/server/api/connectorApi.js +16 -11
- package/dist/server/server/api/publicationApi.js +18 -20
- package/dist/server/server/api/websiteApi.js +36 -40
- package/dist/server/server/cli.js +34 -16
- package/dist/server/server/config.js +1 -1
- package/dist/server/server/connectors/FsStorage.js +19 -15
- package/dist/server/server/connectors/connectors.js +27 -3
- package/dist/server/server/expose.js +27 -0
- package/dist/server/server/index.js +28 -2
- package/dist/server/types.js +10 -1
- package/package.json +3 -1
- package/src/css/_variables.scss +1 -0
- package/src/css/loader.scss +2 -0
- package/src/ts/client/api.ts +8 -11
- package/src/ts/client/config.ts +30 -14
- package/src/ts/client/events.ts +2 -0
- package/src/ts/client/expose.ts +0 -1
- package/src/ts/client/grapesjs/LoginDialog.ts +12 -1
- package/src/ts/client/grapesjs/PublicationManager.ts +1 -1
- package/src/ts/client/grapesjs/index.ts +8 -13
- package/src/ts/client/grapesjs/storage.ts +18 -10
- package/src/ts/client/index.ts +32 -14
- package/src/ts/constants.ts +2 -3
- package/src/ts/plugins/client/template.ts +4 -4
- package/src/ts/plugins/server/FtpConnector.test.ts +82 -0
- package/src/ts/plugins/server/FtpConnector.ts +31 -37
- package/src/ts/plugins/server/GitlabConnector.ts +434 -0
- package/src/ts/server/api/connectorApi.ts +31 -26
- package/src/ts/server/api/publicationApi.ts +23 -23
- package/src/ts/server/api/websiteApi.ts +42 -43
- package/src/ts/server/cli.ts +23 -11
- package/src/ts/server/config.ts +1 -1
- package/src/ts/server/connectors/FsStorage.test.ts +51 -0
- package/src/ts/server/connectors/FsStorage.ts +35 -25
- package/src/ts/server/connectors/connectors.ts +32 -4
- package/{dist/plugins/client/server/utils/validation.js → src/ts/server/expose.ts} +3 -18
- package/src/ts/server/index.ts +24 -2
- package/src/ts/types.ts +10 -1
- package/dist/plugins/client/constants.d.ts +0 -30
- package/dist/plugins/client/constants.js +0 -47
- package/dist/plugins/client/constants.js.map +0 -1
- package/dist/plugins/client/server/config.d.ts +0 -59
- package/dist/plugins/client/server/config.js +0 -178
- package/dist/plugins/client/server/config.js.map +0 -1
- package/dist/plugins/client/server/connectors/FsHosting.d.ts +0 -13
- package/dist/plugins/client/server/connectors/FsHosting.js +0 -51
- package/dist/plugins/client/server/connectors/FsHosting.js.map +0 -1
- package/dist/plugins/client/server/connectors/FsStorage.d.ts +0 -41
- package/dist/plugins/client/server/connectors/FsStorage.js +0 -220
- package/dist/plugins/client/server/connectors/FsStorage.js.map +0 -1
- package/dist/plugins/client/server/connectors/connectors.d.ts +0 -83
- package/dist/plugins/client/server/connectors/connectors.js +0 -91
- package/dist/plugins/client/server/connectors/connectors.js.map +0 -1
- package/dist/plugins/client/server/events.d.ts +0 -26
- package/dist/plugins/client/server/events.js +0 -12
- package/dist/plugins/client/server/events.js.map +0 -1
- package/dist/plugins/client/server/jobs.d.ts +0 -6
- package/dist/plugins/client/server/jobs.js +0 -67
- package/dist/plugins/client/server/jobs.js.map +0 -1
- package/dist/plugins/client/server/utils/validation.d.ts +0 -7
- package/dist/plugins/client/server/utils/validation.js.map +0 -1
|
@@ -0,0 +1,373 @@
|
|
|
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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
const constants_1 = require("../../constants");
|
|
46
|
+
const connectors_1 = require("../../server/connectors/connectors");
|
|
47
|
+
const types_1 = require("../../types");
|
|
48
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
49
|
+
const crypto_1 = __importStar(require("crypto"));
|
|
50
|
+
async function wait(ms) {
|
|
51
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
52
|
+
}
|
|
53
|
+
class GitlabConnector {
|
|
54
|
+
config;
|
|
55
|
+
connectorId = 'gitlab';
|
|
56
|
+
connectorType = types_1.ConnectorType.STORAGE;
|
|
57
|
+
displayName = 'GitLab';
|
|
58
|
+
icon = 'http://gitlab.lcqb.upmc.fr/assets/favicon-075eba76312e8421991a0c1f89a89ee81678bcde72319dd3e8047e2a47cd3a42.ico';
|
|
59
|
+
disableLogout = false;
|
|
60
|
+
color = '#ffffff';
|
|
61
|
+
background = '#FC6D26';
|
|
62
|
+
options;
|
|
63
|
+
constructor(config, opts) {
|
|
64
|
+
this.config = config;
|
|
65
|
+
this.options = {
|
|
66
|
+
branch: 'main',
|
|
67
|
+
assetsFolder: '',
|
|
68
|
+
...opts,
|
|
69
|
+
};
|
|
70
|
+
if (!this.options.clientId)
|
|
71
|
+
throw new Error('Missing Gitlab client ID');
|
|
72
|
+
if (!this.options.clientSecret)
|
|
73
|
+
throw new Error('Missing Gitlab client secret');
|
|
74
|
+
}
|
|
75
|
+
// **
|
|
76
|
+
// Convenience methods for the Gitlab API
|
|
77
|
+
getAssetPath(path) {
|
|
78
|
+
return `${this.options.assetsFolder}${path}`;
|
|
79
|
+
}
|
|
80
|
+
async createFile(session, websiteId, path, content, isBase64 = false) {
|
|
81
|
+
// Remove leading slash
|
|
82
|
+
const safePath = path.replace(/^\//, '');
|
|
83
|
+
return this.callApi(session, `api/v4/projects/${websiteId}/repository/files/${safePath}`, 'POST', {
|
|
84
|
+
id: websiteId,
|
|
85
|
+
branch: this.options.branch,
|
|
86
|
+
content,
|
|
87
|
+
commit_message: `Create file ${path} from Silex`,
|
|
88
|
+
encoding: isBase64 ? 'base64' : undefined,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async updateFile(session, websiteId, path, content, isBase64 = false) {
|
|
92
|
+
// Remove leading slash
|
|
93
|
+
const safePath = path.replace(/^\//, '');
|
|
94
|
+
return this.callApi(session, `api/v4/projects/${websiteId}/repository/files/${safePath}`, 'PUT', {
|
|
95
|
+
id: websiteId,
|
|
96
|
+
branch: this.options.branch,
|
|
97
|
+
content: await (0, connectors_1.contentToString)(content),
|
|
98
|
+
commit_message: `Update website asset ${path} from Silex`,
|
|
99
|
+
encoding: isBase64 ? 'base64' : undefined,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
async callApi(session, path, method = 'GET', body = null, params = {}) {
|
|
103
|
+
const token = session?.gitlab?.token;
|
|
104
|
+
const tokenParam = token ? `access_token=${token.access_token}&` : '';
|
|
105
|
+
const paramsStr = Object.entries(params).map(([k, v]) => `${k}=${encodeURIComponent(v.toString())}`).join('&');
|
|
106
|
+
const url = `https://gitlab.com/${path}?${tokenParam}${paramsStr}`;
|
|
107
|
+
const response = await (0, node_fetch_1.default)(url, {
|
|
108
|
+
method,
|
|
109
|
+
headers: {
|
|
110
|
+
'Content-Type': 'application/json',
|
|
111
|
+
},
|
|
112
|
+
body: body ? JSON.stringify(body) : undefined
|
|
113
|
+
});
|
|
114
|
+
let json;
|
|
115
|
+
// Handle the case when the server returns an non-JSON response (e.g. 400 Bad Request)
|
|
116
|
+
const text = await response.text();
|
|
117
|
+
try {
|
|
118
|
+
json = JSON.parse(text);
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
// A real error
|
|
123
|
+
throw e;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Useless error linked to the fact that the response is not JSON
|
|
127
|
+
//console.error('Gitlab API error - could not parse response', response.status, response.statusText, {url, method, body, params, text})
|
|
128
|
+
return text;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (!response.ok) {
|
|
132
|
+
if (response.status === 401 && session?.gitlab?.token?.refresh_token) {
|
|
133
|
+
// Refresh the token
|
|
134
|
+
const token = session?.gitlab?.token;
|
|
135
|
+
const body = {
|
|
136
|
+
grant_type: 'refresh_token',
|
|
137
|
+
refresh_token: token.refresh_token,
|
|
138
|
+
client_id: this.options.clientId,
|
|
139
|
+
client_secret: this.options.clientSecret,
|
|
140
|
+
};
|
|
141
|
+
const response = await (0, node_fetch_1.default)('https://gitlab.com/oauth/token', {
|
|
142
|
+
method: 'POST',
|
|
143
|
+
headers: {
|
|
144
|
+
'Content-Type': 'application/json',
|
|
145
|
+
},
|
|
146
|
+
body: JSON.stringify(body)
|
|
147
|
+
});
|
|
148
|
+
const refreshJson = await response.json();
|
|
149
|
+
if (response.ok) {
|
|
150
|
+
session.gitlab.token = {
|
|
151
|
+
...token,
|
|
152
|
+
...refreshJson,
|
|
153
|
+
};
|
|
154
|
+
return await this.callApi(session, path, method, body, params);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
//console.error('Gitlab API error - could not refresh token', response.status, response.statusText, { url, method, body, params, refreshJson })
|
|
158
|
+
throw new types_1.ApiError(`Gitlab API error: ${refreshJson?.message ?? response.statusText}`, response.status);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
//console.error('Gitlab API error', response.status, response.statusText, { url, method, body, params, json })
|
|
163
|
+
throw new types_1.ApiError(`Gitlab API error: ${json?.message ?? json?.error ?? response.statusText}`, response.status);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return json;
|
|
167
|
+
}
|
|
168
|
+
generateCodeVerifier() {
|
|
169
|
+
return crypto_1.default.randomBytes(64).toString('base64')
|
|
170
|
+
.replace(/\+/g, '-')
|
|
171
|
+
.replace(/\//g, '_')
|
|
172
|
+
.replace(/=/g, '')
|
|
173
|
+
.substr(0, 128);
|
|
174
|
+
}
|
|
175
|
+
async generateCodeChallenge(verifier) {
|
|
176
|
+
const hashed = (0, crypto_1.createHash)('sha256').update(verifier).digest();
|
|
177
|
+
let base64Url = hashed.toString('base64');
|
|
178
|
+
// Replace '+' with '-', '/' with '_', and remove '='
|
|
179
|
+
base64Url = base64Url.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
180
|
+
return base64Url;
|
|
181
|
+
}
|
|
182
|
+
getRedirect() {
|
|
183
|
+
const params = `connectorId=${this.connectorId}&type=${this.connectorType}`;
|
|
184
|
+
return `${this.config.url}${constants_1.API_PATH}${constants_1.API_CONNECTOR_PATH}${constants_1.API_CONNECTOR_LOGIN_CALLBACK}?${params}`;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get the OAuth URL to redirect the user to
|
|
188
|
+
* The URL should look like
|
|
189
|
+
* https://gitlab.example.com/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=code&state=STATE&scope=REQUESTED_SCOPES&code_challenge=CODE_CHALLENGE&code_challenge_method=S256
|
|
190
|
+
* OAuth2 Step #1 from https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-with-proof-key-for-code-exchange-pkce
|
|
191
|
+
*/
|
|
192
|
+
async getOAuthUrl(session) {
|
|
193
|
+
const redirect_uri = encodeURIComponent(this.getRedirect());
|
|
194
|
+
const state = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
|
|
195
|
+
const codeVerifier = this.generateCodeVerifier();
|
|
196
|
+
// Create the code challenge
|
|
197
|
+
const codeChallenge = await this.generateCodeChallenge(codeVerifier);
|
|
198
|
+
// Store the code verifier and code challenge in the session
|
|
199
|
+
session.gitlab = {
|
|
200
|
+
...session.gitlab,
|
|
201
|
+
state,
|
|
202
|
+
codeVerifier,
|
|
203
|
+
codeChallenge,
|
|
204
|
+
};
|
|
205
|
+
const scope = 'api+read_api+read_user+read_repository+write_repository+email+sudo+profile+openid';
|
|
206
|
+
return `https://gitlab.com/oauth/authorize?client_id=${this.options.clientId}&redirect_uri=${redirect_uri}&response_type=code&state=${session.gitlab.state}&scope=${scope}&code_challenge=${codeChallenge}&code_challenge_method=S256`;
|
|
207
|
+
}
|
|
208
|
+
getOptions(formData) {
|
|
209
|
+
return {}; // FIXME: store branch
|
|
210
|
+
}
|
|
211
|
+
async getLoginForm(session, redirectTo) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
async getSettingsForm(session, redirectTo) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
async isLoggedIn(session) {
|
|
218
|
+
return !!session?.gitlab?.token;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get the token from return code
|
|
222
|
+
* Set the token in the session
|
|
223
|
+
* OAuth2 Step #2 from https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-with-proof-key-for-code-exchange-pkce
|
|
224
|
+
*/
|
|
225
|
+
async setToken(session, loginResult) {
|
|
226
|
+
if (!loginResult.state || loginResult.state !== session.gitlab?.state)
|
|
227
|
+
throw new types_1.ApiError('Invalid state', 401);
|
|
228
|
+
if (!session.gitlab?.codeVerifier)
|
|
229
|
+
throw new types_1.ApiError('Missing code verifier', 401);
|
|
230
|
+
if (!session.gitlab?.codeChallenge)
|
|
231
|
+
throw new types_1.ApiError('Missing code challenge', 401);
|
|
232
|
+
const token = await (0, node_fetch_1.default)('https://gitlab.com/oauth/token', {
|
|
233
|
+
method: 'POST',
|
|
234
|
+
headers: {
|
|
235
|
+
'Content-Type': 'application/json',
|
|
236
|
+
},
|
|
237
|
+
body: JSON.stringify({
|
|
238
|
+
client_id: this.options.clientId,
|
|
239
|
+
client_secret: this.options.clientSecret,
|
|
240
|
+
code: loginResult.code,
|
|
241
|
+
grant_type: 'authorization_code',
|
|
242
|
+
redirect_uri: this.getRedirect(),
|
|
243
|
+
code_verifier: session.gitlab.codeVerifier,
|
|
244
|
+
}),
|
|
245
|
+
})
|
|
246
|
+
.then((response) => response.json());
|
|
247
|
+
session.gitlab = { token, state: session.gitlab.state, codeVerifier: session.gitlab.codeVerifier, codeChallenge: session.gitlab.codeChallenge };
|
|
248
|
+
// We need to get the user ID for listWebsites
|
|
249
|
+
const user = await this.callApi(session, 'api/v4/user');
|
|
250
|
+
session.gitlab.userId = user.id;
|
|
251
|
+
}
|
|
252
|
+
async logout(session) {
|
|
253
|
+
delete session.gitlab;
|
|
254
|
+
}
|
|
255
|
+
async getUser(session) {
|
|
256
|
+
const user = await this.callApi(session, 'api/v4/user');
|
|
257
|
+
return {
|
|
258
|
+
name: user.name,
|
|
259
|
+
email: user.email,
|
|
260
|
+
storage: await (0, connectors_1.toConnectorData)(session, this),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
async listWebsites(session) {
|
|
264
|
+
const projects = await this.callApi(session, `api/v4/users/${session.gitlab?.userId}/projects`);
|
|
265
|
+
return projects.map(p => ({
|
|
266
|
+
websiteId: p.id,
|
|
267
|
+
name: p.name,
|
|
268
|
+
createdAt: p.created_at,
|
|
269
|
+
updatedAt: p.last_activity_at,
|
|
270
|
+
connectorUserSettings: {},
|
|
271
|
+
}));
|
|
272
|
+
}
|
|
273
|
+
async readWebsite(session, websiteId) {
|
|
274
|
+
const result = await this.callApi(session, `api/v4/projects/${websiteId}/repository/files/${constants_1.WEBSITE_DATA_FILE}`, 'GET', null, {
|
|
275
|
+
ref: this.options.branch,
|
|
276
|
+
});
|
|
277
|
+
const { content } = result;
|
|
278
|
+
const contentDecoded = Buffer.from(content, 'base64').toString('utf8');
|
|
279
|
+
const websiteData = JSON.parse(contentDecoded);
|
|
280
|
+
return websiteData;
|
|
281
|
+
}
|
|
282
|
+
async createWebsite(session, websiteMeta) {
|
|
283
|
+
const project = await this.callApi(session, 'api/v4/projects/', 'POST', {
|
|
284
|
+
name: websiteMeta.name,
|
|
285
|
+
});
|
|
286
|
+
await this.createFile(session, project.id, constants_1.WEBSITE_DATA_FILE, JSON.stringify({}));
|
|
287
|
+
await this.createFile(session, project.id, constants_1.WEBSITE_META_DATA_FILE, JSON.stringify(websiteMeta));
|
|
288
|
+
//await this.updateWebsite(session, project.id, {} as WebsiteData)
|
|
289
|
+
//await this.setWebsiteMeta(session, project.id, websiteMeta)
|
|
290
|
+
return project.id;
|
|
291
|
+
}
|
|
292
|
+
async updateWebsite(session, websiteId, websiteData) {
|
|
293
|
+
const project = await this.callApi(session, `api/v4/projects/${websiteId}/repository/files/${constants_1.WEBSITE_DATA_FILE}`, 'PUT', {
|
|
294
|
+
branch: this.options.branch,
|
|
295
|
+
commit_message: 'Update website data from Silex',
|
|
296
|
+
content: JSON.stringify(websiteData),
|
|
297
|
+
file_path: constants_1.WEBSITE_DATA_FILE,
|
|
298
|
+
id: websiteId,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
async deleteWebsite(session, websiteId) {
|
|
302
|
+
await this.callApi(session, `api/v4/projects/${websiteId}`, 'DELETE');
|
|
303
|
+
}
|
|
304
|
+
async getWebsiteMeta(session, websiteId) {
|
|
305
|
+
const project = await this.callApi(session, `api/v4/projects/${websiteId}/repository/files/${constants_1.WEBSITE_META_DATA_FILE}`);
|
|
306
|
+
return {
|
|
307
|
+
websiteId: project.id,
|
|
308
|
+
name: project.name,
|
|
309
|
+
createdAt: project.created_at,
|
|
310
|
+
updatedAt: project.last_activity_at,
|
|
311
|
+
connectorUserSettings: {},
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
async setWebsiteMeta(session, websiteId, websiteMeta) {
|
|
315
|
+
const project = await this.callApi(session, `api/v4/projects/${websiteId}/repository/files/${constants_1.WEBSITE_META_DATA_FILE}`, 'PUT', {
|
|
316
|
+
branch: this.options.branch,
|
|
317
|
+
commit_message: 'Update website meta data from Silex',
|
|
318
|
+
content: JSON.stringify(websiteMeta),
|
|
319
|
+
file_path: constants_1.WEBSITE_META_DATA_FILE,
|
|
320
|
+
id: websiteId,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
async writeAssets(session, websiteId, files, status) {
|
|
324
|
+
// For each file
|
|
325
|
+
for (const file of files) {
|
|
326
|
+
// Convert to base64
|
|
327
|
+
const content = (await (0, connectors_1.contentToBuffer)(file.content)).toString('base64');
|
|
328
|
+
try {
|
|
329
|
+
await this.updateFile(session, websiteId, this.getAssetPath(file.path), content, true);
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
// If the file does not exist, create it
|
|
333
|
+
if (e.statusCode === 404 || e.message.endsWith('A file with this name doesn\'t exist')) {
|
|
334
|
+
await this.createFile(session, websiteId, file.path, content, true);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
throw e;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
async readAsset(session, websiteId, fileName) {
|
|
343
|
+
// Remove leading slash
|
|
344
|
+
const finalPath = this.getAssetPath(fileName);
|
|
345
|
+
// Call the API
|
|
346
|
+
const url = `https://gitlab.com/api/v4/projects/${websiteId}/repository/files/${finalPath}?ref=${this.options.branch}&access_token=${session.gitlab?.token?.access_token}`;
|
|
347
|
+
const response = await (0, node_fetch_1.default)(url, {
|
|
348
|
+
method: 'GET',
|
|
349
|
+
headers: {
|
|
350
|
+
'Content-Type': 'application/json',
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
const json = await response.json();
|
|
354
|
+
if (!response.ok)
|
|
355
|
+
throw new types_1.ApiError(`Gitlab API error: ${json?.message ?? json?.error ?? response.statusText}`, response.status);
|
|
356
|
+
// From base64 string to buffer
|
|
357
|
+
const buf = Buffer.from(json.content, 'base64');
|
|
358
|
+
return buf;
|
|
359
|
+
}
|
|
360
|
+
async deleteAssets(session, websiteId, fileNames) {
|
|
361
|
+
return this.callApi(session, `api/v4/projects/${websiteId}/repository/commits`, 'POST', {
|
|
362
|
+
id: websiteId,
|
|
363
|
+
branch: this.options.branch,
|
|
364
|
+
commit_message: `Delete assets from Silex: ${fileNames.join(', ')}`,
|
|
365
|
+
actions: fileNames.map(f => ({
|
|
366
|
+
action: 'delete',
|
|
367
|
+
file_path: this.getAssetPath(f),
|
|
368
|
+
})),
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.default = GitlabConnector;
|
|
373
|
+
//# sourceMappingURL=GitlabConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitlabConnector.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/server/GitlabConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,7 +138,7 @@ class ServerConfig extends silex_plugins_1.Config {
|
|
|
138
138
|
await this.addPlugin(this.userConfigPath, {});
|
|
139
139
|
}
|
|
140
140
|
catch (e) {
|
|
141
|
-
throw new Error(
|
|
141
|
+
throw new Error(`\nUser config file ${this.userConfigPath} error:\n\n\t${e.message}\n\n`);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/ts/server/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/ts/server/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,25 +3,26 @@ import { ConnectorUser, WebsiteMeta, WebsiteId, ConnectorType, WebsiteMetaFileCo
|
|
|
3
3
|
import { ServerConfig } from '../config';
|
|
4
4
|
type FsSession = ConnectorSession;
|
|
5
5
|
interface FsOptions {
|
|
6
|
-
path
|
|
6
|
+
path: string;
|
|
7
|
+
assetsFolder: string;
|
|
7
8
|
}
|
|
8
9
|
export declare class FsStorage implements StorageConnector<FsSession> {
|
|
9
10
|
connectorId: string;
|
|
10
11
|
displayName: string;
|
|
11
12
|
icon: string;
|
|
12
13
|
disableLogout: boolean;
|
|
13
|
-
options:
|
|
14
|
-
path: string;
|
|
15
|
-
};
|
|
14
|
+
options: FsOptions;
|
|
16
15
|
connectorType: ConnectorType;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
color: string;
|
|
17
|
+
background: string;
|
|
18
|
+
constructor(config: ServerConfig | null, opts: Partial<FsOptions>);
|
|
19
|
+
private initFs;
|
|
20
|
+
private updateStatus;
|
|
21
|
+
private initStatus;
|
|
21
22
|
getOptions(formData: object): ConnectorOptions;
|
|
22
|
-
getOAuthUrl(session:
|
|
23
|
-
getLoginForm(session:
|
|
24
|
-
getSettingsForm(session:
|
|
23
|
+
getOAuthUrl(session: FsSession): Promise<null>;
|
|
24
|
+
getLoginForm(session: FsSession, redirectTo: string): Promise<string | null>;
|
|
25
|
+
getSettingsForm(session: FsSession, redirectTo: string): Promise<string | null>;
|
|
25
26
|
isLoggedIn(session: FsSession): Promise<boolean>;
|
|
26
27
|
setToken(session: FsSession, query: object): Promise<void>;
|
|
27
28
|
logout(session: FsSession): Promise<void>;
|
|
@@ -34,7 +35,7 @@ export declare class FsStorage implements StorageConnector<FsSession> {
|
|
|
34
35
|
deleteWebsite(session: FsSession, websiteId: WebsiteId): Promise<void>;
|
|
35
36
|
listWebsites(session: any): Promise<WebsiteMeta[]>;
|
|
36
37
|
getAsset(session: FsSession, id: WebsiteId, path: string): Promise<ConnectorFile>;
|
|
37
|
-
writeAssets(session: FsSession, id: WebsiteId, files: ConnectorFile[], statusCbk?: StatusCallback): Promise<
|
|
38
|
+
writeAssets(session: FsSession, id: WebsiteId, files: ConnectorFile[], statusCbk?: StatusCallback): Promise<void>;
|
|
38
39
|
deleteAssets(session: FsSession, id: WebsiteId, paths: string[]): Promise<void>;
|
|
39
40
|
readAsset(session: object, websiteId: string, fileName: string): Promise<ConnectorFileContent>;
|
|
40
41
|
}
|
|
@@ -50,6 +50,12 @@ const validation_1 = require("../utils/validation");
|
|
|
50
50
|
const constants_1 = require("../../constants");
|
|
51
51
|
const stream_1 = require("stream");
|
|
52
52
|
const uuid_1 = require("uuid");
|
|
53
|
+
// Variables needed for jest tests
|
|
54
|
+
if (!globalThis.__dirname) {
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
globalThis.__dirname = (0, path_1.dirname)(process.cwd() + '/src/ts/server/connectors/FsStorage.ts');
|
|
57
|
+
console.log('Redefining __dirname', globalThis.__dirname);
|
|
58
|
+
}
|
|
53
59
|
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';
|
|
54
60
|
const FILE_ICON = 'data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%202L6%2022%2018%2022%2018%207%2012%202%206%202Z%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M18%202L12%202%2012%208%2018%208%2018%202Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E';
|
|
55
61
|
class FsStorage {
|
|
@@ -59,9 +65,12 @@ class FsStorage {
|
|
|
59
65
|
disableLogout = true;
|
|
60
66
|
options;
|
|
61
67
|
connectorType = types_1.ConnectorType.STORAGE;
|
|
68
|
+
color = '#ffffff';
|
|
69
|
+
background = '#006400';
|
|
62
70
|
constructor(config, opts) {
|
|
63
71
|
this.options = {
|
|
64
|
-
path: __dirname
|
|
72
|
+
path: (0, path_1.join)(__dirname, '..', '..', '..', '..', 'data'),
|
|
73
|
+
assetsFolder: '/assets',
|
|
65
74
|
...opts,
|
|
66
75
|
};
|
|
67
76
|
this.initFs();
|
|
@@ -69,8 +78,9 @@ class FsStorage {
|
|
|
69
78
|
async initFs() {
|
|
70
79
|
const stat = await promises_1.default.stat(this.options.path).catch(() => null);
|
|
71
80
|
if (!stat) {
|
|
81
|
+
// create data folder with a default website
|
|
72
82
|
const id = constants_1.DEFAULT_WEBSITE_ID;
|
|
73
|
-
await promises_1.default.mkdir((0, path_1.join)(this.options.path, id), { recursive: true });
|
|
83
|
+
await promises_1.default.mkdir((0, path_1.join)(this.options.path, id, this.options.assetsFolder), { recursive: true });
|
|
74
84
|
await this.setWebsiteMeta({}, id, { name: 'Default website', connectorUserSettings: {} });
|
|
75
85
|
await this.updateWebsite({}, id, types_1.defaultWebsiteData);
|
|
76
86
|
}
|
|
@@ -97,9 +107,7 @@ class FsStorage {
|
|
|
97
107
|
getOptions(formData) {
|
|
98
108
|
return {};
|
|
99
109
|
}
|
|
100
|
-
async getOAuthUrl(session) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
110
|
+
async getOAuthUrl(session) { return null; }
|
|
103
111
|
async getLoginForm(session, redirectTo) {
|
|
104
112
|
return null;
|
|
105
113
|
}
|
|
@@ -148,7 +156,7 @@ class FsStorage {
|
|
|
148
156
|
// ********************
|
|
149
157
|
async createWebsite(session, meta) {
|
|
150
158
|
const id = (0, uuid_1.v4)();
|
|
151
|
-
await promises_1.default.mkdir((0, path_1.join)(this.options.path, id), { recursive: true });
|
|
159
|
+
await promises_1.default.mkdir((0, path_1.join)(this.options.path, id, this.options.assetsFolder), { recursive: true });
|
|
152
160
|
await this.setWebsiteMeta(session, id, meta);
|
|
153
161
|
await this.updateWebsite(session, id, types_1.defaultWebsiteData);
|
|
154
162
|
return id;
|
|
@@ -177,18 +185,16 @@ class FsStorage {
|
|
|
177
185
|
}));
|
|
178
186
|
}
|
|
179
187
|
async getAsset(session, id, path) {
|
|
180
|
-
const fullPath = (0, path_1.join)(this.options.path, id, path);
|
|
188
|
+
const fullPath = (0, path_1.join)(this.options.path, id, this.options.assetsFolder, path);
|
|
181
189
|
const content = await promises_1.default.readFile(fullPath);
|
|
182
190
|
return { path, content };
|
|
183
191
|
}
|
|
184
192
|
async writeAssets(session, id, files, statusCbk) {
|
|
185
193
|
const filesStatuses = this.initStatus(files);
|
|
186
|
-
let error =
|
|
187
|
-
const filePaths = [];
|
|
194
|
+
let error = null;
|
|
188
195
|
for (const fileStatus of filesStatuses) {
|
|
189
196
|
const { file } = fileStatus;
|
|
190
|
-
const path = (0, path_1.join)(this.options.path, id, file.path);
|
|
191
|
-
filePaths.push(path);
|
|
197
|
+
const path = (0, path_1.join)(this.options.path, id, this.options.assetsFolder, file.path);
|
|
192
198
|
if (typeof file.content === 'string' || Buffer.isBuffer(file.content)) {
|
|
193
199
|
fileStatus.message = 'Writing';
|
|
194
200
|
this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
|
|
@@ -198,7 +204,7 @@ class FsStorage {
|
|
|
198
204
|
catch (err) {
|
|
199
205
|
fileStatus.message = `Error (${err})`;
|
|
200
206
|
this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
|
|
201
|
-
error =
|
|
207
|
+
error = err;
|
|
202
208
|
continue;
|
|
203
209
|
}
|
|
204
210
|
fileStatus.message = 'Success';
|
|
@@ -219,7 +225,7 @@ class FsStorage {
|
|
|
219
225
|
console.error('writeStream error', err);
|
|
220
226
|
fileStatus.message = `Error (${err})`;
|
|
221
227
|
this.updateStatus(filesStatuses, types_1.JobStatus.IN_PROGRESS, statusCbk);
|
|
222
|
-
error =
|
|
228
|
+
error = err;
|
|
223
229
|
resolve(file);
|
|
224
230
|
});
|
|
225
231
|
});
|
|
@@ -230,7 +236,8 @@ class FsStorage {
|
|
|
230
236
|
}
|
|
231
237
|
}
|
|
232
238
|
this.updateStatus(filesStatuses, error ? types_1.JobStatus.ERROR : types_1.JobStatus.SUCCESS, statusCbk);
|
|
233
|
-
|
|
239
|
+
if (error)
|
|
240
|
+
throw error;
|
|
234
241
|
}
|
|
235
242
|
async deleteAssets(session, id, paths) {
|
|
236
243
|
for (const path of paths) {
|
|
@@ -239,7 +246,7 @@ class FsStorage {
|
|
|
239
246
|
}
|
|
240
247
|
async readAsset(session, websiteId, fileName) {
|
|
241
248
|
const id = (0, validation_1.requiredParam)(websiteId, 'website id');
|
|
242
|
-
const path = (0, path_1.join)(this.options.path, id, fileName);
|
|
249
|
+
const path = (0, path_1.join)(this.options.path, id, this.options.assetsFolder, fileName);
|
|
243
250
|
return await promises_1.default.readFile(path);
|
|
244
251
|
}
|
|
245
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsStorage.js","sourceRoot":"","sources":["../../../../../src/ts/server/connectors/FsStorage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,wDAAsC;AACtC,2BAAsC;AACtC,6CAAsI;AACtI,+
|
|
1
|
+
{"version":3,"file":"FsStorage.js","sourceRoot":"","sources":["../../../../../src/ts/server/connectors/FsStorage.ts"],"names":[],"mappings":"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"}
|