@uxf/resizer 1.1.2 → 1.2.0
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/index.js +26 -18
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -60,6 +60,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
60
60
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
61
|
exports.createApp = void 0;
|
|
62
62
|
var express_1 = __importDefault(require("express"));
|
|
63
|
+
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
63
64
|
var fs_1 = require("fs");
|
|
64
65
|
var fs = __importStar(require("fs"));
|
|
65
66
|
var sharp_1 = __importDefault(require("sharp"));
|
|
@@ -86,7 +87,7 @@ var POSITION_OPTIONS = {
|
|
|
86
87
|
};
|
|
87
88
|
var isTrim = function (value) { return value !== "nt"; };
|
|
88
89
|
var getTrimValue = function (value) { return (isTrim(value) ? Number(value) : 0); };
|
|
89
|
-
var createApp = function (
|
|
90
|
+
var createApp = function (sourcePathOrUrl, generatePath, sourceFolderDepth, generatedFolderDepth, filenameRegexp, disableNamespace) {
|
|
90
91
|
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"; }
|
|
91
92
|
var parseFilename = path_to_regexp_1.match(filenameRegexp, { decode: decodeURIComponent });
|
|
92
93
|
var generatedPxArray = Array.from({ length: generatedFolderDepth }, function (_, i) { return ":p" + (i + 1); });
|
|
@@ -117,29 +118,36 @@ var createApp = function (sourcePath, generatePath, sourceFolderDepth, generated
|
|
|
117
118
|
? generatedDirectoryPart + "/" + generatedPxDirectories.join("/")
|
|
118
119
|
: generatedDirectoryPart;
|
|
119
120
|
generatedFilePath = generatedDirectory + "/" + filename;
|
|
120
|
-
|
|
121
|
-
sourceDirectoryPart = disableNamespace ? sourcePath : sourcePath + "/" + namespace;
|
|
122
|
-
sourceDirectory = sourcePxDirectories.length > 0
|
|
123
|
-
? sourceDirectoryPart + "/" + sourcePxDirectories.join("/")
|
|
124
|
-
: sourceDirectoryPart;
|
|
125
|
-
sourceFilename = originalFilename + "." + originalExtension;
|
|
126
|
-
sourceFilePath = sourceDirectory + "/" + sourceFilename;
|
|
121
|
+
// try load from disk
|
|
127
122
|
if (fs.existsSync(generatedFilePath)) {
|
|
128
123
|
return [2 /*return*/, res.sendFile(generatedFilePath)];
|
|
129
124
|
}
|
|
130
125
|
if (!fs_1.existsSync(generatedDirectory)) {
|
|
131
126
|
fs_1.mkdirSync(generatedDirectory, { recursive: true });
|
|
132
127
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
case 1:
|
|
128
|
+
sourcePxDirectories = sourcePxArray.map(function (_, index) { return originalFilename.charAt(index); });
|
|
129
|
+
sourceDirectoryPart = disableNamespace ? sourcePathOrUrl : sourcePathOrUrl + "/" + namespace;
|
|
130
|
+
sourceDirectory = sourcePxDirectories.length > 0
|
|
131
|
+
? sourceDirectoryPart + "/" + sourcePxDirectories.join("/")
|
|
132
|
+
: sourceDirectoryPart;
|
|
133
|
+
sourceFilename = originalFilename + "." + originalExtension;
|
|
134
|
+
sourceFilePath = sourceDirectory + "/" + sourceFilename;
|
|
135
|
+
if (!sourcePathOrUrl.startsWith("https://")) return [3 /*break*/, 3];
|
|
136
|
+
return [4 /*yield*/, node_fetch_1.default(sourceFilePath)];
|
|
137
|
+
case 1: return [4 /*yield*/, (_c.sent()).buffer()];
|
|
138
|
+
case 2:
|
|
139
|
+
sourceFilePath = _c.sent();
|
|
140
|
+
_c.label = 3;
|
|
141
|
+
case 3: return [4 /*yield*/, sharp_1.default(sourceFilePath)
|
|
142
|
+
.rotate()
|
|
143
|
+
.resize(width ? Number(width) : undefined, height ? Number(height) : undefined, {
|
|
144
|
+
background: background === "t" ? "transparent" : "#" + background,
|
|
145
|
+
fastShrinkOnLoad: false,
|
|
146
|
+
fit: FIT_OPTIONS[fit] || "cover",
|
|
147
|
+
position: POSITION_OPTIONS[position] || "centre",
|
|
148
|
+
withoutEnlargement: originalExtension !== "svg",
|
|
149
|
+
})];
|
|
150
|
+
case 4:
|
|
143
151
|
pipeline = _c.sent();
|
|
144
152
|
if (isTrim(trim)) {
|
|
145
153
|
pipeline.trim(getTrimValue(trim));
|