@uxf/resizer 2.0.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.resizer-config.json +4 -5
- package/README.md +5 -30
- package/index.js +34 -20
- package/package.json +1 -1
- package/example-assets/assets/logo.png +0 -0
package/.resizer-config.json
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
3
|
"route": "/generated/:namespace/:p1/:p2/:filename([a-f0-9\\-]+)_:width(\\d+)_:height(\\d+)_:fit([a-z]+)_:position([a-z]+)_:background([a-z]+)_:trim([a-z]+)_:extension.:toFormat",
|
|
4
|
-
"
|
|
4
|
+
"source": "/Users/vejvis/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
|
|
5
5
|
},
|
|
6
6
|
{
|
|
7
7
|
"route": "/generated/:namespace/:p1/:p2/:filename([a-f0-9\\-]+)_:width(\\d+)_:height(\\d+)_:fit([a-z]+).:extension",
|
|
8
|
-
"
|
|
8
|
+
"source": "/Users/vejvis/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
|
-
"route": "/generated/
|
|
12
|
-
"
|
|
13
|
-
"sourceDomain": "https://opentopo.app"
|
|
11
|
+
"route": "/generated/static/:width(\\d+)_:height(\\d+)/:filename(*).:extension.:toFormat",
|
|
12
|
+
"source": "https://www.uxf.cz/:filename+.:extension"
|
|
14
13
|
}
|
|
15
14
|
]
|
package/README.md
CHANGED
|
@@ -22,16 +22,15 @@ You can use configuration file `.resizer-config.json` or environment variable `U
|
|
|
22
22
|
[
|
|
23
23
|
{
|
|
24
24
|
"route": "/generated/:namespace/:p1/:p2/:filename([a-f0-9\\-]+)_:width(\\d+)_:height(\\d+)_:fit([a-z]+)_:position([a-z]+)_:background([a-z]+)_:trim([a-z]+)_:extension.:toFormat",
|
|
25
|
-
"
|
|
25
|
+
"source": "/var/www/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"route": "/generated/:namespace/:p1/:p2/:filename([a-f0-9\\-]+)_:width(\\d+)_:height(\\d+)_:fit([a-z]+).:extension",
|
|
29
|
-
"
|
|
29
|
+
"source": "/var/www/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
"route": "/generated/
|
|
33
|
-
"
|
|
34
|
-
"sourceDomain": "https://opentopo.app"
|
|
32
|
+
"route": "/generated/static/:width(\\d+)_:height(\\d+)/:filename(*).:extension.:toExtension",
|
|
33
|
+
"source": "https://www.uxf.cz/:filename+"
|
|
35
34
|
}
|
|
36
35
|
]
|
|
37
36
|
```
|
|
@@ -65,28 +64,4 @@ You can use configuration file `.resizer-config.json` or environment variable `U
|
|
|
65
64
|
- `r`: right
|
|
66
65
|
- `rb`: right bottom
|
|
67
66
|
- `rt`: right top
|
|
68
|
-
- `t`: top
|
|
69
|
-
|
|
70
|
-
## Help
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
Usage:
|
|
74
|
-
uxf-resizer
|
|
75
|
-
|
|
76
|
-
Environment variables:
|
|
77
|
-
UXF_RESIZER_SOURCE_PATH - required
|
|
78
|
-
UXF_RESIZER_GENERATE_PATH - required
|
|
79
|
-
|
|
80
|
-
Options
|
|
81
|
-
--disable-namespace [boolean] [default: false]
|
|
82
|
-
--source-folder-depth Depth of the source folder [number] [default: 2]
|
|
83
|
-
--generated-folder-depth Depth of the generated folder
|
|
84
|
-
[number] [default: 2]
|
|
85
|
-
--filename-regexp Filename regexp (see:
|
|
86
|
-
https://github.com/pillarjs/path-to-regexp)
|
|
87
|
-
[string]
|
|
88
|
-
-h, --help Show help [boolean]
|
|
89
|
-
|
|
90
|
-
Options:
|
|
91
|
-
--version Show version number [boolean]
|
|
92
|
-
```
|
|
67
|
+
- `t`: top
|
package/index.js
CHANGED
|
@@ -68,11 +68,11 @@ var POSITION_OPTIONS = {
|
|
|
68
68
|
};
|
|
69
69
|
var getWidth = function (_a) {
|
|
70
70
|
var width = _a.width;
|
|
71
|
-
return (width ? Number(width) : undefined);
|
|
71
|
+
return (width && width !== "x" ? Number(width) : undefined);
|
|
72
72
|
};
|
|
73
73
|
var getHeight = function (_a) {
|
|
74
74
|
var height = _a.height;
|
|
75
|
-
return (height ? Number(height) : undefined);
|
|
75
|
+
return (height && height !== "x" ? Number(height) : undefined);
|
|
76
76
|
};
|
|
77
77
|
var getBackground = function (_a) {
|
|
78
78
|
var background = _a.background;
|
|
@@ -100,29 +100,43 @@ function log(message) {
|
|
|
100
100
|
// eslint-disable-next-line no-console
|
|
101
101
|
console.log(message);
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* TODO @vejvis HACK
|
|
105
|
+
*
|
|
106
|
+
* pro odchycení celé cesty i s lomítkama je potřeba udělat hack: /generated/:restPath(*) => restPath bude string
|
|
107
|
+
* pro zpětné složení pomocí pathToRegexp::compile() se používá: /generated/:restPath+ => restPath musí být string[]
|
|
108
|
+
* Tato funkce projde celý objekt a pokud v hodnotě atributu najde "/" tak tento atribut převede na pole
|
|
109
|
+
*/
|
|
110
|
+
var repairParams = function (params) {
|
|
111
|
+
var obj = {};
|
|
112
|
+
Object.keys(params).forEach(function (key) {
|
|
113
|
+
var value = params[key];
|
|
114
|
+
obj[key] = value.includes("/") ? value.split("/") : value;
|
|
115
|
+
});
|
|
116
|
+
return obj;
|
|
117
|
+
};
|
|
103
118
|
var resizerMiddleware = function (config) {
|
|
104
119
|
var middleware = (0, express_1.Router)();
|
|
105
120
|
config.forEach(function (c, i) {
|
|
106
|
-
log("
|
|
107
|
-
log(" Route:
|
|
108
|
-
log(" Source
|
|
109
|
-
if (c.sourceDomain) {
|
|
110
|
-
log(" Domain: ".concat(c.sourceDomain));
|
|
111
|
-
}
|
|
121
|
+
log("Config #".concat(i + 1, ":"));
|
|
122
|
+
log(" Route: ".concat(c.route));
|
|
123
|
+
log(" Source: ".concat(c.source));
|
|
112
124
|
middleware.get(c.route, function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
|
113
|
-
var domain, sourceFilename, generatedFilename, generatedDirectory, params, sourceFile, _a, pipeline, trim;
|
|
114
|
-
var _b;
|
|
115
|
-
return __generator(this, function (
|
|
116
|
-
switch (
|
|
125
|
+
var url, domain, repairedParams, sourceFilename, generatedFilename, generatedDirectory, params, sourceFile, _a, pipeline, trim;
|
|
126
|
+
var _b, _c;
|
|
127
|
+
return __generator(this, function (_d) {
|
|
128
|
+
switch (_d.label) {
|
|
117
129
|
case 0:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
130
|
+
url = c.source.startsWith("http") ? new URL(c.source) : null;
|
|
131
|
+
domain = url === null || url === void 0 ? void 0 : url.origin;
|
|
132
|
+
repairedParams = repairParams(req.params);
|
|
133
|
+
sourceFilename = (0, path_to_regexp_1.compile)((_b = url === null || url === void 0 ? void 0 : url.pathname) !== null && _b !== void 0 ? _b : c.source, {})(repairedParams);
|
|
134
|
+
generatedFilename = ((_c = process.env.UXF_RESIZER_GENERATE_PATH) !== null && _c !== void 0 ? _c : process.cwd()) + req.path;
|
|
121
135
|
if ((0, fs_1.existsSync)(generatedFilename)) {
|
|
122
136
|
return [2 /*return*/, res.sendFile(generatedFilename)];
|
|
123
137
|
}
|
|
124
138
|
log("----------------------------------------");
|
|
125
|
-
log(
|
|
139
|
+
log(repairedParams);
|
|
126
140
|
log("Source filename: ".concat(sourceFilename));
|
|
127
141
|
log("Generated filename: ".concat(generatedFilename));
|
|
128
142
|
generatedDirectory = (0, path_1.dirname)(generatedFilename);
|
|
@@ -132,13 +146,13 @@ var resizerMiddleware = function (config) {
|
|
|
132
146
|
params = req.params;
|
|
133
147
|
if (!domain) return [3 /*break*/, 3];
|
|
134
148
|
return [4 /*yield*/, (0, node_fetch_1.default)(domain + sourceFilename)];
|
|
135
|
-
case 1: return [4 /*yield*/, (
|
|
149
|
+
case 1: return [4 /*yield*/, (_d.sent()).buffer()];
|
|
136
150
|
case 2:
|
|
137
|
-
_a =
|
|
151
|
+
_a = _d.sent();
|
|
138
152
|
return [3 /*break*/, 4];
|
|
139
153
|
case 3:
|
|
140
154
|
_a = sourceFilename;
|
|
141
|
-
|
|
155
|
+
_d.label = 4;
|
|
142
156
|
case 4:
|
|
143
157
|
sourceFile = _a;
|
|
144
158
|
return [4 /*yield*/, (0, sharp_1.default)(sourceFile)
|
|
@@ -153,7 +167,7 @@ var resizerMiddleware = function (config) {
|
|
|
153
167
|
withoutEnlargement: getWithoutEnlargement(params),
|
|
154
168
|
})];
|
|
155
169
|
case 5:
|
|
156
|
-
pipeline =
|
|
170
|
+
pipeline = _d.sent();
|
|
157
171
|
trim = getTrim(params);
|
|
158
172
|
if (trim !== undefined) {
|
|
159
173
|
pipeline.trim(trim);
|
package/package.json
CHANGED
|
Binary file
|