feedsub 0.7.8 → 0.7.10
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 +2 -1
- package/dist/feedsub.d.ts +31 -33
- package/dist/feedsub.js +53 -42
- package/dist/feedsub.js.map +1 -1
- package/package.json +11 -8
package/README.md
CHANGED
|
@@ -4,7 +4,8 @@ FeedSub subscribes to a remote RSS/Atom/JSON feed and notifies you of any new it
|
|
|
4
4
|
|
|
5
5
|
It works by checking the feed every once in a while, comparing the date of the document via a conditional GET if supported. Otherwise it looks for a date tag in the feed. If it's the same as the last date, it stops downloading it and parsing the xml/json. If it's an updated document, then it looks through it top to bottom taking note of all the new items. Once it finds something it has already read, it stops downloading and parsing the document.
|
|
6
6
|
|
|
7
|
-
](https://www.npmjs.com/package/feedsub)
|
|
8
|
+
[](https://github.com/fent/node-feedsub/actions/workflows/nodejs.yml)
|
|
8
9
|
[](https://codecov.io/gh/fent/node-feedsub)
|
|
9
10
|
|
|
10
11
|
# Usage
|
package/dist/feedsub.d.ts
CHANGED
|
@@ -1,29 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FeedItem } from 'feedme';
|
|
3
|
-
import NewsEmitter from 'newsemitter';
|
|
1
|
+
import { type FeedItem } from 'feedme';
|
|
4
2
|
import miniget from 'miniget';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
emitOnStart?: boolean;
|
|
10
|
-
lastDate?: null | string;
|
|
11
|
-
history?: string[];
|
|
12
|
-
maxHistory?: number;
|
|
13
|
-
skipHours?: boolean;
|
|
14
|
-
hoursToSkip?: number[];
|
|
15
|
-
skipDays?: boolean;
|
|
16
|
-
daysToSkip?: string[];
|
|
17
|
-
requestOpts?: miniget.Options;
|
|
18
|
-
}
|
|
19
|
-
export declare type DefaultOptions = Required<Options>;
|
|
3
|
+
import NewsEmitter from 'newsemitter';
|
|
4
|
+
import { TypedEmitter } from 'tiny-typed-emitter';
|
|
5
|
+
type Options = FeedSub.Options;
|
|
6
|
+
type DefaultOptions = FeedSub.DefaultOptions;
|
|
20
7
|
interface FeedSubEvents {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
8
|
+
error: (err: Error) => void;
|
|
9
|
+
item: (item: FeedItem) => void;
|
|
10
|
+
items: (items: FeedItem[]) => void;
|
|
24
11
|
}
|
|
25
|
-
|
|
26
|
-
|
|
12
|
+
declare class FeedSub extends TypedEmitter<FeedSubEvents> {
|
|
13
|
+
static FeedSub: typeof FeedSub;
|
|
14
|
+
static default: typeof FeedSub;
|
|
27
15
|
feed: string;
|
|
28
16
|
options: DefaultOptions;
|
|
29
17
|
news: NewsEmitter;
|
|
@@ -31,17 +19,10 @@ export default class FeedSub extends TypedEmitter<FeedSubEvents> {
|
|
|
31
19
|
headers: Record<string, string>;
|
|
32
20
|
};
|
|
33
21
|
private _first;
|
|
34
|
-
private _intervalid
|
|
35
|
-
/**
|
|
36
|
-
* @constructor
|
|
37
|
-
* @param {string} feed
|
|
38
|
-
* @param {!Object} options
|
|
39
|
-
*/
|
|
22
|
+
private _intervalid?;
|
|
40
23
|
constructor(feed: string, options?: Options);
|
|
41
24
|
/**
|
|
42
25
|
* Start calling the read function on interval.
|
|
43
|
-
*
|
|
44
|
-
* @param {boolean} readOnStart
|
|
45
26
|
*/
|
|
46
27
|
start(readOnStart?: boolean): void;
|
|
47
28
|
/**
|
|
@@ -55,8 +36,25 @@ export default class FeedSub extends TypedEmitter<FeedSubEvents> {
|
|
|
55
36
|
*
|
|
56
37
|
* if callback is given, calls callback with all new items
|
|
57
38
|
* even when there are 0.
|
|
58
|
-
*
|
|
59
|
-
* @param {!Function(!Error, Array.<Object>)} callback
|
|
60
39
|
*/
|
|
61
40
|
read(callback?: (err: null | Error, items?: FeedItem[]) => void): void;
|
|
62
41
|
}
|
|
42
|
+
declare namespace FeedSub {
|
|
43
|
+
interface Options {
|
|
44
|
+
interval?: number;
|
|
45
|
+
forceInterval?: boolean;
|
|
46
|
+
autoStart?: boolean;
|
|
47
|
+
emitOnStart?: boolean;
|
|
48
|
+
lastDate?: null | string;
|
|
49
|
+
history?: string[];
|
|
50
|
+
maxHistory?: number;
|
|
51
|
+
skipHours?: boolean;
|
|
52
|
+
hoursToSkip?: number[];
|
|
53
|
+
skipDays?: boolean;
|
|
54
|
+
daysToSkip?: string[];
|
|
55
|
+
requestOpts?: miniget.Options;
|
|
56
|
+
}
|
|
57
|
+
type DefaultOptions = Required<Options>;
|
|
58
|
+
type FeedItem = import('feedme').FeedItem;
|
|
59
|
+
}
|
|
60
|
+
export = FeedSub;
|
package/dist/feedsub.js
CHANGED
|
@@ -2,21 +2,22 @@
|
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
|
-
|
|
6
|
-
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
|
|
5
|
+
const node_zlib_1 = __importDefault(require("node:zlib"));
|
|
7
6
|
const feedme_1 = __importDefault(require("feedme"));
|
|
8
|
-
const newsemitter_1 = __importDefault(require("newsemitter"));
|
|
9
7
|
const miniget_1 = __importDefault(require("miniget"));
|
|
10
|
-
const
|
|
8
|
+
const newsemitter_1 = __importDefault(require("newsemitter"));
|
|
9
|
+
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
|
|
11
10
|
// Used for the skipdays tag.
|
|
12
|
-
const DAYS = [
|
|
13
|
-
'
|
|
11
|
+
const DAYS = [
|
|
12
|
+
'sunday',
|
|
13
|
+
'monday',
|
|
14
|
+
'tuesday',
|
|
15
|
+
'wednesday',
|
|
16
|
+
'thursday',
|
|
17
|
+
'friday',
|
|
18
|
+
'saturday',
|
|
19
|
+
];
|
|
14
20
|
class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
15
|
-
/**
|
|
16
|
-
* @constructor
|
|
17
|
-
* @param {string} feed
|
|
18
|
-
* @param {!Object} options
|
|
19
|
-
*/
|
|
20
21
|
constructor(feed, options) {
|
|
21
22
|
super();
|
|
22
23
|
this.feed = feed;
|
|
@@ -39,23 +40,23 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
39
40
|
maxHistory: this.options.maxHistory,
|
|
40
41
|
manageHistory: true,
|
|
41
42
|
identifier: (item) => {
|
|
42
|
-
|
|
43
|
+
const feedItem = item[0];
|
|
43
44
|
return [
|
|
44
45
|
feedItem.title,
|
|
45
46
|
feedItem.link,
|
|
46
47
|
feedItem.pubdate,
|
|
47
48
|
feedItem.published,
|
|
48
|
-
feedItem.updated
|
|
49
|
+
feedItem.updated,
|
|
49
50
|
].join(',');
|
|
50
|
-
}
|
|
51
|
+
},
|
|
51
52
|
});
|
|
52
53
|
this.news.addHistory('item', this.options.history);
|
|
53
54
|
this._first = this.news.history.get('item').size === 0;
|
|
54
55
|
this.getOpts = Object.assign({
|
|
55
56
|
headers: {},
|
|
56
57
|
acceptEncoding: {
|
|
57
|
-
gzip: () =>
|
|
58
|
-
deflate: () =>
|
|
58
|
+
gzip: () => node_zlib_1.default.createGunzip(),
|
|
59
|
+
deflate: () => node_zlib_1.default.createInflate(),
|
|
59
60
|
},
|
|
60
61
|
}, this.options.requestOpts);
|
|
61
62
|
if (this.options.autoStart) {
|
|
@@ -64,12 +65,10 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
66
67
|
* Start calling the read function on interval.
|
|
67
|
-
*
|
|
68
|
-
* @param {boolean} readOnStart
|
|
69
68
|
*/
|
|
70
69
|
start(readOnStart) {
|
|
71
70
|
this.stop();
|
|
72
|
-
|
|
71
|
+
const ms = this.options.interval * 60000;
|
|
73
72
|
this._intervalid = setInterval(this.read.bind(this), ms);
|
|
74
73
|
if (readOnStart) {
|
|
75
74
|
this.read();
|
|
@@ -88,13 +87,11 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
88
87
|
*
|
|
89
88
|
* if callback is given, calls callback with all new items
|
|
90
89
|
* even when there are 0.
|
|
91
|
-
*
|
|
92
|
-
* @param {!Function(!Error, Array.<Object>)} callback
|
|
93
90
|
*/
|
|
94
91
|
read(callback) {
|
|
95
92
|
let ended = false;
|
|
96
93
|
let req;
|
|
97
|
-
|
|
94
|
+
const items = [];
|
|
98
95
|
let newItems = [];
|
|
99
96
|
let sortOrder = 0;
|
|
100
97
|
const error = (err) => {
|
|
@@ -120,7 +117,9 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
120
117
|
if (this._first && !this.options.emitOnStart) {
|
|
121
118
|
newItems = [];
|
|
122
119
|
}
|
|
123
|
-
newItems.forEach(item =>
|
|
120
|
+
newItems.forEach((item) => {
|
|
121
|
+
this.emit('item', item);
|
|
122
|
+
});
|
|
124
123
|
this.emit('items', newItems);
|
|
125
124
|
if (req) {
|
|
126
125
|
req.destroy();
|
|
@@ -133,18 +132,25 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
133
132
|
// to skip and it's currently one of those hours/days, abort.
|
|
134
133
|
const now = new Date();
|
|
135
134
|
const shouldSkip = () => {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
135
|
+
var _a;
|
|
136
|
+
if (this._first && this.options.emitOnStart) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
if (this.options.hoursToSkip &&
|
|
140
|
+
this.options.hoursToSkip.indexOf(now.getHours()) !== -1) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
if ((_a = this.options.daysToSkip) === null || _a === void 0 ? void 0 : _a.some((day) => {
|
|
144
|
+
return day.toLowerCase() === DAYS[now.getDay()];
|
|
145
|
+
})) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
143
149
|
};
|
|
144
150
|
if (shouldSkip()) {
|
|
145
151
|
return success();
|
|
146
152
|
}
|
|
147
|
-
req = miniget_1.default(this.feed, this.getOpts);
|
|
153
|
+
req = (0, miniget_1.default)(this.feed, this.getOpts);
|
|
148
154
|
req.on('response', (res) => {
|
|
149
155
|
// Check if not modified code is sent back
|
|
150
156
|
// in this case, the body will be empty.
|
|
@@ -153,14 +159,15 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
153
159
|
}
|
|
154
160
|
// Check headers for conditional get.
|
|
155
161
|
if (res.headers['last-modified']) {
|
|
156
|
-
this.getOpts.headers['If-Modified-Since'] =
|
|
162
|
+
this.getOpts.headers['If-Modified-Since'] =
|
|
163
|
+
res.headers['last-modified'];
|
|
157
164
|
}
|
|
158
165
|
if (res.headers.etag) {
|
|
159
166
|
this.getOpts.headers['If-None-Match'] = res.headers.etag;
|
|
160
167
|
}
|
|
161
168
|
// Save date.
|
|
162
169
|
let date;
|
|
163
|
-
|
|
170
|
+
const getdate = (text) => (date = text);
|
|
164
171
|
// Create feed parser.
|
|
165
172
|
const parser = new feedme_1.default();
|
|
166
173
|
parser.on('error', error);
|
|
@@ -184,8 +191,9 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
184
191
|
// Listen for skipHours if enabled.
|
|
185
192
|
if (this.options.skipHours && !this.options.hoursToSkip) {
|
|
186
193
|
parser.once('skiphours', (data) => {
|
|
187
|
-
this.options.hoursToSkip =
|
|
188
|
-
|
|
194
|
+
this.options.hoursToSkip = []
|
|
195
|
+
.concat(data.hour)
|
|
196
|
+
.map((h) => parseInt(h, 10));
|
|
189
197
|
});
|
|
190
198
|
}
|
|
191
199
|
// Listen for skipDays if enabled.
|
|
@@ -196,10 +204,6 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
196
204
|
}
|
|
197
205
|
// Compare date when first item is encountered.
|
|
198
206
|
const firstitem = (item) => {
|
|
199
|
-
// If date is the same as last, abort.
|
|
200
|
-
if (date && this.options.lastDate === date) {
|
|
201
|
-
return success();
|
|
202
|
-
}
|
|
203
207
|
if (shouldSkip()) {
|
|
204
208
|
return success();
|
|
205
209
|
}
|
|
@@ -211,7 +215,9 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
211
215
|
getItem(item);
|
|
212
216
|
};
|
|
213
217
|
parser.once('item', firstitem);
|
|
214
|
-
const getItemDate = (item) =>
|
|
218
|
+
const getItemDate = (item) => Date.parse(item.pubdate) ||
|
|
219
|
+
Date.parse(item.published) ||
|
|
220
|
+
0;
|
|
215
221
|
const getItem = (item) => {
|
|
216
222
|
if (sortOrder === 0) {
|
|
217
223
|
items.push(item);
|
|
@@ -235,7 +241,7 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
235
241
|
newItems.push(item);
|
|
236
242
|
}
|
|
237
243
|
else if (!ended) {
|
|
238
|
-
|
|
244
|
+
const emitted = this.news.emit('item', item);
|
|
239
245
|
if (emitted) {
|
|
240
246
|
newItems.push(item);
|
|
241
247
|
}
|
|
@@ -275,6 +281,11 @@ class FeedSub extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
275
281
|
req.on('error', error);
|
|
276
282
|
}
|
|
277
283
|
}
|
|
278
|
-
|
|
284
|
+
FeedSub.FeedSub = FeedSub;
|
|
285
|
+
FeedSub.default = FeedSub;
|
|
286
|
+
// Statically recognizable exports for Node.js cjs-module-lexer (ESM named import support)
|
|
287
|
+
module.exports = FeedSub;
|
|
288
|
+
module.exports.default = FeedSub;
|
|
289
|
+
module.exports.FeedSub = FeedSub;
|
|
279
290
|
module.exports = FeedSub;
|
|
280
291
|
//# sourceMappingURL=feedsub.js.map
|
package/dist/feedsub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedsub.js","sourceRoot":"","sources":["../src/feedsub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feedsub.js","sourceRoot":"","sources":["../src/feedsub.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"json",
|
|
9
9
|
"subscribe"
|
|
10
10
|
],
|
|
11
|
-
"version": "0.7.
|
|
11
|
+
"version": "0.7.10",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
14
|
"url": "git://github.com/fent/node-feedsub.git"
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
|
+
"lint": "biome check .",
|
|
23
|
+
"lint:fix": "biome check --write .",
|
|
22
24
|
"prepare": "tsc -p tsconfig.build.json",
|
|
23
25
|
"build": "tsc -p tsconfig.build.json",
|
|
24
26
|
"test": "nyc --extension .ts --reporter=lcov --reporter=text-summary npm run test:unit",
|
|
@@ -31,19 +33,20 @@
|
|
|
31
33
|
"tiny-typed-emitter": "^2.0.3"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
|
34
|
-
"@
|
|
36
|
+
"@biomejs/biome": "^2.5.15",
|
|
37
|
+
"@types/mocha": "^10.0.10",
|
|
35
38
|
"@types/nock": "^11.1.0",
|
|
36
|
-
"@types/node": "^
|
|
39
|
+
"@types/node": "^20.1.2",
|
|
37
40
|
"@types/sinon": "^9.0.9",
|
|
38
|
-
"mocha": "^
|
|
41
|
+
"mocha": "^12.0.3",
|
|
39
42
|
"nock": "^11.1.0",
|
|
40
|
-
"nyc": "^
|
|
43
|
+
"nyc": "^18.0.0",
|
|
41
44
|
"sinon": "^8.0.0",
|
|
42
|
-
"ts-node": "^9.
|
|
43
|
-
"typescript": "^
|
|
45
|
+
"ts-node": "^10.9.2",
|
|
46
|
+
"typescript": "^5.6.3"
|
|
44
47
|
},
|
|
45
48
|
"engines": {
|
|
46
|
-
"node": ">=
|
|
49
|
+
"node": ">=20"
|
|
47
50
|
},
|
|
48
51
|
"license": "MIT"
|
|
49
52
|
}
|