diff --git a/package-lock.json b/package-lock.json index 2155d04..0cd12ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1374,7 +1374,6 @@ "version": "4.0.17", "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-4.0.17.tgz", "integrity": "sha512-K5dX3k3i7iVxFMJ+IYwJRljewukJCc2zgj6+88R18/8SajVAq7ITOl3/FTbmEPFCJv5rl/LQ9FtcMynWlwSlzQ==", - "dev": true, "requires": { "@pushrocks/smartdelay": "^2.0.10", "@pushrocks/smartmatch": "^1.0.7", @@ -1416,7 +1415,6 @@ "version": "2.0.10", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.10.tgz", "integrity": "sha512-JOFpEfYiKnqcQYoUrL/jDyBDZUmlgJNm5U30MQQ3f+yci+rlFnMY5VvBBEYn5WgoX0ilwU+E15mtpDWhXcmhzg==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^3.0.6" } @@ -1425,7 +1423,6 @@ "version": "4.0.16", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartenv/-/smartenv-4.0.16.tgz", "integrity": "sha512-NwYMONDc/NjY6BGvzZzLMteF83kPQTF9BCGfqWbktUUruEtdqL+nGw6ecoLFi2b5u7XPb8jK1TKIcSvpNJ7SyA==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^3.0.6", "@types/node": "^14.11.2" @@ -1750,7 +1747,6 @@ "version": "1.0.7", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmatch/-/smartmatch-1.0.7.tgz", "integrity": "sha512-D+lK5HIKO4Kj1Jm/ycKvy1VzDJ3V6ucHqmf5DMBFdm18BrMj2Zb6M7wN8HUKtkfHvOI7ig85JMuANSEyO7kAPg==", - "dev": true, "requires": { "matcher": "^3.0.0" } @@ -1881,8 +1877,7 @@ "@pushrocks/smartpromise": { "version": "3.1.3", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.1.3.tgz", - "integrity": "sha512-KENdm++8uuzxDz1cbUbXtz6InfReP28TYC5zxRgRtwsXh7ZWUkSA+/82IbO97PcSCAfIpg7dwj77G6KGSsTKEQ==", - "dev": true + "integrity": "sha512-KENdm++8uuzxDz1cbUbXtz6InfReP28TYC5zxRgRtwsXh7ZWUkSA+/82IbO97PcSCAfIpg7dwj77G6KGSsTKEQ==" }, "@pushrocks/smartpuppeteer": { "version": "1.0.15", @@ -1911,7 +1906,6 @@ "version": "2.0.19", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrx/-/smartrx-2.0.19.tgz", "integrity": "sha512-xKuN2qKpewq4LLwQfGRv6+hG+gFjzoKB6uij3M0NpaPcj/BbO3afnbOv+sczGThf/goMxTTKdQRPXYOp8Rt+Cw==", - "dev": true, "requires": { "@pushrocks/lik": "^4.0.17", "@pushrocks/smartpromise": "^3.0.6", @@ -1949,7 +1943,6 @@ "version": "3.0.37", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.37.tgz", "integrity": "sha512-QhucXSSB8vdQkqVzKP/aX23DwZwXG3aUvF2MJ1EruvLcQypK2xFsCoaToXN5j//jG8EBAI0ybXpGzFdx38XqIQ==", - "dev": true, "requires": { "@pushrocks/lik": "^4.0.17", "@pushrocks/smartdelay": "^2.0.10", @@ -1983,7 +1976,6 @@ "version": "3.2.9", "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.2.9.tgz", "integrity": "sha512-vtmYL/l7BZvAzySh7cYnnTG6CFMp5zYtowJuMAmqUjhIaQaWW1Tvbrpjp7lVwRXj2JlL/i69KcJ6RVdLItK+rA==", - "dev": true, "requires": { "@pushrocks/smartdelay": "^2.0.9", "@pushrocks/smartenv": "^4.0.10", @@ -2090,6 +2082,22 @@ "defer-to-connect": "^1.0.1" } }, + "@tsclass/tsclass": { + "version": "3.0.29", + "resolved": "https://verdaccio.lossless.one/@tsclass%2ftsclass/-/tsclass-3.0.29.tgz", + "integrity": "sha512-LmFE1efF6gBP0CiAW7MUZKo35Z7DKuLaf1Fp5lqrNC6TKAeoayDi4W1CwPktex9GhyxgLds5Ef0stJ7rEjTFrg==", + "requires": { + "@pushrocks/tapbundle": "^3.2.9", + "type-fest": "^0.16.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://verdaccio.lossless.one/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + } + } + }, "@types/body-parser": { "version": "1.19.0", "resolved": "https://verdaccio.lossless.one/@types%2fbody-parser/-/body-parser-1.19.0.tgz", @@ -2109,14 +2117,12 @@ "@types/chai": { "version": "4.2.14", "resolved": "https://verdaccio.lossless.one/@types%2fchai/-/chai-4.2.14.tgz", - "integrity": "sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ==", - "dev": true + "integrity": "sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ==" }, "@types/chai-as-promised": { "version": "7.1.3", "resolved": "https://verdaccio.lossless.one/@types%2fchai-as-promised/-/chai-as-promised-7.1.3.tgz", "integrity": "sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg==", - "dev": true, "requires": { "@types/chai": "*" } @@ -2125,7 +2131,6 @@ "version": "1.4.2", "resolved": "https://verdaccio.lossless.one/@types%2fchai-string/-/chai-string-1.4.2.tgz", "integrity": "sha512-ld/1hV5qcPRGuwlPdvRfvM3Ka/iofOk2pH4VkasK4b1JJP1LjNmWWn0LsISf6RRzyhVOvs93rb9tM09e+UuF8Q==", - "dev": true, "requires": { "@types/chai": "*" } @@ -2276,14 +2281,12 @@ "@types/minimatch": { "version": "3.0.3", "resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "14.14.2", - "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-14.14.2.tgz", - "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==", - "dev": true + "version": "14.14.6", + "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-14.14.6.tgz", + "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==" }, "@types/parcel-bundler": { "version": "1.12.1", @@ -2665,8 +2668,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://verdaccio.lossless.one/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, "assign-symbols": { "version": "1.0.0", @@ -3322,7 +3324,6 @@ "version": "4.2.0", "resolved": "https://verdaccio.lossless.one/chai/-/chai-4.2.0.tgz", "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", @@ -3336,7 +3337,6 @@ "version": "7.1.1", "resolved": "https://verdaccio.lossless.one/chai-as-promised/-/chai-as-promised-7.1.1.tgz", "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, "requires": { "check-error": "^1.0.2" } @@ -3344,8 +3344,7 @@ "chai-string": { "version": "1.5.0", "resolved": "https://verdaccio.lossless.one/chai-string/-/chai-string-1.5.0.tgz", - "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", - "dev": true + "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==" }, "chalk": { "version": "2.4.2", @@ -3393,8 +3392,7 @@ "check-error": { "version": "1.0.2", "resolved": "https://verdaccio.lossless.one/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" }, "chokidar": { "version": "2.1.8", @@ -3833,8 +3831,7 @@ "croner": { "version": "1.1.23", "resolved": "https://verdaccio.lossless.one/croner/-/croner-1.1.23.tgz", - "integrity": "sha512-VsSyKBVtshU8qd2yPEWsBv5xxTLbRUuq6DX5bgUb4TTn/H6hmFGtfJtr0NKswu1UEsZZ6uhYc0kSOAvPlicQUA==", - "dev": true + "integrity": "sha512-VsSyKBVtshU8qd2yPEWsBv5xxTLbRUuq6DX5bgUb4TTn/H6hmFGtfJtr0NKswu1UEsZZ6uhYc0kSOAvPlicQUA==" }, "cross-spawn": { "version": "6.0.5", @@ -4189,8 +4186,7 @@ "dayjs": { "version": "1.9.4", "resolved": "https://verdaccio.lossless.one/dayjs/-/dayjs-1.9.4.tgz", - "integrity": "sha512-ABSF3alrldf7nM9sQ2U+Ln67NRwmzlLOqG7kK03kck0mw3wlSSEKv/XhKGGxUjQcS57QeiCyNdrFgtj9nWlrng==", - "dev": true + "integrity": "sha512-ABSF3alrldf7nM9sQ2U+Ln67NRwmzlLOqG7kK03kck0mw3wlSSEKv/XhKGGxUjQcS57QeiCyNdrFgtj9nWlrng==" }, "deasync": { "version": "0.1.20", @@ -4236,7 +4232,6 @@ "version": "3.0.1", "resolved": "https://verdaccio.lossless.one/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, "requires": { "type-detect": "^4.0.0" } @@ -4295,7 +4290,6 @@ "version": "1.1.3", "resolved": "https://verdaccio.lossless.one/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -4698,8 +4692,7 @@ "escape-string-regexp": { "version": "4.0.0", "resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "escodegen": { "version": "1.9.1", @@ -5913,8 +5906,7 @@ "get-func-name": { "version": "2.0.0", "resolved": "https://verdaccio.lossless.one/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" }, "get-port": { "version": "3.2.0", @@ -6649,7 +6641,6 @@ "version": "1.3.0", "resolved": "https://verdaccio.lossless.one/is-nan/-/is-nan-1.3.0.tgz", "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", - "dev": true, "requires": { "define-properties": "^1.1.3" } @@ -7207,7 +7198,6 @@ "version": "3.0.0", "resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz", "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, "requires": { "escape-string-regexp": "^4.0.0" } @@ -7671,8 +7661,7 @@ "object-keys": { "version": "1.1.1", "resolved": "https://verdaccio.lossless.one/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -8076,8 +8065,7 @@ "pathval": { "version": "1.1.0", "resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" }, "pbkdf2": { "version": "3.1.1", @@ -9425,7 +9413,6 @@ "version": "6.6.3", "resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.6.3.tgz", "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, "requires": { "tslib": "^1.9.0" } @@ -9664,7 +9651,6 @@ "version": "2.0.1", "resolved": "https://verdaccio.lossless.one/smartchai/-/smartchai-2.0.1.tgz", "integrity": "sha512-9M+R56OhAHXScxgr2vzQqxGx0XMS0QXriNZuP7hjlbVbo2FUT+l60iEzbwPt9Ga+5u2cEEjSSoZEQVqlROaddA==", - "dev": true, "requires": { "@types/chai": "^4.1.2", "@types/chai-as-promised": "^7.1.0", @@ -10238,8 +10224,7 @@ "symbol-tree": { "version": "3.2.4", "resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "systeminformation": { "version": "4.27.10", @@ -10404,8 +10389,7 @@ "tslib": { "version": "1.14.1", "resolved": "https://verdaccio.lossless.one/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tslint": { "version": "6.1.3", @@ -10484,8 +10468,7 @@ "type-detect": { "version": "4.0.8", "resolved": "https://verdaccio.lossless.one/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "type-fest": { "version": "0.8.1", diff --git a/package.json b/package.json index bdf1803..a2c7ff9 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,12 @@ "@gitzone/tsbundle": "^1.0.78", "@gitzone/tstest": "^1.0.44", "@pushrocks/tapbundle": "^3.2.9", - "@types/node": "^14.11.2", + "@types/node": "^14.14.6", "tslint": "^6.1.3", "tslint-config-prettier": "^1.15.0" }, "dependencies": { + "@tsclass/tsclass": "^3.0.29", "feed": "^4.2.1", "rss-parser": "^3.9.0" }, diff --git a/ts/index.ts b/ts/index.ts index 0f9e519..9a5b2e5 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -7,12 +7,38 @@ export class Smartfeed { return feedVersion; } + /** + * creates a feed from a standardized article object (@tsclass/tsclass).content.IArticle + */ + public async createFeedFromArticleArray(optionsArg: IFeedOptions, articleArray: plugins.tsclass.content.IArticle[]): Promise { + const feed = this.createFeed(optionsArg); + for (const article of articleArray) { + feed.addItem({ + authorName: `${article.author.firstName} ${article.author.surName}`, + timestamp: article.timestamp, + imageUrl: article.featuredImageUrl, + title: article.title, + url: article.url + }); + } + const feedXmlString = feed.exportRssFeedString(); + return feedXmlString; + } + + /** + * allows the parsing of a rss feed string + * @param rssFeedString + */ public async parseFeedFromString(rssFeedString: string) { const parser = new plugins.rssParser(); const resultingFeed = await parser.parseString(rssFeedString); return resultingFeed; } + /** + * allows the parsing of a feed from urls + * @param urlArg + */ public async parseFeedFromUrl(urlArg: string) { const parser = new plugins.rssParser(); const resultingFeed = await parser.parseURL(urlArg); diff --git a/ts/smartfeed.plugins.ts b/ts/smartfeed.plugins.ts index 12b8a8a..4e96fba 100644 --- a/ts/smartfeed.plugins.ts +++ b/ts/smartfeed.plugins.ts @@ -1,3 +1,10 @@ +// tsclass scope +import * as tsclass from '@tsclass/tsclass'; + +export { + tsclass +}; + // third party scope import rssParser from 'rss-parser'; import * as feed from 'feed';