@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.
Files changed (2) hide show
  1. package/index.js +26 -18
  2. 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 (sourcePath, generatePath, sourceFolderDepth, generatedFolderDepth, filenameRegexp, disableNamespace) {
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
- 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;
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
- 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:
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));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/resizer",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "main": "index.js",
5
5
  "description": "UXF Resizer",
6
6
  "author": "UXFans <dev@uxf.cz>",