Skip to content
This repository was archived by the owner on Jun 24, 2024. It is now read-only.

Commit ef9f824

Browse files
authored
Merge pull request #10 from asset-pipe/unstream
feat: backwards compatible change of content key
2 parents 63da282 + 42054b3 commit ef9f824

File tree

9 files changed

+67
-47
lines changed

9 files changed

+67
-47
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ The following is an example of a feed file:
4242
version: '1.0.1',
4343
file: 'my-module-1/main.css',
4444
// bundled css content with any @import statements inlined
45-
content: '/* ... */'
45+
source: '/* ... */'
4646
}
4747
]
4848
```

lib/reader.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
const assert = require('assert');
4+
const { EOL } = require('os');
45

56
module.exports = async function reader(feeds = []) {
67
assert(
@@ -22,6 +23,9 @@ module.exports = async function reader(feeds = []) {
2223
feedMap.delete(feed.id);
2324
feedMap.set(feed.id, feed);
2425
});
25-
const dedupedFeeds = Array.from(feedMap.values());
26-
return dedupedFeeds.map(feed => feed.content.trim()).join('\n\n');
26+
27+
// backwards compatible refactor to `.source` from `.content`
28+
return Array.from(feedMap.values())
29+
.map(feed => (feed.source || feed.content).trim())
30+
.join(EOL + EOL);
2731
};

test/__snapshots__/reader.test.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ exports[`reader([]): throws on empty array 1`] = `"Expected at least 1 feed to b
88

99
exports[`reader([1,2,3]): throws on array containing non feed items 1`] = `"Expected every feed to be an array. Instead got \\"1, 2, 3\\""`;
1010

11-
exports[`reader(123): throws on non stream or array input 1`] = `"Expected at least 1 feed to be given. Instead got \\"undefined\\""`;
11+
exports[`reader(123): throws on non array input 1`] = `"Expected at least 1 feed to be given. Instead got \\"undefined\\""`;

test/reader.test.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,19 @@ test('reader(feeds) single feed', async () => {
1616
expect(result).toContain('my-module-1/main.css');
1717
});
1818

19-
test('reader([stream1, stream2]) mulitple feedStreams merged', async () => {
19+
test('reader(feeds) support for legacy .content field is maintained', async () => {
20+
expect.assertions(1);
21+
const sink = new SinkFs({
22+
path: path.join(__dirname, './test-assets'),
23+
});
24+
const feed = JSON.parse(await sink.get('legacy.json'));
25+
26+
const result = await reader([feed]);
27+
28+
expect(result).toContain('my-module-1/main.css');
29+
});
30+
31+
test('reader([feed1, feed2]) mulitple feeds merged', async () => {
2032
expect.assertions(4);
2133
const sink = new SinkFs({
2234
path: path.join(__dirname, './test-assets'),
@@ -54,7 +66,7 @@ test('reader(): throws on no input', async () => {
5466
}
5567
});
5668

57-
test('reader(123): throws on non stream or array input', async () => {
69+
test('reader(123): throws on non array input', async () => {
5870
expect.assertions(1);
5971
try {
6072
await reader(123);

test/test-assets/a.json

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
[
2-
{
3-
"id":
4-
"4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
5-
"name": "my-module-1",
6-
"version": "1.0.1",
7-
"file": "my-module-1/main.css",
8-
"content": "/* my-module-1/main.css */\n"
9-
}
2+
{
3+
"id": "4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
4+
"name": "my-module-1",
5+
"version": "1.0.1",
6+
"file": "my-module-1/main.css",
7+
"source": "/* my-module-1/main.css */\n"
8+
}
109
]

test/test-assets/b.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
[
2-
{
3-
"id":
4-
"0791418bc4d8ce9e0315f5a23b729fd1fc77df0130b0336b3380d1b4f47c3855",
5-
"name": "my-module-3",
6-
"version": "1.0.1",
7-
"file": "my-module-3/css/main.css",
8-
"content":
9-
"/* my-module-3/main.css */\n\n/* my-module-3/dep.css */\n\n/* dep/main.css */\n"
10-
}
2+
{
3+
"id": "0791418bc4d8ce9e0315f5a23b729fd1fc77df0130b0336b3380d1b4f47c3855",
4+
"name": "my-module-3",
5+
"version": "1.0.1",
6+
"file": "my-module-3/css/main.css",
7+
"source":
8+
"/* my-module-3/main.css */\n\n/* my-module-3/dep.css */\n\n/* dep/main.css */\n"
9+
}
1110
]

test/test-assets/c.json

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
[
2-
{
3-
"id":
4-
"4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
5-
"name": "my-module-1",
6-
"version": "1.0.1",
7-
"file": "my-module-1/main.css",
8-
"content": "/* my-module-1/main.css */\n"
9-
},
10-
{
11-
"id":
12-
"1820708872350aef30523aef4e3516172280ff75be7f0e419b104de43eef0a69",
13-
"name": "my-module-2",
14-
"version": "1.0.1",
15-
"file": "my-module-2/css/main.css",
16-
"content": "/* my-module-2/main.css */\n"
17-
}
2+
{
3+
"id": "4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
4+
"name": "my-module-1",
5+
"version": "1.0.1",
6+
"file": "my-module-1/main.css",
7+
"source": "/* my-module-1/main.css */\n"
8+
},
9+
{
10+
"id": "1820708872350aef30523aef4e3516172280ff75be7f0e419b104de43eef0a69",
11+
"name": "my-module-2",
12+
"version": "1.0.1",
13+
"file": "my-module-2/css/main.css",
14+
"source": "/* my-module-2/main.css */\n"
15+
}
1816
]

test/test-assets/d.json

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
[
2-
{
3-
"id":
4-
"4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
5-
"name": "my-module-1",
6-
"version": "1.0.1",
7-
"file": "my-module-1/main.css",
8-
"content": "/* my-module-1/main.css */\n"
9-
}
2+
{
3+
"id": "4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
4+
"name": "my-module-1",
5+
"version": "1.0.1",
6+
"file": "my-module-1/main.css",
7+
"source": "/* my-module-1/main.css */\n"
8+
}
109
]

test/test-assets/legacy.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[
2+
{
3+
"id": "4f32a8e1c6cf6e5885241f3ea5fee583560b2dfde38b21ec3f9781c91d58f42e",
4+
"name": "my-module-1",
5+
"version": "1.0.1",
6+
"file": "my-module-1/main.css",
7+
"content": "/* my-module-1/main.css */\n"
8+
}
9+
]

0 commit comments

Comments
 (0)