summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/open-graph-scraper/dist/lib/media.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/open-graph-scraper/dist/lib/media.js')
-rw-r--r--includes/external/addressbook/node_modules/open-graph-scraper/dist/lib/media.js163
1 files changed, 163 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/open-graph-scraper/dist/lib/media.js b/includes/external/addressbook/node_modules/open-graph-scraper/dist/lib/media.js
new file mode 100644
index 0000000..c2dc885
--- /dev/null
+++ b/includes/external/addressbook/node_modules/open-graph-scraper/dist/lib/media.js
@@ -0,0 +1,163 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.mediaSetup = void 0;
+const fields_1 = require("./fields");
+const mediaMapperTwitterImage = (item) => ({
+ alt: item[3],
+ height: item[2],
+ url: item[0],
+ width: item[1],
+});
+const mediaMapperTwitterPlayer = (item) => ({
+ height: item[2],
+ stream: item[3],
+ url: item[0],
+ width: item[1],
+});
+const mediaMapperMusicSong = (item) => ({
+ disc: item[2],
+ track: item[1],
+ url: item[0],
+});
+const mediaMapper = (item) => ({
+ height: item[2],
+ type: item[3],
+ url: item[0],
+ width: item[1],
+});
+const mediaSorter = (a, b) => {
+ if (!(a.url && b.url)) {
+ return 0;
+ }
+ const aRes = a.url.match(/\.(\w{2,5})$/);
+ const aExt = (aRes && aRes[1].toLowerCase()) || null;
+ const bRes = b.url.match(/\.(\w{2,5})$/);
+ const bExt = (bRes && bRes[1].toLowerCase()) || null;
+ if (aExt === 'gif' && bExt !== 'gif') {
+ return -1;
+ }
+ if (aExt !== 'gif' && bExt === 'gif') {
+ return 1;
+ }
+ return Math.max(b.width, b.height) - Math.max(a.width, a.height);
+};
+const mediaSorterMusicSong = (a, b) => {
+ if (!(a.track && b.track)) {
+ return 0;
+ }
+ if (a.disc > b.disc) {
+ return 1;
+ }
+ if (a.disc < b.disc) {
+ return -1;
+ }
+ return a.track - b.track;
+};
+// lodash zip replacement
+const zip = (array, ...args) => {
+ if (array === undefined)
+ return [];
+ return array
+ .map((value, idx) => [value, ...args.map((arr) => arr[idx])]);
+};
+/**
+ * formats the multiple media values
+ *
+ * @param {object} ogObject - the current ogObject
+ * @param {object} options - options for ogs
+ * @return {object} object with ogs results with updated media values
+ *
+ */
+function mediaSetup(ogObject, options) {
+ // sets ogImage image/width/height/type to null if one these exists
+ if (ogObject.ogImage || ogObject.ogImageWidth || ogObject.ogImageHeight || ogObject.ogImageType) {
+ ogObject.ogImage = ogObject.ogImage ? ogObject.ogImage : [null];
+ ogObject.ogImageWidth = ogObject.ogImageWidth ? ogObject.ogImageWidth : [null];
+ ogObject.ogImageHeight = ogObject.ogImageHeight ? ogObject.ogImageHeight : [null];
+ ogObject.ogImageType = ogObject.ogImageType ? ogObject.ogImageType : [null];
+ }
+ // format images
+ const ogImages = zip(ogObject.ogImage, ogObject.ogImageWidth, ogObject.ogImageHeight, ogObject.ogImageType)
+ .map(mediaMapper)
+ .sort(mediaSorter);
+ // sets ogVideo video/width/height/type to null if one these exists
+ if (ogObject.ogVideo || ogObject.ogVideoWidth || ogObject.ogVideoHeight || ogObject.ogVideoType) {
+ ogObject.ogVideo = ogObject.ogVideo ? ogObject.ogVideo : [null];
+ ogObject.ogVideoWidth = ogObject.ogVideoWidth ? ogObject.ogVideoWidth : [null];
+ ogObject.ogVideoHeight = ogObject.ogVideoHeight ? ogObject.ogVideoHeight : [null];
+ ogObject.ogVideoType = ogObject.ogVideoType ? ogObject.ogVideoType : [null];
+ }
+ // format videos
+ const ogVideos = zip(ogObject.ogVideo, ogObject.ogVideoWidth, ogObject.ogVideoHeight, ogObject.ogVideoType)
+ .map(mediaMapper)
+ .sort(mediaSorter);
+ // sets twitter image image/width/height/type to null if one these exists
+ if (ogObject.twitterImageSrc
+ || ogObject.twitterImage
+ || ogObject.twitterImageWidth
+ || ogObject.twitterImageHeight
+ || ogObject.twitterImageAlt) {
+ ogObject.twitterImageSrc = ogObject.twitterImageSrc ? ogObject.twitterImageSrc : [null];
+ ogObject.twitterImage = ogObject.twitterImage ? ogObject.twitterImage : ogObject.twitterImageSrc; // deafult to twitterImageSrc
+ ogObject.twitterImageWidth = ogObject.twitterImageWidth ? ogObject.twitterImageWidth : [null];
+ ogObject.twitterImageHeight = ogObject.twitterImageHeight ? ogObject.twitterImageHeight : [null];
+ ogObject.twitterImageAlt = ogObject.twitterImageAlt ? ogObject.twitterImageAlt : [null];
+ }
+ // format twitter images
+ const twitterImages = zip(ogObject.twitterImage, ogObject.twitterImageWidth, ogObject.twitterImageHeight, ogObject.twitterImageAlt).map(mediaMapperTwitterImage).sort(mediaSorter);
+ // sets twitter player/width/height/stream to null if one these exists
+ if (ogObject.twitterPlayer
+ || ogObject.twitterPlayerWidth
+ || ogObject.twitterPlayerHeight
+ || ogObject.twitterPlayerStream) {
+ ogObject.twitterPlayer = ogObject.twitterPlayer ? ogObject.twitterPlayer : [null];
+ ogObject.twitterPlayerWidth = ogObject.twitterPlayerWidth ? ogObject.twitterPlayerWidth : [null];
+ ogObject.twitterPlayerHeight = ogObject.twitterPlayerHeight ? ogObject.twitterPlayerHeight : [null];
+ ogObject.twitterPlayerStream = ogObject.twitterPlayerStream ? ogObject.twitterPlayerStream : [null];
+ }
+ // format twitter player
+ const twitterPlayers = zip(ogObject.twitterPlayer, ogObject.twitterPlayerWidth, ogObject.twitterPlayerHeight, ogObject.twitterPlayerStream).map(mediaMapperTwitterPlayer)
+ .sort(mediaSorter);
+ // sets music song/songTrack/songDisc to null if one these exists
+ if (ogObject.musicSong || ogObject.musicSongTrack || ogObject.musicSongDisc) {
+ ogObject.musicSong = ogObject.musicSong ? ogObject.musicSong : [null];
+ ogObject.musicSongTrack = ogObject.musicSongTrack ? ogObject.musicSongTrack : [null];
+ ogObject.musicSongDisc = ogObject.musicSongDisc ? ogObject.musicSongDisc : [null];
+ }
+ // format music songs
+ const musicSongs = zip(ogObject.musicSong, ogObject.musicSongTrack, ogObject.musicSongDisc)
+ .map(mediaMapperMusicSong)
+ .sort(mediaSorterMusicSong);
+ // remove old values since everything will live under the main property
+ fields_1.default.filter((item) => (item.multiple && item.fieldName && item.fieldName.match('(ogImage|ogVideo|twitter|musicSong).*')))
+ .forEach((item) => {
+ delete ogObject[item.fieldName];
+ });
+ if (options.allMedia) {
+ if (ogImages.length)
+ ogObject.ogImage = ogImages;
+ if (ogVideos.length)
+ ogObject.ogVideo = ogVideos;
+ if (twitterImages.length)
+ ogObject.twitterImage = twitterImages;
+ if (twitterPlayers.length)
+ ogObject.twitterPlayer = twitterPlayers;
+ if (musicSongs.length)
+ ogObject.musicSong = musicSongs;
+ }
+ else {
+ if (ogImages.length)
+ [ogObject.ogImage] = ogImages;
+ if (ogVideos.length)
+ [ogObject.ogVideo] = ogVideos;
+ if (twitterImages.length)
+ [ogObject.twitterImage] = twitterImages;
+ if (twitterPlayers.length)
+ [ogObject.twitterPlayer] = twitterPlayers;
+ if (musicSongs.length)
+ [ogObject.musicSong] = musicSongs;
+ }
+ return ogObject;
+}
+exports.mediaSetup = mediaSetup;
+exports.default = mediaSetup;