@uxf/resizer 1.2.0 → 1.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/bin/uxf-resizer.js +7 -7
- package/index.js +27 -23
- package/package.json +6 -6
package/bin/uxf-resizer.js
CHANGED
|
@@ -108,20 +108,20 @@ var uxfResizer = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
108
108
|
}
|
|
109
109
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
110
110
|
try {
|
|
111
|
-
var app_1 = index_1.createApp(sourcePath_1, generatePath_1, sourceFolderDepth_1, generatedFolderDepth_1, filenameRegexp_1, disableNamespace_1);
|
|
111
|
+
var app_1 = (0, index_1.createApp)(sourcePath_1, generatePath_1, sourceFolderDepth_1, generatedFolderDepth_1, filenameRegexp_1, disableNamespace_1);
|
|
112
112
|
var listenedApp_1 = app_1.listen(3000, function () {
|
|
113
113
|
// eslint-disable-next-line no-console
|
|
114
|
-
console.log("\nSOURCE_PATH: "
|
|
114
|
+
console.log("\nSOURCE_PATH: ".concat(sourcePath_1));
|
|
115
115
|
// eslint-disable-next-line no-console
|
|
116
|
-
console.log("GENERATED_PATH: "
|
|
116
|
+
console.log("GENERATED_PATH: ".concat(generatePath_1));
|
|
117
117
|
// eslint-disable-next-line no-console
|
|
118
|
-
console.log("Source folder depth: "
|
|
118
|
+
console.log("Source folder depth: ".concat(sourceFolderDepth_1));
|
|
119
119
|
// eslint-disable-next-line no-console
|
|
120
|
-
console.log("Generated folder depth: "
|
|
120
|
+
console.log("Generated folder depth: ".concat(generatedFolderDepth_1));
|
|
121
121
|
// eslint-disable-next-line no-console
|
|
122
|
-
console.log("Filename regexp: "
|
|
122
|
+
console.log("Filename regexp: ".concat(filenameRegexp_1));
|
|
123
123
|
// eslint-disable-next-line no-console
|
|
124
|
-
console.log("Namespace: "
|
|
124
|
+
console.log("Namespace: ".concat(disableNamespace_1 ? "disabled" : "enabled"));
|
|
125
125
|
// eslint-disable-next-line no-console
|
|
126
126
|
console.log("\nImage resizer app listening on port 3000");
|
|
127
127
|
if (process.env.NODE_ENV !== "production") {
|
package/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -89,18 +93,18 @@ var isTrim = function (value) { return value !== "nt"; };
|
|
|
89
93
|
var getTrimValue = function (value) { return (isTrim(value) ? Number(value) : 0); };
|
|
90
94
|
var createApp = function (sourcePathOrUrl, generatePath, sourceFolderDepth, generatedFolderDepth, filenameRegexp, disableNamespace) {
|
|
91
95
|
if (filenameRegexp === void 0) { filenameRegexp = ":originalFilename([a-f0-9\\-]+)_:width(\\d+)_:height(\\d+)_:fit([a-z]+)_:position([a-z]+)_:background([a-z]+)_:trim([a-z]+)_:originalExtension.:toFormat"; }
|
|
92
|
-
var parseFilename = path_to_regexp_1.match(filenameRegexp, { decode: decodeURIComponent });
|
|
93
|
-
var generatedPxArray = Array.from({ length: generatedFolderDepth }, function (_, i) { return ":p"
|
|
94
|
-
var sourcePxArray = Array.from({ length: sourceFolderDepth }, function (_, i) { return ":p"
|
|
96
|
+
var parseFilename = (0, path_to_regexp_1.match)(filenameRegexp, { decode: decodeURIComponent });
|
|
97
|
+
var generatedPxArray = Array.from({ length: generatedFolderDepth }, function (_, i) { return ":p".concat(i + 1); });
|
|
98
|
+
var sourcePxArray = Array.from({ length: sourceFolderDepth }, function (_, i) { return ":p".concat(i + 1); });
|
|
95
99
|
var routeRegexpBase = disableNamespace ? "/generated" : "/generated/:namespace";
|
|
96
100
|
var routeRegexp = generatedFolderDepth > 0
|
|
97
|
-
? routeRegexpBase
|
|
98
|
-
: routeRegexpBase
|
|
101
|
+
? "".concat(routeRegexpBase, "/").concat(generatedPxArray.join("/"), "/:filename")
|
|
102
|
+
: "".concat(routeRegexpBase, "/:filename");
|
|
99
103
|
// eslint-disable-next-line no-console
|
|
100
|
-
console.log("\nExpress route regexp: "
|
|
104
|
+
console.log("\nExpress route regexp: ".concat(routeRegexp));
|
|
101
105
|
// eslint-disable-next-line no-console
|
|
102
|
-
console.log("Filename regexp: "
|
|
103
|
-
return express_1.default().get(routeRegexp, function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
console.log("Filename regexp: ".concat(filenameRegexp));
|
|
107
|
+
return (0, express_1.default)().get(routeRegexp, function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
|
104
108
|
var _a, filename, namespace, parsedFilename, _b, originalFilename, originalExtension, fit, height, position, toFormat, trim, width, background, generatedPxDirectories, generatedDirectoryPart, generatedDirectory, generatedFilePath, sourcePxDirectories, sourceDirectoryPart, sourceDirectory, sourceFilename, sourceFilePath, pipeline, contentType, cacheMaxAge;
|
|
105
109
|
return __generator(this, function (_c) {
|
|
106
110
|
switch (_c.label) {
|
|
@@ -108,40 +112,40 @@ var createApp = function (sourcePathOrUrl, generatePath, sourceFolderDepth, gene
|
|
|
108
112
|
_a = req.params, filename = _a.filename, namespace = _a.namespace;
|
|
109
113
|
parsedFilename = parseFilename(filename);
|
|
110
114
|
if (!parsedFilename) {
|
|
111
|
-
process.stdout.write("Filename '"
|
|
115
|
+
process.stdout.write("Filename '".concat(filename, "' not found."));
|
|
112
116
|
return [2 /*return*/, res.sendStatus(404)];
|
|
113
117
|
}
|
|
114
118
|
_b = parsedFilename.params, originalFilename = _b.originalFilename, originalExtension = _b.originalExtension, fit = _b.fit, height = _b.height, position = _b.position, toFormat = _b.toFormat, trim = _b.trim, width = _b.width, background = _b.background;
|
|
115
119
|
generatedPxDirectories = generatedPxArray.map(function (_, index) { return originalFilename.charAt(index); });
|
|
116
|
-
generatedDirectoryPart = disableNamespace ? generatePath : generatePath
|
|
120
|
+
generatedDirectoryPart = disableNamespace ? generatePath : "".concat(generatePath, "/").concat(namespace);
|
|
117
121
|
generatedDirectory = generatedPxDirectories.length > 0
|
|
118
|
-
? generatedDirectoryPart
|
|
122
|
+
? "".concat(generatedDirectoryPart, "/").concat(generatedPxDirectories.join("/"))
|
|
119
123
|
: generatedDirectoryPart;
|
|
120
|
-
generatedFilePath = generatedDirectory
|
|
124
|
+
generatedFilePath = "".concat(generatedDirectory, "/").concat(filename);
|
|
121
125
|
// try load from disk
|
|
122
126
|
if (fs.existsSync(generatedFilePath)) {
|
|
123
127
|
return [2 /*return*/, res.sendFile(generatedFilePath)];
|
|
124
128
|
}
|
|
125
|
-
if (!fs_1.existsSync(generatedDirectory)) {
|
|
126
|
-
fs_1.mkdirSync(generatedDirectory, { recursive: true });
|
|
129
|
+
if (!(0, fs_1.existsSync)(generatedDirectory)) {
|
|
130
|
+
(0, fs_1.mkdirSync)(generatedDirectory, { recursive: true });
|
|
127
131
|
}
|
|
128
132
|
sourcePxDirectories = sourcePxArray.map(function (_, index) { return originalFilename.charAt(index); });
|
|
129
|
-
sourceDirectoryPart = disableNamespace ? sourcePathOrUrl : sourcePathOrUrl
|
|
133
|
+
sourceDirectoryPart = disableNamespace ? sourcePathOrUrl : "".concat(sourcePathOrUrl, "/").concat(namespace);
|
|
130
134
|
sourceDirectory = sourcePxDirectories.length > 0
|
|
131
|
-
? sourceDirectoryPart
|
|
135
|
+
? "".concat(sourceDirectoryPart, "/").concat(sourcePxDirectories.join("/"))
|
|
132
136
|
: sourceDirectoryPart;
|
|
133
|
-
sourceFilename = originalFilename
|
|
134
|
-
sourceFilePath = sourceDirectory
|
|
137
|
+
sourceFilename = "".concat(originalFilename, ".").concat(originalExtension);
|
|
138
|
+
sourceFilePath = "".concat(sourceDirectory, "/").concat(sourceFilename);
|
|
135
139
|
if (!sourcePathOrUrl.startsWith("https://")) return [3 /*break*/, 3];
|
|
136
|
-
return [4 /*yield*/, node_fetch_1.default(sourceFilePath)];
|
|
140
|
+
return [4 /*yield*/, (0, node_fetch_1.default)(sourceFilePath)];
|
|
137
141
|
case 1: return [4 /*yield*/, (_c.sent()).buffer()];
|
|
138
142
|
case 2:
|
|
139
143
|
sourceFilePath = _c.sent();
|
|
140
144
|
_c.label = 3;
|
|
141
|
-
case 3: return [4 /*yield*/, sharp_1.default(sourceFilePath)
|
|
145
|
+
case 3: return [4 /*yield*/, (0, sharp_1.default)(sourceFilePath)
|
|
142
146
|
.rotate()
|
|
143
147
|
.resize(width ? Number(width) : undefined, height ? Number(height) : undefined, {
|
|
144
|
-
background: background === "t" ? "transparent" : "#"
|
|
148
|
+
background: background === "t" ? "transparent" : "#".concat(background),
|
|
145
149
|
fastShrinkOnLoad: false,
|
|
146
150
|
fit: FIT_OPTIONS[fit] || "cover",
|
|
147
151
|
position: POSITION_OPTIONS[position] || "centre",
|
|
@@ -171,7 +175,7 @@ var createApp = function (sourcePathOrUrl, generatePath, sourceFolderDepth, gene
|
|
|
171
175
|
break;
|
|
172
176
|
}
|
|
173
177
|
cacheMaxAge = 7 * 24 * 60 * 60;
|
|
174
|
-
res.setHeader("cache-control", "public, max-age="
|
|
178
|
+
res.setHeader("cache-control", "public, max-age=".concat(cacheMaxAge));
|
|
175
179
|
res.setHeader("Content-Type", contentType);
|
|
176
180
|
pipeline
|
|
177
181
|
.withMetadata({ density: 72 })
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/resizer",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"description": "UXF Resizer",
|
|
6
6
|
"author": "UXFans <dev@uxf.cz>",
|
|
@@ -18,9 +18,10 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"express": "^4.17.1",
|
|
20
20
|
"fs": "^0.0.1-security",
|
|
21
|
+
"node-fetch": "^3.2.1",
|
|
21
22
|
"path-to-regexp": "^6.2.0",
|
|
22
23
|
"process": "^0.11.10",
|
|
23
|
-
"sharp": "^0.
|
|
24
|
+
"sharp": "^0.30.2",
|
|
24
25
|
"yargs": "^17.2.1"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
@@ -29,18 +30,17 @@
|
|
|
29
30
|
"@types/jest": "^27.0.1",
|
|
30
31
|
"@types/node-fetch": "^2.5.12",
|
|
31
32
|
"@types/path-to-regexp": "^1.7.0",
|
|
32
|
-
"@types/sharp": "^0.
|
|
33
|
+
"@types/sharp": "^0.29.5",
|
|
33
34
|
"@types/supertest": "^2.0.11",
|
|
34
35
|
"@typescript-eslint/eslint-plugin": "^5.11.0",
|
|
35
36
|
"@uxf/eslint-config": "^1.2.3",
|
|
36
|
-
"concurrently": "^
|
|
37
|
+
"concurrently": "^7.0.0",
|
|
37
38
|
"crypto-js": "^4.1.1",
|
|
38
39
|
"eslint": "^8.8.0",
|
|
39
40
|
"eslint-config-prettier": "^8.3.0",
|
|
40
41
|
"eslint-plugin-prettier": "^4.0.0",
|
|
41
42
|
"jest": "^27.0.6",
|
|
42
|
-
"jest-junit": "^
|
|
43
|
-
"node-fetch": "^2.6.1",
|
|
43
|
+
"jest-junit": "^13.0.0",
|
|
44
44
|
"prettier": "^2.3.2",
|
|
45
45
|
"supertest": "^6.1.5",
|
|
46
46
|
"ts-jest": "^27.0.5",
|