@uxf/resizer 1.1.0 → 1.1.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/README.md +53 -1
- package/bin/uxf-resizer.js +3 -3
- package/index.js +3 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,61 @@
|
|
|
1
1
|
# @uxf/resizer
|
|
2
2
|
[](https://www.npmjs.com/package/@uxf/resizer)
|
|
3
3
|
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
4
6
|
```
|
|
5
|
-
//
|
|
7
|
+
// global installation
|
|
6
8
|
yarn global add @uxf/resizer
|
|
9
|
+
export PATH="$(yarn global bin):$PATH"
|
|
10
|
+
UXF_RESIZER_SOURCE_PATH=${PWD}/example/source UXF_RESIZER_GENERATE_PATH=${PWD}/example/generated uxf-resizer
|
|
11
|
+
|
|
12
|
+
// local installation
|
|
13
|
+
yarn add @uxf/resizer
|
|
14
|
+
UXF_RESIZER_SOURCE_PATH=${PWD}/example/source UXF_RESIZER_GENERATE_PATH=${PWD}/example/generated ./node-modules/.bin/uxf-resizer
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Default filename regexp
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
:originalFilename([a-f0-9\-]+)_:width(\d+)_:height(\d+)_:fit([a-z]+)_:position([a-z]+)_:background([a-z]+)_:trim([a-z]+)_:originalExtension.:toFormat
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### fit
|
|
24
|
+
- `cv`: cover,
|
|
25
|
+
- `f`: fill,
|
|
26
|
+
- `cn`: contain,
|
|
27
|
+
- `in`: inside,
|
|
28
|
+
- `out`: outside,
|
|
29
|
+
|
|
30
|
+
### position
|
|
31
|
+
- `a`: attention
|
|
32
|
+
- `b`: bottom
|
|
33
|
+
- `c`: centre
|
|
34
|
+
- `e`: entropy
|
|
35
|
+
- `l`: left
|
|
36
|
+
- `lb`: left bottom
|
|
37
|
+
- `lt`: left top
|
|
38
|
+
- `r`: right
|
|
39
|
+
- `rb`: right bottom
|
|
40
|
+
- `rt`: right top
|
|
41
|
+
- `t`: top
|
|
42
|
+
|
|
43
|
+
### background
|
|
44
|
+
- `t`: transparent
|
|
45
|
+
- `FFFFF`: white (or other hex color)
|
|
46
|
+
|
|
47
|
+
### trim
|
|
48
|
+
- `nt`: not trim
|
|
49
|
+
- `number`: number value
|
|
50
|
+
|
|
51
|
+
### toFormat
|
|
52
|
+
- `webp | png | avif | or other`
|
|
53
|
+
|
|
54
|
+
## Help
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Usage:
|
|
58
|
+
uxf-resizer
|
|
7
59
|
|
|
8
60
|
Environment variables:
|
|
9
61
|
UXF_RESIZER_SOURCE_PATH - required
|
package/bin/uxf-resizer.js
CHANGED
|
@@ -97,13 +97,13 @@ var uxfResizer = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
97
97
|
sourcePath_1 = process_1.env.UXF_RESIZER_SOURCE_PATH;
|
|
98
98
|
if (!sourcePath_1) {
|
|
99
99
|
// eslint-disable-next-line no-console
|
|
100
|
-
console.
|
|
100
|
+
console.error("Source directory must be set. Use environment variable UXF_RESIZER_SOURCE_PATH.");
|
|
101
101
|
return [2 /*return*/, 1];
|
|
102
102
|
}
|
|
103
103
|
generatePath_1 = process_1.env.UXF_RESIZER_GENERATE_PATH;
|
|
104
104
|
if (!generatePath_1) {
|
|
105
105
|
// eslint-disable-next-line no-console
|
|
106
|
-
console.
|
|
106
|
+
console.error("Generated directory must be set. Use environment variable UXF_RESIZER_GENERATED_PATH.");
|
|
107
107
|
return [2 /*return*/, 1];
|
|
108
108
|
}
|
|
109
109
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
@@ -126,7 +126,7 @@ var uxfResizer = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
126
126
|
console.log("\nImage resizer app listening on port 3000");
|
|
127
127
|
if (process.env.NODE_ENV !== "production") {
|
|
128
128
|
// eslint-disable-next-line no-console
|
|
129
|
-
console.log("Example image: http://localhost:3000/generated/namespace/
|
|
129
|
+
console.log("Example image: http://localhost:3000/generated/namespace/a/b/ab7dea3a-ba56-4fa0-a407-d9c4a236d153_300_500_cv_c_t_nt_png.png");
|
|
130
130
|
}
|
|
131
131
|
app_1.on("close", function () {
|
|
132
132
|
listenedApp_1.close();
|
package/index.js
CHANGED
|
@@ -87,7 +87,7 @@ var POSITION_OPTIONS = {
|
|
|
87
87
|
var isTrim = function (value) { return value !== "nt"; };
|
|
88
88
|
var getTrimValue = function (value) { return (isTrim(value) ? Number(value) : 0); };
|
|
89
89
|
var createApp = function (sourcePath, generatePath, sourceFolderDepth, generatedFolderDepth, filenameRegexp, disableNamespace) {
|
|
90
|
-
if (filenameRegexp === void 0) { filenameRegexp = ":originalFilename([a-
|
|
90
|
+
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
91
|
var parseFilename = path_to_regexp_1.match(filenameRegexp, { decode: decodeURIComponent });
|
|
92
92
|
var generatedPxArray = Array.from({ length: generatedFolderDepth }, function (_, i) { return ":p" + (i + 1); });
|
|
93
93
|
var sourcePxArray = Array.from({ length: sourceFolderDepth }, function (_, i) { return ":p" + (i + 1); });
|
|
@@ -107,7 +107,8 @@ var createApp = function (sourcePath, generatePath, sourceFolderDepth, generated
|
|
|
107
107
|
_a = req.params, filename = _a.filename, namespace = _a.namespace;
|
|
108
108
|
parsedFilename = parseFilename(filename);
|
|
109
109
|
if (!parsedFilename) {
|
|
110
|
-
|
|
110
|
+
process.stdout.write("Filename '" + filename + "' not found.");
|
|
111
|
+
return [2 /*return*/, res.sendStatus(404)];
|
|
111
112
|
}
|
|
112
113
|
_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;
|
|
113
114
|
generatedPxDirectories = generatedPxArray.map(function (_, index) { return originalFilename.charAt(index); });
|