@silexlabs/silex 3.0.0-alpha.96 → 3.0.0-alpha.97
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/js/main.js +3 -3
- package/dist/plugins/client/client/assetUrl.js +5 -5
- package/dist/plugins/client/client/assetUrl.js.map +1 -1
- package/dist/server/server/api/websiteApi.js +6 -6
- package/package.json +2 -2
- package/src/ts/client/assetUrl.test.ts +106 -42
- package/src/ts/client/assetUrl.ts +5 -5
- package/src/ts/server/api/websiteApi.ts +15 -11
|
@@ -12,7 +12,6 @@ import { ClientSideFileType } from '../types';
|
|
|
12
12
|
const baseUrl = window.location.pathname.replace(/\/$/, '');
|
|
13
13
|
// Orging and path, should we use config.rootUrl?
|
|
14
14
|
const SERVER_URL = window.location.origin;
|
|
15
|
-
console.log('SERVER_URL', SERVER_URL);
|
|
16
15
|
/**
|
|
17
16
|
* Function to convert a path from it stored version to the displayed version
|
|
18
17
|
* Stored version is like `/assets/image.webp`
|
|
@@ -32,10 +31,11 @@ export function storedToDisplayed(path, websiteId, storageId) {
|
|
|
32
31
|
url.searchParams.set('websiteId', websiteId);
|
|
33
32
|
url.searchParams.set('connectorId', storageId);
|
|
34
33
|
// Back to a relative URL, keep the path but not the origin
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
return `${decodeURIComponent(url.pathname)}${url.search}`;
|
|
35
|
+
//const encodedPath = '/' + url.toString() // add a leading slash
|
|
36
|
+
// .replace(new RegExp(`^${SERVER_URL}`), '')
|
|
37
|
+
// .replace(/^\//, '') // remove the first slash if it exists
|
|
38
|
+
//return decodeURIComponent(encodedPath)
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
41
|
console.warn('storedToDisplayed: path is not a stored path', path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetUrl.js","sourceRoot":"","sources":["../../../../src/ts/client/assetUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACjF,OAAO,EAAS,kBAAkB,EAAkD,MAAM,UAAU,CAAA;AAEpG;;;;;;;GAOG;AAEH,yCAAyC;AACzC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAE3D,iDAAiD;AACjD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"assetUrl.js","sourceRoot":"","sources":["../../../../src/ts/client/assetUrl.ts"],"names":[],"mappings":"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"}
|
|
@@ -232,10 +232,11 @@ function default_1(config, opts = {}) {
|
|
|
232
232
|
config.emit(events_1.ServerEvent.WEBSITE_ASSET_STORE_START, { files, websiteId, connectorId });
|
|
233
233
|
const result = await writeAssets(req['session'], websiteId, files, connectorId);
|
|
234
234
|
const baseUrl = new URL(config.url).pathname.replace(/\/$/, '');
|
|
235
|
+
const data = result.map(path => baseUrl + constants_1.API_PATH + constants_1.API_WEBSITE_PATH + constants_1.API_WEBSITE_ASSET_READ
|
|
236
|
+
+ path
|
|
237
|
+
+ `?websiteId=${websiteId}&connectorId=${connectorId ? connectorId : ''}`);
|
|
235
238
|
res.json({
|
|
236
|
-
data
|
|
237
|
-
+ path
|
|
238
|
-
+ `?websiteId=${websiteId}&connectorId=${connectorId ? connectorId : ''}`),
|
|
239
|
+
data,
|
|
239
240
|
});
|
|
240
241
|
config.emit(events_1.ServerEvent.WEBSITE_ASSET_STORE_END, null);
|
|
241
242
|
}
|
|
@@ -287,9 +288,8 @@ function default_1(config, opts = {}) {
|
|
|
287
288
|
path: file.path.replace('/assets/', '/'),
|
|
288
289
|
}));
|
|
289
290
|
const result = await storageConnector.writeAssets(session, websiteId, cleanPathFiles);
|
|
290
|
-
return files
|
|
291
|
-
?
|
|
292
|
-
: path}?websiteId=${websiteId}`);
|
|
291
|
+
return files
|
|
292
|
+
.map(({ path }, idx) => result && result[idx] ? result[idx] : path);
|
|
293
293
|
}
|
|
294
294
|
return router;
|
|
295
295
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silexlabs/silex",
|
|
3
3
|
"description": "Free and easy website builder for everyone.",
|
|
4
|
-
"version": "3.0.0-alpha.
|
|
4
|
+
"version": "3.0.0-alpha.97",
|
|
5
5
|
"version:backwardcompat": "3.0.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Alex Hoyau",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"@gitbeaker/rest": "^39.7.0",
|
|
106
106
|
"@silexlabs/grapesjs-fonts": "1.0.12",
|
|
107
107
|
"@silexlabs/grapesjs-loading": "1.0.8",
|
|
108
|
-
"@silexlabs/grapesjs-storage-rate-limit": "^1.0.
|
|
108
|
+
"@silexlabs/grapesjs-storage-rate-limit": "^1.0.8",
|
|
109
109
|
"@silexlabs/grapesjs-symbols": "1.0.30",
|
|
110
110
|
"@silexlabs/grapesjs-ui-suggest-classes": "1.0.23",
|
|
111
111
|
"@silexlabs/silex-plugins": "1.0.10",
|
|
@@ -3,53 +3,61 @@ import { jest, expect, describe, it, beforeEach } from '@jest/globals'
|
|
|
3
3
|
describe('assetUrl', () => {
|
|
4
4
|
beforeEach(() => {
|
|
5
5
|
jest.resetModules()
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
//it('store url to display url', async () => {
|
|
9
|
-
// const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
10
|
-
// // Convert a valid URL as stored
|
|
11
|
-
// expect(storedToDisplayed('/assets/test.webp', 'test-id', 'test-connector'))
|
|
12
|
-
// .toBe('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
13
|
-
// // Convert a URL which is already as displayed
|
|
14
|
-
// expect(storedToDisplayed('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector', 'test-id', 'test-connector'))
|
|
15
|
-
// .toBe('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
16
|
-
//})
|
|
17
|
-
|
|
18
|
-
//it('display url to store url', async () => {
|
|
19
|
-
// const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
20
|
-
// // Convert a valid URL as displayed
|
|
21
|
-
// expect(displayedToStored('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector'))
|
|
22
|
-
// .toBe('/assets/test.webp')
|
|
23
|
-
// // Convert a URL which is already as stored
|
|
24
|
-
// expect(displayedToStored('/assets/test.webp'))
|
|
25
|
-
// .toBe('/assets/test.webp')
|
|
26
|
-
//})
|
|
27
|
-
|
|
28
|
-
//it('store url to display url with a root path', async () => {
|
|
29
|
-
// Object.defineProperty(window, 'location', {
|
|
30
|
-
// value: {
|
|
31
|
-
// href: 'http://localhost:6800/silex',
|
|
32
|
-
// pathname: '/silex',
|
|
33
|
-
// origin: 'http://localhost:6800',
|
|
34
|
-
// },
|
|
35
|
-
// });
|
|
36
|
-
// const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
37
|
-
// // Convert a valid URL as stored
|
|
38
|
-
// expect(storedToDisplayed('/assets/test.webp', 'test-id', 'test-connector'))
|
|
39
|
-
// .toBe('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
40
|
-
// // Convert a URL which is already as displayed
|
|
41
|
-
// expect(storedToDisplayed('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector', 'test-id', 'test-connector'))
|
|
42
|
-
// .toBe('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
43
|
-
//})
|
|
44
|
-
|
|
45
|
-
it('display url to store url with a root path', async () => {
|
|
46
6
|
Object.defineProperty(window, 'location', {
|
|
47
7
|
value: {
|
|
48
|
-
href: 'http://localhost:6800/
|
|
49
|
-
pathname: '
|
|
8
|
+
href: 'http://localhost:6800/',
|
|
9
|
+
pathname: '',
|
|
50
10
|
origin: 'http://localhost:6800',
|
|
51
11
|
},
|
|
52
12
|
})
|
|
13
|
+
Object.assign(window.location, {
|
|
14
|
+
href: 'http://localhost:6800/',
|
|
15
|
+
pathname: '',
|
|
16
|
+
origin: 'http://localhost:6800',
|
|
17
|
+
})
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('store url to display url', async () => {
|
|
21
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
22
|
+
// Convert a valid URL as stored
|
|
23
|
+
expect(storedToDisplayed('/assets/test.webp', 'test-id', 'test-connector'))
|
|
24
|
+
.toBe('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
25
|
+
// Convert a URL which is already as displayed
|
|
26
|
+
expect(storedToDisplayed('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector', 'test-id', 'test-connector'))
|
|
27
|
+
.toBe('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
it('display url to store url', async () => {
|
|
31
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
32
|
+
// Convert a valid URL as displayed
|
|
33
|
+
expect(displayedToStored('/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector'))
|
|
34
|
+
.toBe('/assets/test.webp')
|
|
35
|
+
// Convert a URL which is already as stored
|
|
36
|
+
expect(displayedToStored('/assets/test.webp'))
|
|
37
|
+
.toBe('/assets/test.webp')
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('store url to display url with a root path', async () => {
|
|
41
|
+
Object.assign(window.location, {
|
|
42
|
+
href: 'http://localhost:6800/silex',
|
|
43
|
+
pathname: '/silex',
|
|
44
|
+
origin: 'http://localhost:6800',
|
|
45
|
+
})
|
|
46
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
47
|
+
// Convert a valid URL as stored
|
|
48
|
+
expect(storedToDisplayed('/assets/test.webp', 'test-id', 'test-connector'))
|
|
49
|
+
.toBe('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
50
|
+
// Convert a URL which is already as displayed
|
|
51
|
+
expect(storedToDisplayed('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector', 'test-id', 'test-connector'))
|
|
52
|
+
.toBe('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('display url to store url with a root path', async () => {
|
|
56
|
+
Object.assign(window.location, {
|
|
57
|
+
href: 'http://localhost:6800/silex',
|
|
58
|
+
pathname: '/silex',
|
|
59
|
+
origin: 'http://localhost:6800',
|
|
60
|
+
})
|
|
53
61
|
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
54
62
|
// Convert a valid URL as displayed
|
|
55
63
|
expect(displayedToStored('/silex/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector'))
|
|
@@ -58,4 +66,60 @@ describe('assetUrl', () => {
|
|
|
58
66
|
expect(displayedToStored('/assets/test.webp'))
|
|
59
67
|
.toBe('/assets/test.webp')
|
|
60
68
|
})
|
|
69
|
+
|
|
70
|
+
it('store url to display url with escapable chars', async () => {
|
|
71
|
+
Object.assign(window.location, {
|
|
72
|
+
href: 'http://localhost:6800/silex%20with%20spaces',
|
|
73
|
+
pathname: '/silex%20with%20spaces',
|
|
74
|
+
origin: 'http://localhost:6800',
|
|
75
|
+
})
|
|
76
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
77
|
+
// Convert a valid URL as displayed
|
|
78
|
+
expect(displayedToStored('/silex%20with%20spaces/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector'))
|
|
79
|
+
.toBe('/assets/test.webp')
|
|
80
|
+
// Convert a URL which is already as stored
|
|
81
|
+
expect(displayedToStored('/assets/test.webp'))
|
|
82
|
+
.toBe('/assets/test.webp')
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
it('display url to store url with escapable chars', async () => {
|
|
86
|
+
Object.assign(window.location, {
|
|
87
|
+
href: 'http://localhost:6800/silex%20with%20spaces',
|
|
88
|
+
pathname: '/silex%20with%20spaces',
|
|
89
|
+
origin: 'http://localhost:6800',
|
|
90
|
+
})
|
|
91
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
92
|
+
// Convert a valid URL as stored
|
|
93
|
+
expect(storedToDisplayed('/assets/test.webp', 'test-id', 'test-connector'))
|
|
94
|
+
.toBe('/silex with spaces/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
95
|
+
// Convert a URL which is already as displayed
|
|
96
|
+
expect(storedToDisplayed('/silex%20with%20spaces/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector', 'test-id', 'test-connector'))
|
|
97
|
+
.toBe('/silex%20with%20spaces/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
98
|
+
expect(storedToDisplayed('/silex with spaces/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector', 'test-id', 'test-connector'))
|
|
99
|
+
.toBe('/silex with spaces/api/website/assets/test.webp?websiteId=test-id&connectorId=test-connector')
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
it('store url to display url with escapable website id and connector id', async () => {
|
|
103
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
104
|
+
// Convert a valid URL as displayed
|
|
105
|
+
expect(displayedToStored('/api/website/assets/test.webp?websiteId=test%20id&connectorId=test%20connector'))
|
|
106
|
+
.toBe('/assets/test.webp')
|
|
107
|
+
// Convert a URL which is already as stored
|
|
108
|
+
expect(displayedToStored('/assets/test.webp'))
|
|
109
|
+
.toBe('/assets/test.webp')
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
it('display url to store url with escapable website id and connector id', async () => {
|
|
113
|
+
const { displayedToStored, storedToDisplayed } = await import('./assetUrl')
|
|
114
|
+
const websiteId = 'test id'
|
|
115
|
+
const websiteIdEncoded = 'test+id'
|
|
116
|
+
const connectorId = 'test connector'
|
|
117
|
+
const connectorIdEncoded = 'test+connector'
|
|
118
|
+
// Convert a valid URL as stored
|
|
119
|
+
expect(storedToDisplayed('/assets/test.webp', websiteId, connectorId))
|
|
120
|
+
.toBe(`/api/website/assets/test.webp?websiteId=${websiteIdEncoded}&connectorId=${connectorIdEncoded}`)
|
|
121
|
+
// Convert a URL which is already as displayed
|
|
122
|
+
expect(storedToDisplayed(`/api/website/assets/test.webp?websiteId=${websiteIdEncoded}&connectorId=${connectorIdEncoded}`, websiteId, connectorId))
|
|
123
|
+
.toBe(`/api/website/assets/test.webp?websiteId=${websiteIdEncoded}&connectorId=${connectorIdEncoded}`)
|
|
124
|
+
})
|
|
61
125
|
})
|
|
@@ -15,7 +15,6 @@ const baseUrl = window.location.pathname.replace(/\/$/, '')
|
|
|
15
15
|
|
|
16
16
|
// Orging and path, should we use config.rootUrl?
|
|
17
17
|
const SERVER_URL = window.location.origin
|
|
18
|
-
console.log('SERVER_URL', SERVER_URL)
|
|
19
18
|
|
|
20
19
|
/**
|
|
21
20
|
* Function to convert a path from it stored version to the displayed version
|
|
@@ -36,10 +35,11 @@ export function storedToDisplayed(path: string, websiteId: WebsiteId, storageId:
|
|
|
36
35
|
url.searchParams.set('websiteId', websiteId)
|
|
37
36
|
url.searchParams.set('connectorId', storageId)
|
|
38
37
|
// Back to a relative URL, keep the path but not the origin
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
return `${decodeURIComponent(url.pathname)}${url.search}`
|
|
39
|
+
//const encodedPath = '/' + url.toString() // add a leading slash
|
|
40
|
+
// .replace(new RegExp(`^${SERVER_URL}`), '')
|
|
41
|
+
// .replace(/^\//, '') // remove the first slash if it exists
|
|
42
|
+
//return decodeURIComponent(encodedPath)
|
|
43
43
|
} else {
|
|
44
44
|
console.warn('storedToDisplayed: path is not a stored path', path)
|
|
45
45
|
return path
|
|
@@ -300,13 +300,16 @@ export default function (config: ServerConfig, opts = {}): Router {
|
|
|
300
300
|
|
|
301
301
|
// Return the file URLs to insert in the website
|
|
302
302
|
// As expected by grapesjs (https://grapesjs.com/docs/modules/Assets.html#uploading-assets)
|
|
303
|
+
const data = result.map(path =>
|
|
304
|
+
// FIXME: We should return path without this line, as it is saved, not as it is displayed
|
|
305
|
+
baseUrl + API_PATH + API_WEBSITE_PATH + API_WEBSITE_ASSET_READ
|
|
306
|
+
+ path
|
|
307
|
+
+ `?websiteId=${websiteId}&connectorId=${connectorId ? connectorId : ''}` // As expected by wesite API (readAsset)
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
// Return the file URLs
|
|
303
311
|
res.json({
|
|
304
|
-
data
|
|
305
|
-
// FIXME: We should return path without this line, as it is saved, not as it is displayed
|
|
306
|
-
baseUrl + API_PATH + API_WEBSITE_PATH + API_WEBSITE_ASSET_READ
|
|
307
|
-
+ path
|
|
308
|
-
+ `?websiteId=${websiteId}&connectorId=${connectorId ? connectorId : ''}` // As expected by wesite API (readAsset)
|
|
309
|
-
),
|
|
312
|
+
data,
|
|
310
313
|
} as ApiWebsiteAssetsWriteResponse)
|
|
311
314
|
|
|
312
315
|
// Hook for plugins
|
|
@@ -418,11 +421,12 @@ export default function (config: ServerConfig, opts = {}): Router {
|
|
|
418
421
|
)
|
|
419
422
|
|
|
420
423
|
// Return the files URLs with the website id
|
|
421
|
-
return files
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
424
|
+
return files
|
|
425
|
+
// Use the original path or the one returned by the connector
|
|
426
|
+
.map(({ path }, idx) => result && result[idx] ? result[idx] : path)
|
|
427
|
+
// Make it an absolute path with the website id and the connector id as query params
|
|
428
|
+
//.map((path) => toAssetUrl(path, config.url, websiteId, connectorId))
|
|
426
429
|
}
|
|
430
|
+
|
|
427
431
|
return router
|
|
428
432
|
}
|