@uxf/resizer 1.1.2 → 1.2.2

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.
@@ -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: " + sourcePath_1);
114
+ console.log("\nSOURCE_PATH: ".concat(sourcePath_1));
115
115
  // eslint-disable-next-line no-console
116
- console.log("GENERATED_PATH: " + generatePath_1);
116
+ console.log("GENERATED_PATH: ".concat(generatePath_1));
117
117
  // eslint-disable-next-line no-console
118
- console.log("Source folder depth: " + sourceFolderDepth_1);
118
+ console.log("Source folder depth: ".concat(sourceFolderDepth_1));
119
119
  // eslint-disable-next-line no-console
120
- console.log("Generated folder depth: " + generatedFolderDepth_1);
120
+ console.log("Generated folder depth: ".concat(generatedFolderDepth_1));
121
121
  // eslint-disable-next-line no-console
122
- console.log("Filename regexp: " + filenameRegexp_1);
122
+ console.log("Filename regexp: ".concat(filenameRegexp_1));
123
123
  // eslint-disable-next-line no-console
124
- console.log("Namespace: " + (disableNamespace_1 ? "disabled" : "enabled"));
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.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
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];
@@ -60,6 +64,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
60
64
  Object.defineProperty(exports, "__esModule", { value: true });
61
65
  exports.createApp = void 0;
62
66
  var express_1 = __importDefault(require("express"));
67
+ var node_fetch_1 = __importDefault(require("node-fetch"));
63
68
  var fs_1 = require("fs");
64
69
  var fs = __importStar(require("fs"));
65
70
  var sharp_1 = __importDefault(require("sharp"));
@@ -86,20 +91,20 @@ var POSITION_OPTIONS = {
86
91
  };
87
92
  var isTrim = function (value) { return value !== "nt"; };
88
93
  var getTrimValue = function (value) { return (isTrim(value) ? Number(value) : 0); };
89
- var createApp = function (sourcePath, generatePath, sourceFolderDepth, generatedFolderDepth, filenameRegexp, disableNamespace) {
94
+ var createApp = function (sourcePathOrUrl, generatePath, sourceFolderDepth, generatedFolderDepth, filenameRegexp, disableNamespace) {
90
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"; }
91
- var parseFilename = path_to_regexp_1.match(filenameRegexp, { decode: decodeURIComponent });
92
- var generatedPxArray = Array.from({ length: generatedFolderDepth }, function (_, i) { return ":p" + (i + 1); });
93
- var sourcePxArray = Array.from({ length: sourceFolderDepth }, function (_, i) { return ":p" + (i + 1); });
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); });
94
99
  var routeRegexpBase = disableNamespace ? "/generated" : "/generated/:namespace";
95
100
  var routeRegexp = generatedFolderDepth > 0
96
- ? routeRegexpBase + "/" + generatedPxArray.join("/") + "/:filename"
97
- : routeRegexpBase + "/:filename";
101
+ ? "".concat(routeRegexpBase, "/").concat(generatedPxArray.join("/"), "/:filename")
102
+ : "".concat(routeRegexpBase, "/:filename");
98
103
  // eslint-disable-next-line no-console
99
- console.log("\nExpress route regexp: " + routeRegexp);
104
+ console.log("\nExpress route regexp: ".concat(routeRegexp));
100
105
  // eslint-disable-next-line no-console
