diff --git a/build-avatars.js b/build-avatars.js
new file mode 100755
index 00000000..c0e91848
--- /dev/null
+++ b/build-avatars.js
@@ -0,0 +1,42 @@
+#!/bin/node
+
+const sharp = require('sharp')
+const path = require('path')
+
+const inputDir = './public/images/avatars/'
+const outputDir = './dist/server/avatars/'
+const backgrounds = [
+ '#ffffff',
+ '#000000',
+ '#ff0000',
+ '#00ff00',
+ '#0000ff',
+ '#808000',
+ '#ffff00',
+ '#008000',
+ '#008080',
+ '#00ffff',
+ '#000080',
+ '#800080',
+ '#ff00ff'
+]
+const count = 10
+
+for (let i = 1; i <= count; i++) {
+ const inputFile = path.join(inputDir, i + '.svg')
+
+ for (let j = 0; j < backgrounds.length; j++) {
+ const out = i + (count * j)
+ const background = backgrounds[j]
+ sharp(inputFile).flatten({background}).resize(120, 120).jpeg().toFile(path.join(outputDir, out.toString() + '.jpg'))
+ }
+}
+
+// for i in {1..10}; do
+// ./node_modules/sharp-cli/bin/cli.js -i ./public/images/avatars/$i.svg -o ./dist/server/avatars/$i.jpg -f jpg resize 120 120 -- flatten '#ffffff';
+// ./node_modules/sharp-cli/bin/cli.js -i ./public/images/avatars/$i.svg -o ./dist/server/avatars/$(( $i + 10 )).jpg -f jpg resize 120 120 -- flatten '#ff0000';
+// ./node_modules/sharp-cli/bin/cli.js -i ./public/images/avatars/$i.svg -o ./dist/server/avatars/$(( $i + 20 )).jpg -f jpg resize 120 120 -- flatten '#00ff00';
+// ./node_modules/sharp-cli/bin/cli.js -i ./public/images/avatars/$i.svg -o ./dist/server/avatars/$(( $i + 30 )).jpg -f jpg resize 120 120 -- flatten '#0000ff';
+// ./node_modules/sharp-cli/bin/cli.js -i ./public/images/avatars/$i.svg -o ./dist/server/avatars/$(( $i + 40 )).jpg -f jpg resize 120 120 -- flatten '#808000';
+// #bis=$(( $i + 30 ));
+// done
diff --git a/package-lock.json b/package-lock.json
index 03671ce0..f18df4dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1388,16 +1388,6 @@
"pako": "~1.0.5"
}
},
- "bubble-stream-error": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz",
- "integrity": "sha1-fa2X8XEo2jlhab83raSssZU2HjA=",
- "dev": true,
- "requires": {
- "once": "^1.3.3",
- "sliced": "^1.0.1"
- }
- },
"buffer": {
"version": "4.9.2",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
@@ -2889,21 +2879,6 @@
"safe-buffer": "^5.1.1"
}
},
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
"execall": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz",
@@ -3421,15 +3396,6 @@
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true
},
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0"
- }
- },
"fs-write-stream-atomic": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
@@ -3543,15 +3509,6 @@
"integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
"dev": true
},
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
"get-symbol-description": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
@@ -4059,12 +4016,6 @@
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true
},
- "invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
- "dev": true
- },
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -4185,12 +4136,6 @@
}
}
},
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
- },
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -4276,12 +4221,6 @@
"integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
"dev": true
},
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
@@ -4425,15 +4364,6 @@
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
"dev": true
},
- "lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
- "dev": true,
- "requires": {
- "invert-kv": "^2.0.0"
- }
- },
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -4559,15 +4489,6 @@
}
}
},
- "map-age-cleaner": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
- "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
- "dev": true,
- "requires": {
- "p-defer": "^1.0.0"
- }
- },
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -4617,17 +4538,6 @@
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
- "mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
- "dev": true,
- "requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
- }
- },
"memory-fs": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
@@ -4764,12 +4674,6 @@
"mime-db": "1.47.0"
}
},
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
"mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
@@ -4819,25 +4723,6 @@
"kind-of": "^6.0.3"
}
},
- "minipass": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
- "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- }
- },
"mississippi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
@@ -4922,16 +4807,6 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
- "multiyargs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/multiyargs/-/multiyargs-1.0.0.tgz",
- "integrity": "sha1-AG4uQJ62wVUiDR61Mj3Qm/00uCg=",
- "dev": true,
- "requires": {
- "debug": "2.6.x",
- "promise-do-whilst": "1.0.x"
- }
- },
"nanoid": {
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
@@ -4982,18 +4857,29 @@
"dev": true
},
"node-abi": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz",
- "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.5.0.tgz",
+ "integrity": "sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw==",
"dev": true,
"requires": {
- "semver": "^5.4.1"
+ "semver": "^7.3.5"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
}
},
"node-addon-api": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz",
+ "integrity": "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q==",
"dev": true
},
"node-libs-browser": {
@@ -5035,12 +4921,6 @@
}
}
},
- "noop-logger": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
- "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=",
- "dev": true
- },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -5137,15 +5017,6 @@
}
}
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -5386,40 +5257,11 @@
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
- "os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
- "dev": true,
- "requires": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
- }
- },
"p-cancelable": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
"integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="
},
- "p-defer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
- "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
- "dev": true
- },
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -5648,9 +5490,9 @@
"dev": true
},
"prebuild-install": {
- "version": "5.3.6",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz",
- "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.0.tgz",
+ "integrity": "sha512-IvSenf33K7JcgddNz2D5w521EgO+4aMMjFt73Uk9FRzQ7P+QZPKrp7qPsDydsSwjGt3T5xRNnM1bj1zMTD5fTA==",
"dev": true,
"requires": {
"detect-libc": "^1.0.3",
@@ -5659,43 +5501,13 @@
"minimist": "^1.2.3",
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
- "node-abi": "^2.7.0",
- "noop-logger": "^0.1.1",
+ "node-abi": "^3.3.0",
"npmlog": "^4.0.1",
"pump": "^3.0.0",
"rc": "^1.2.7",
- "simple-get": "^3.0.3",
+ "simple-get": "^4.0.0",
"tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0",
- "which-pm-runs": "^1.0.0"
- },
- "dependencies": {
- "decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
- "dev": true,
- "requires": {
- "mimic-response": "^2.0.0"
- }
- },
- "mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
- "dev": true
- },
- "simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
- "dev": true,
- "requires": {
- "decompress-response": "^4.2.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- }
+ "tunnel-agent": "^0.6.0"
}
},
"prelude-ls": {
@@ -5722,12 +5534,6 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
- "promise-do-whilst": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-do-whilst/-/promise-do-whilst-1.0.1.tgz",
- "integrity": "sha1-bdrUQAnzbalUnb3M+tmaho3/ns8=",
- "dev": true
- },
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@@ -6177,12 +5983,6 @@
"aproba": "^1.1.1"
}
},
- "rw-stream": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/rw-stream/-/rw-stream-0.3.3.tgz",
- "integrity": "sha512-bxfGiEmsCS7/dbJyVbh7kZw7JIftWCCVsFdJJeDmLxnH73sZ8gAeH87FuDIqxW8lDFIJc6lPUmgHZROy8N0chQ==",
- "dev": true
- },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -6289,32 +6089,46 @@
}
},
"sharp": {
- "version": "0.25.4",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.25.4.tgz",
- "integrity": "sha512-umSzJJ1oBwIOfwFFt/fJ7JgCva9FvrEU2cbbm7u/3hSDZhXvkME8WE5qpaJqLIe2Har5msF5UG4CzYlEg5o3BQ==",
+ "version": "0.29.3",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.29.3.tgz",
+ "integrity": "sha512-fKWUuOw77E4nhpyzCCJR1ayrttHoFHBT2U/kR/qEMRhvPEcluG4BKj324+SCO1e84+knXHwhJ1HHJGnUt4ElGA==",
"dev": true,
"requires": {
- "color": "^3.1.2",
+ "color": "^4.0.1",
"detect-libc": "^1.0.3",
- "node-addon-api": "^3.0.0",
- "npmlog": "^4.1.2",
- "prebuild-install": "^5.3.4",
- "semver": "^7.3.2",
+ "node-addon-api": "^4.2.0",
+ "prebuild-install": "^7.0.0",
+ "semver": "^7.3.5",
"simple-get": "^4.0.0",
- "tar": "^6.0.2",
+ "tar-fs": "^2.1.1",
"tunnel-agent": "^0.6.0"
},
"dependencies": {
"color": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
- "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.1.0.tgz",
+ "integrity": "sha512-o2rkkxyLGgYoeUy1OodXpbPAQNmlNBrirQ8ODO8QutzDiDMNdezSOZLNnusQ6pUpCQJUsaJIo9DZJKqa2HgH7A==",
"dev": true,
"requires": {
- "color-convert": "^1.9.3",
- "color-string": "^1.6.0"
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
}
},
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"color-string": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz",
@@ -6336,197 +6150,6 @@
}
}
},
- "sharp-cli": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/sharp-cli/-/sharp-cli-1.15.0.tgz",
- "integrity": "sha512-siT4+HIIw4z6nkiM62bH4wT1pCPAOZolDII9C9U4WpYsGBFteseGk60ZmC7tiTBtpPWDXVjtHaNs4tCJKbm0SQ==",
- "dev": true,
- "requires": {
- "bubble-stream-error": "1.0.x",
- "glob": "^7.1.6",
- "is-directory": "0.3.x",
- "multiyargs": "1.0.x",
- "rw-stream": "^0.3.3",
- "sharp": "0.25.4",
- "yargs": "12.0.x"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- }
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "yargs": {
- "version": "12.0.5",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
- "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
- "dev": true,
- "requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^11.1.1"
- }
- },
- "yargs-parser": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
- "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -6642,12 +6265,6 @@
}
}
},
- "sliced": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
- "dev": true
- },
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -7013,12 +6630,6 @@
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
"strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -7307,34 +6918,6 @@
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
"dev": true
},
- "tar": {
- "version": "6.1.11",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
- "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
- "dev": true,
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- }
- }
- },
"tar-fs": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -8351,12 +7934,6 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
- "which-pm-runs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
- "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=",
- "dev": true
- },
"wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
diff --git a/package.json b/package.json
index a361e230..c011a491 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"eslint-plugin-standard": "^5.0.0",
"npm-run-all": "^4.1.5",
"sass": "^1.43.4",
- "sharp-cli": "^1.15.0",
+ "sharp": "^0.29.3",
"stylelint": "^14.0.1",
"stylelint-config-recommended-scss": "^5.0.1",
"stylelint-config-standard-scss": "^2.0.1",
@@ -85,7 +85,7 @@
"prepare": "npm run clean && npm run build",
"build:converse": "bash conversejs/build-conversejs.sh",
"build:images": "mkdir -p dist/client/images && npx svgo -f public/images/ -o dist/client/images/",
- "build:avatars": "mkdir -p dist/server/avatars && ./node_modules/sharp-cli/bin/cli.js -i ./public/images/avatars/**/*.svg -o ./dist/server/avatars/ -f png resize 120 120",
+ "build:avatars": "mkdir -p dist/server/avatars && ./build-avatars.js",
"build:webpack": "webpack --mode=production",
"build:server": "npx tsc --build server/tsconfig.json",
"build:serverconverse": "mkdir -p dist/server/conversejs && cp conversejs/index.html dist/server/conversejs/",
diff --git a/prosody-modules/mod_random_vcard_peertubelivechat/mod_random_vcard_peertubelivechat.lua b/prosody-modules/mod_random_vcard_peertubelivechat/mod_random_vcard_peertubelivechat.lua
index a0006c29..1355ff8f 100644
--- a/prosody-modules/mod_random_vcard_peertubelivechat/mod_random_vcard_peertubelivechat.lua
+++ b/prosody-modules/mod_random_vcard_peertubelivechat/mod_random_vcard_peertubelivechat.lua
@@ -10,15 +10,15 @@ local avatars = {};
local function load_avatar(filename)
local file = assert(io.open(path.join(avatars_dir, filename), "r"));
local result = {
- type = 'image/png',
+ type = 'image/jpg',
content = b64(file:read("*a"))
};
file:close();
return result;
end
-local AVATARS_COUNT = 40;
+local AVATARS_COUNT = 130;
for i = 1, AVATARS_COUNT do
- avatars[i] = load_avatar(i .. '.png');
+ avatars[i] = load_avatar(i .. '.jpg');
end
module:hook("iq-get/bare/vcard-temp:vCard", function (event)
diff --git a/public/images/avatars/11.svg b/public/images/avatars/11.svg
deleted file mode 100644
index ffea3973..00000000
--- a/public/images/avatars/11.svg
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
diff --git a/public/images/avatars/12.svg b/public/images/avatars/12.svg
deleted file mode 100644
index f0324a09..00000000
--- a/public/images/avatars/12.svg
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
diff --git a/public/images/avatars/13.svg b/public/images/avatars/13.svg
deleted file mode 100644
index 9fcbe688..00000000
--- a/public/images/avatars/13.svg
+++ /dev/null
@@ -1,319 +0,0 @@
-
-
diff --git a/public/images/avatars/14.svg b/public/images/avatars/14.svg
deleted file mode 100644
index 9802e33a..00000000
--- a/public/images/avatars/14.svg
+++ /dev/null
@@ -1,320 +0,0 @@
-
-
diff --git a/public/images/avatars/15.svg b/public/images/avatars/15.svg
deleted file mode 100644
index b3ec4ed1..00000000
--- a/public/images/avatars/15.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
diff --git a/public/images/avatars/16.svg b/public/images/avatars/16.svg
deleted file mode 100644
index 0796f8a6..00000000
--- a/public/images/avatars/16.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
diff --git a/public/images/avatars/17.svg b/public/images/avatars/17.svg
deleted file mode 100644
index d741450e..00000000
--- a/public/images/avatars/17.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
diff --git a/public/images/avatars/18.svg b/public/images/avatars/18.svg
deleted file mode 100644
index 062f8378..00000000
--- a/public/images/avatars/18.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
diff --git a/public/images/avatars/19.svg b/public/images/avatars/19.svg
deleted file mode 100644
index 7ed02979..00000000
--- a/public/images/avatars/19.svg
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
diff --git a/public/images/avatars/20.svg b/public/images/avatars/20.svg
deleted file mode 100644
index 4455b3e4..00000000
--- a/public/images/avatars/20.svg
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
diff --git a/public/images/avatars/21.svg b/public/images/avatars/21.svg
deleted file mode 100644
index 6e46a7bd..00000000
--- a/public/images/avatars/21.svg
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
diff --git a/public/images/avatars/22.svg b/public/images/avatars/22.svg
deleted file mode 100644
index fb179c71..00000000
--- a/public/images/avatars/22.svg
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
diff --git a/public/images/avatars/23.svg b/public/images/avatars/23.svg
deleted file mode 100644
index 27977e58..00000000
--- a/public/images/avatars/23.svg
+++ /dev/null
@@ -1,319 +0,0 @@
-
-
diff --git a/public/images/avatars/24.svg b/public/images/avatars/24.svg
deleted file mode 100644
index fc9b362e..00000000
--- a/public/images/avatars/24.svg
+++ /dev/null
@@ -1,320 +0,0 @@
-
-
diff --git a/public/images/avatars/25.svg b/public/images/avatars/25.svg
deleted file mode 100644
index d8a005ed..00000000
--- a/public/images/avatars/25.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
diff --git a/public/images/avatars/26.svg b/public/images/avatars/26.svg
deleted file mode 100644
index fa606020..00000000
--- a/public/images/avatars/26.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
diff --git a/public/images/avatars/27.svg b/public/images/avatars/27.svg
deleted file mode 100644
index f5301c89..00000000
--- a/public/images/avatars/27.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
diff --git a/public/images/avatars/28.svg b/public/images/avatars/28.svg
deleted file mode 100644
index 6a8f1e0b..00000000
--- a/public/images/avatars/28.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
diff --git a/public/images/avatars/29.svg b/public/images/avatars/29.svg
deleted file mode 100644
index 60b29f1e..00000000
--- a/public/images/avatars/29.svg
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
diff --git a/public/images/avatars/30.svg b/public/images/avatars/30.svg
deleted file mode 100644
index 7b2ccb45..00000000
--- a/public/images/avatars/30.svg
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
diff --git a/public/images/avatars/31.svg b/public/images/avatars/31.svg
deleted file mode 100644
index d52ae261..00000000
--- a/public/images/avatars/31.svg
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
diff --git a/public/images/avatars/32.svg b/public/images/avatars/32.svg
deleted file mode 100644
index b3c8bb5f..00000000
--- a/public/images/avatars/32.svg
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
diff --git a/public/images/avatars/33.svg b/public/images/avatars/33.svg
deleted file mode 100644
index 2730ccb2..00000000
--- a/public/images/avatars/33.svg
+++ /dev/null
@@ -1,319 +0,0 @@
-
-
diff --git a/public/images/avatars/34.svg b/public/images/avatars/34.svg
deleted file mode 100644
index d3317895..00000000
--- a/public/images/avatars/34.svg
+++ /dev/null
@@ -1,320 +0,0 @@
-
-
diff --git a/public/images/avatars/35.svg b/public/images/avatars/35.svg
deleted file mode 100644
index fea3d2b4..00000000
--- a/public/images/avatars/35.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
diff --git a/public/images/avatars/36.svg b/public/images/avatars/36.svg
deleted file mode 100644
index 990e75fc..00000000
--- a/public/images/avatars/36.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
diff --git a/public/images/avatars/37.svg b/public/images/avatars/37.svg
deleted file mode 100644
index 96377a1a..00000000
--- a/public/images/avatars/37.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
diff --git a/public/images/avatars/38.svg b/public/images/avatars/38.svg
deleted file mode 100644
index 7fc71cd1..00000000
--- a/public/images/avatars/38.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
diff --git a/public/images/avatars/39.svg b/public/images/avatars/39.svg
deleted file mode 100644
index 9f0e25e6..00000000
--- a/public/images/avatars/39.svg
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
diff --git a/public/images/avatars/40.svg b/public/images/avatars/40.svg
deleted file mode 100644
index b4070d51..00000000
--- a/public/images/avatars/40.svg
+++ /dev/null
@@ -1,340 +0,0 @@
-
-