-
Notifications
You must be signed in to change notification settings - Fork 33
/
packages.js
108 lines (100 loc) · 2.67 KB
/
packages.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const prefix = 'refract'
const supportedMainLibraries = ['react', 'redux', 'preact', 'inferno']
const supportedObservableLibraries = ['rxjs', 'xstream', 'most', 'callbag']
const peerDependencies = {
react: {
react: '>= 15.0.0'
},
redux: {
redux: '>= 3.5.0 < 5.0.0'
},
preact: {
preact: '^8.0.0'
},
inferno: {
inferno: '^5.0.0',
'inferno-create-element': '^5.0.0'
},
rxjs: {
rxjs: '^6.0.0'
},
xstream: {
xstream: '>= 11.3.0 < 12.0.0'
},
most: {
most: '^1.0.0'
}
}
const baseDependencies = {
callbag: {
callbag: '~1.1.0',
'callbag-from-obs': '~1.2.0',
'symbol-observable': '~1.2.0'
},
most: {
'symbol-observable': '~1.2.0'
}
}
const callbagUIPackages = {
'callbag-to-obs': '~1.0.0',
'callbag-map': '~1.0.1',
'callbag-pipe': '~1.1.1',
'callbag-filter': '~1.0.1',
'callbag-drop-repeats': '~1.0.0',
'callbag-start-with': '~3.1.0'
}
const extraDependencies = {
'refract-callbag': callbagUIPackages,
'refract-inferno-callbag': callbagUIPackages,
'refract-preact-callbag': callbagUIPackages,
'refract-redux-callbag': {
'callbag-drop-repeats': '~1.0.0',
'callbag-map': '~1.0.1',
'callbag-pipe': '~1.1.1'
},
'refract-xstream': {
'symbol-observable': '~1.2.0'
},
'refract-inferno-xstream': {
'symbol-observable': '~1.2.0'
},
'refract-preact-xstream': {
'symbol-observable': '~1.2.0'
}
}
const sortObject = object =>
Object.keys(object)
.sort()
.reduce((sortedObject, key) => {
sortedObject[key] = object[key]
return sortedObject
}, {})
const listMainLibPackages = mainLib =>
supportedObservableLibraries.map(obsLib => {
const name =
mainLib === 'react'
? `${prefix}-${obsLib}`
: `${prefix}-${mainLib}-${obsLib}`
return {
mainLib,
obsLib,
peerDependencies: sortObject({
...peerDependencies[mainLib],
...peerDependencies[obsLib]
}),
dependencies: sortObject({
...baseDependencies[mainLib],
...baseDependencies[obsLib],
...extraDependencies[name]
}),
baseDir: mainLib === 'redux' ? 'redux' : 'react',
name
}
})
const getPackages = mainLib =>
mainLib
? listMainLibPackages(mainLib)
: supportedMainLibraries
.map(listMainLibPackages)
.reduce((acc, val) => acc.concat(val))
module.exports = getPackages