101
- console.log("Filename regexp: " + filenameRegexp);
102
- 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 () {
103
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;
104
109
  return __generator(this, function (_c) {
105
110
  switch (_c.label) {
@@ -107,39 +112,46 @@ var createApp = function (sourcePath, generatePath, sourceFolderDepth, generated
107
112
  _a = req.params, filename = _a.filename, namespace = _a.namespace;
108
113
  parsedFilename = parseFilename(filename);
109
114
  if (!parsedFilename) {
110
- process.stdout.write("Filename '" + filename + "' not found.");
115
+ process.stdout.write("Filename '".concat(filename, "' not found."));
111
116
  return [2 /*return*/, res.sendStatus(404)];
112
117
  }
113
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;
114
119
  generatedPxDirectories = generatedPxArray.map(function (_, index) { return originalFilename.charAt(index); });
115
- generatedDirectoryPart = disableNamespace ? generatePath : generatePath + "/" + namespace;
120
+ generatedDirectoryPart = disableNamespace ? generatePath : "".concat(generatePath, "/").concat(namespace);
116
121
  generatedDirectory = generatedPxDirectories.length > 0
117
- ? generatedDirectoryPart + "/" + generatedPxDirectories.join("/")
122
+ ? "".concat(generatedDirectoryPart, "/").concat(generatedPxDirectories.join("/"))
118
123
  : generatedDirectoryPart;
119
- generatedFilePath = generatedDirectory + "/" + filename;
120
- sourcePxDirectories = sourcePxArray.map(function (_, index) { return originalFilename.charAt(index); });
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;
124
+ generatedFilePath = "".concat(generatedDirectory, "/").concat(filename);
125
+ // try load from disk
127
126
  if (fs.existsSync(generatedFilePath)) {
128
127
  return [2 /*return*/, res.sendFile(generatedFilePath)];
129
128
  }
130
- if (!fs_1.existsSync(generatedDirectory)) {
131
- fs_1.mkdirSync(generatedDirectory, { recursive: true });
129
+ if (!(0, fs_1.existsSync)(generatedDirectory)) {
130
+ (0, fs_1.mkdirSync)(generatedDirectory, { recursive: true });
132
131
  }
133
- return [4 /*yield*/, sharp_1.default(sourceFilePath)
134
- .rotate()
135
- .resize(width ? Number(width) : undefined, height ? Number(height) : undefined, {
136
- background: background === "t" ? "transparent" : "#" + background,
137
- fastShrinkOnLoad: false,
138
- fit: FIT_OPTIONS[fit] || "cover",
139
- position: POSITION_OPTIONS[position] || "centre",
140
- withoutEnlargement: originalExtension !== "svg",
141
- })];
142
- case 1:
132
+ sourcePxDirectories = sourcePxArray.map(function (_, index) { return originalFilename.charAt(index); });
133
+ sourceDirectoryPart = disableNamespace ? sourcePathOrUrl : "".concat(sourcePathOrUrl, "/").concat(namespace);
134
+ sourceDirectory = sourcePxDirectories.length > 0
135
+ ? "".concat(sourceDirectoryPart, "/").concat(sourcePxDirectories.join("/"))
136
+ : sourceDirectoryPart;
137
+ sourceFilename = "".concat(originalFilename, ".").concat(originalExtension);
138
+ sourceFilePath = "".concat(sourceDirectory, "/").concat(sourceFilename);
139
+ if (!sourcePathOrUrl.startsWith("https://")) return [3 /*break*/, 3];
140
+ return [4 /*yield*/, (0, node_fetch_1.default)(sourceFilePath)];
141
+ case 1: return [4 /*yield*/, (_c.sent()).buffer()];
142
+ case 2:
143
+ sourceFilePath = _c.sent();
144
+ _c.label = 3;
145
+ case 3: return [4 /*yield*/, (0, sharp_1.default)(sourceFilePath)
146
+ .rotate()
147
+ .resize(width ? Number(width) : undefined, height ? Number(height) : undefined, {
148
+ background: background === "t" ? "transparent" : "#".concat(background),
149
+ fastShrinkOnLoad: false,
150
+ fit: FIT_OPTIONS[fit] || "cover",
151
+ position: POSITION_OPTIONS[position] || "centre",
152
+ withoutEnlargement: originalExtension !== "svg",
153
+ })];
154
+ case 4:
143
155
  pipeline = _c.sent();
144
156
  if (isTrim(trim)) {
145
157
  pipeline.trim(getTrimValue(trim));
@@ -163,7 +175,7 @@ var createApp = function (sourcePath, generatePath, sourceFolderDepth, generated
163
175
  break;
164
176
  }
165
177
  cacheMaxAge = 7 * 24 * 60 * 60;
166
- res.setHeader("cache-control", "public, max-age=" + cacheMaxAge);
178
+ res.setHeader("cache-control", "public, max-age=".concat(cacheMaxAge));
167
179
  res.setHeader("Content-Type", contentType);
168
180
  pipeline
169
181
  .withMetadata({ density: 72 })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/resizer",
3
- "version": "1.1.2",
3
+ "version": "1.2.2",
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": "^2.6.7",
21
22
  "path-to-regexp": "^6.2.0",
22
23
  "process": "^0.11.10",
23
- "sharp": "^0.28.3",
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.28.5",
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": "^6.2.1",
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": "^12.2.0",
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",