@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.
@@ -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
- "pathToSourceFile": "/Users/vejvis/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
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
- "pathToSourceFile": "/Users/vejvis/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
8
+ "source": "/Users/vejvis/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
9
9
  },
10
10
  {
11
- "route": "/generated/opentopo/:width(\\d+)_:height(\\d+)_:fit([a-z]+)/:filename",
12
- "pathToSourceFile": "/:filename",
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
- "pathToSourceFile": "/var/www/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
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
- "pathToSourceFile": "/var/www/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
29
+ "source": "/var/www/UXF/projects/resizer/example-upload/:namespace/:p1/:p2/:filename.:extension"
30
30
  },
31
31
  {
32
- "route": "/generated/opentopo/:width(\\d+)_:height(\\d+)_:fit([a-z]+)/:filename",
33
- "pathToSourceFile": "/:filename",
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("\nConfig #".concat(i + 1, ":"));
107
- log(" Route: ".concat(c.route));
108
- log(" Source file: ".concat(c.pathToSourceFile));
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 (_c) {
116
- switch (_c.label) {
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
- domain = c.sourceDomain;
119
- sourceFilename = (0, path_to_regexp_1.compile)(c.pathToSourceFile, {})(req.params);
120
- generatedFilename = ((_b = process.env.UXF_RESIZER_GENERATE_PATH) !== null && _b !== void 0 ? _b : process.cwd()) + req.path;
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(req.params);
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*/, (_c.sent()).buffer()];
149
+ case 1: return [4 /*yield*/, (_d.sent()).buffer()];
136
150
  case 2:
137
- _a = _c.sent();
151
+ _a = _d.sent();
138
152
  return [3 /*break*/, 4];
139
153
  case 3:
140
154
  _a = sourceFilename;
141
- _c.label = 4;
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 = _c.sent();
170
+ pipeline = _d.sent();
157
171
  trim = getTrim(params);
158
172
  if (trim !== undefined) {
159
173
  pipeline.trim(trim);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/resizer",
3
- "version": "2.0.0",
3
+ "version": "2.2.1",
4
4
  "main": "index.js",
5
5
  "description": "UXF Resizer",
6
6
  "author": "UXFans <dev@uxf.cz>",
Binary file