7 Commits

Author SHA1 Message Date
f2e96640fa 2.0.0 2022-03-25 00:15:10 +01:00
72cd9f1a00 1.0.15 2022-03-25 00:14:35 +01:00
2e9394c330 fix(core): update 2022-03-25 00:14:34 +01:00
f8241b49fb 1.0.14 2021-01-03 14:28:29 +00:00
7adc7b9fb1 fix(core): update 2021-01-03 14:28:29 +00:00
aabb8265cd 1.0.13 2021-01-03 02:48:45 +00:00
b8befa85fa fix(core): update 2021-01-03 02:48:45 +00:00
10 changed files with 14929 additions and 7692 deletions

22510
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,11 @@
{ {
"name": "@pushrocks/smartsitemap", "name": "@pushrocks/smartsitemap",
"version": "1.0.12", "version": "2.0.0",
"private": false, "private": false,
"description": "a sitemap module", "description": "a sitemap module",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
"type": "module",
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
@ -12,21 +13,20 @@
"build": "(tsbuild --web)" "build": "(tsbuild --web)"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.25", "@gitzone/tsbuild": "^2.1.61",
"@gitzone/tsbundle": "^1.0.78", "@gitzone/tsbundle": "^1.0.101",
"@gitzone/tstest": "^1.0.44", "@gitzone/tstest": "^1.0.69",
"@pushrocks/tapbundle": "^3.2.9", "@pushrocks/smartenv": "^5.0.0",
"@types/node": "^14.14.5", "@pushrocks/tapbundle": "^5.0.3",
"tslint": "^6.1.3", "@types/node": "^17.0.23"
"tslint-config-prettier": "^1.15.0"
}, },
"dependencies": { "dependencies": {
"@pushrocks/smartcache": "^1.0.13", "@pushrocks/smartcache": "^1.0.13",
"@pushrocks/smartfeed": "^1.0.5", "@pushrocks/smartfeed": "^1.0.11",
"@pushrocks/smartxml": "^1.0.6", "@pushrocks/smartxml": "^1.0.6",
"@pushrocks/smartyaml": "^2.0.5", "@pushrocks/smartyaml": "^2.0.5",
"@pushrocks/webrequest": "^2.0.13", "@pushrocks/webrequest": "^3.0.3",
"@tsclass/tsclass": "^3.0.25" "@tsclass/tsclass": "^3.0.48"
}, },
"browserslist": [ "browserslist": [
"last 1 chrome versions" "last 1 chrome versions"

View File

@ -1,21 +1,21 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@pushrocks/tapbundle';
import * as smartsitemap from '../ts/index'; import * as smartsitemap from '../ts/index.js';
let testSmartsitemap: smartsitemap.SmartSitemap; let testSmartsitemap: smartsitemap.SmartSitemap;
tap.test('should create an instance of Smartsitemap', async () => { tap.test('should create an instance of Smartsitemap', async () => {
testSmartsitemap = new smartsitemap.SmartSitemap(); testSmartsitemap = new smartsitemap.SmartSitemap();
expect(testSmartsitemap).to.be.instanceOf(smartsitemap.SmartSitemap); expect(testSmartsitemap).toBeInstanceOf(smartsitemap.SmartSitemap);
}); });
tap.test('should create a sitemap from feed', async () => { tap.test('should create a sitemap from feed', async () => {
const sitemapString = await testSmartsitemap.createSitemapNewsFromFeedUrl('https://www.theverge.com/rss/index.xml'); const sitemapString = await testSmartsitemap.createSitemapNewsFromFeedUrl('https://central.eu/feed');
console.log(sitemapString); console.log(sitemapString);
}); });
tap.test('should parse a sitemap', async () => { tap.test('should parse a sitemap', async () => {
const result = await testSmartsitemap.parseSitemapUrl('https://www.theverge.com/sitemaps'); const result = await testSmartsitemap.parseSitemapUrl('https://central.eu/sitemap-news');
console.log(result.sitemapindex.sitemap); console.log(result.urlset.url);
}) })
tap.start(); tap.start();

View File

@ -1,3 +1,3 @@
export * from './smartsitemap.classes.smartsitemap'; export * from './smartsitemap.classes.smartsitemap.js';
export * from './smartsitemap.classes.sitemapnews'; export * from './smartsitemap.classes.sitemapnews.js';
export * from './smartsitemap.classes.sitemapwebsite'; export * from './smartsitemap.classes.sitemapwebsite.js';

View File

@ -14,4 +14,29 @@ export interface IRssItem {
categories?: string[]; categories?: string[];
contentSnippet?: string; contentSnippet?: string;
enclosure?: any; enclosure?: any;
} }
export interface IParsedSiteMap {
urlset: {
url:
| {
loc: string;
lastmod: string;
changefreq: string;
}
| {
loc: string;
lastmod: string;
changefreq: string;
}[]
| {
loc: string;
'news:news': {
'news:publication': [];
'news:keywords': string;
'news:publication_date': string;
'news:title': string;
};
}[];
};
}

View File

@ -1,5 +1,5 @@
import * as plugins from './smartsitemap.plugins'; import * as plugins from './smartsitemap.plugins.js';
import * as interfaces from './interfaces'; import * as interfaces from './interfaces/index.js';
export class SitemapNews { export class SitemapNews {
public rssItems: interfaces.IRssItem[] = []; public rssItems: interfaces.IRssItem[] = [];
@ -23,7 +23,8 @@ export class SitemapNews {
return { return {
title: articleArg.title, title: articleArg.title,
content: articleArg.content, content: articleArg.content,
isoDate: new Date(/* TODO: put article timestamp here */).toISOString() isoDate: new Date(/* TODO: put article timestamp here */).toISOString(),
link: articleArg.url
}; };
}); });
@ -44,6 +45,7 @@ export class SitemapNews {
}; };
}[] = []; }[] = [];
for (const itemArg of this.rssItems) { for (const itemArg of this.rssItems) {
console.log(itemArg);
urls.push({ urls.push({
loc: itemArg.link, loc: itemArg.link,
'news:news': { 'news:news': {

View File

@ -1,4 +1,4 @@
import * as plugins from './smartsitemap.plugins'; import * as plugins from './smartsitemap.plugins.js';
export type TUpdateFrequency = 'never' | 'daily' | 'weekly' | 'monthly' | 'yearly'; export type TUpdateFrequency = 'never' | 'daily' | 'weekly' | 'monthly' | 'yearly';

View File

@ -1,7 +1,7 @@
import { SitemapNews } from './smartsitemap.classes.sitemapnews'; import { SitemapNews } from './smartsitemap.classes.sitemapnews.js';
import { IUrlInfo, SitemapWebsite } from './smartsitemap.classes.sitemapwebsite'; import { IUrlInfo, SitemapWebsite } from './smartsitemap.classes.sitemapwebsite.js';
import * as plugins from './smartsitemap.plugins'; import * as plugins from './smartsitemap.plugins.js';
import * as interfaces from './interfaces'; import * as interfaces from './interfaces/index.js';
export class SmartSitemap { export class SmartSitemap {
constructor() {} constructor() {}
@ -75,7 +75,7 @@ export class SmartSitemap {
/** /**
* parses a sitemap * parses a sitemap
*/ */
public async parseSitemap(sitemapXmlArg: string) { public async parseSitemap(sitemapXmlArg: string): Promise<interfaces.IParsedSiteMap> {
return (new plugins.smartxml.SmartXml()).parseXmlToObject(sitemapXmlArg); return (new plugins.smartxml.SmartXml()).parseXmlToObject(sitemapXmlArg);
} }
} }

9
tsconfig.json Normal file
View File

@ -0,0 +1,9 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "nodenext"
}
}

View File

@ -1,17 +0,0 @@
{
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}