git ssb

0+

mixmix / ssb-unread



Commit 4a2e05c2437241f7e9f50158d7392165c9568dce

initial

mixmix committed on 7/28/2018, 11:15:51 AM
Parent: 050a3e6046f7510861c7a6cec84b37050539a4b6

Files changed

.gitignoreadded
index.jsadded
package-lock.jsonadded
package.jsonadded
.gitignoreView
@@ -1,0 +1,1 @@
1 +node_modules
index.jsView
@@ -1,0 +1,76 @@
1 +const flumeView = require('flumeview-reduce')
2 +const mkdirp = require('mkdirp')
3 +const { join } = require('path')
4 +const level = require('level')
5 +const charwise = require('charwise')
6 +const Value = require('mutant/value')
7 +
8 +module.exports = {
9 + name: 'unread',
10 + version: require('./package.json').version,
11 + manifest: {
12 + isUnread: 'async',
13 + markRead: 'async',
14 + unreadObs: 'sync',
15 + // stream: 'source'
16 + },
17 + init: function (server, config) {
18 +
19 + mkdirp.sync(join(config.path, 'unread'))
20 + const db = level(join(config.path, 'unread'), {
21 + valueEncoding: charwise
22 + })
23 +
24 + const STARTED_AT = 'startedAt'
25 + db.get(STARTED_AT, (err, ts) => {
26 + if (!ts) db.put(STARTED_AT, Date.now())
27 +
28 + // console.log(new Date(ts))
29 + // db.put(STARTED_AT, Number(new Date(2018, 6, 1)))
30 +
31 + // NOTE: just using flume to get an up to date list of all messages piped to ssb-unread!
32 + const VERSION = 1
33 + var queue = []
34 + server._flumeUse('unread-dummy-index', flumeView(
35 + VERSION,
36 + (_, msg) => {
37 + db.put(msg.key, null, noop)
38 +
39 + return _
40 + }
41 + ))
42 + })
43 +
44 + function isUnread (key, cb) {
45 + return db.get(key, (err, ts) => {
46 + if (err) cb(err)
47 + else cb(null, Boolean(ts))
48 + })
49 + }
50 +
51 + function markRead (key, cb = noop) {
52 + db.put(key, Date.now(), cb)
53 + }
54 +
55 + function unreadObs (key) {
56 + const obs = Value(null)
57 + isUnread(key, (err, state) => {
58 + if (err) console.error(err)
59 + else obs.set(state)
60 + })
61 +
62 + // remember pull-level
63 + // - could use for live updating ?
64 +
65 + return obs
66 + }
67 +
68 + return {
69 + isUnread,
70 + markRead,
71 + unreadObs
72 + }
73 + }
74 +}
75 +
76 +function noop () {}
package-lock.jsonView
@@ -1,0 +1,653 @@
1 +{
2 + "name": "ssb-unread",
3 + "version": "0.0.1",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "abstract-leveldown": {
8 + "version": "5.0.0",
9 + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz",
10 + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==",
11 + "requires": {
12 + "xtend": "~4.0.0"
13 + }
14 + },
15 + "ansi-regex": {
16 + "version": "2.1.1",
17 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
18 + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
19 + },
20 + "aproba": {
21 + "version": "1.2.0",
22 + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
23 + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
24 + },
25 + "are-we-there-yet": {
26 + "version": "1.1.5",
27 + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
28 + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
29 + "requires": {
30 + "delegates": "^1.0.0",
31 + "readable-stream": "^2.0.6"
32 + }
33 + },
34 + "async-single": {
35 + "version": "1.0.5",
36 + "resolved": "https://registry.npmjs.org/async-single/-/async-single-1.0.5.tgz",
37 + "integrity": "sha1-El3QneldPqMKN4rb7QIQkhebA8k="
38 + },
39 + "atomic-file": {
40 + "version": "1.1.5",
41 + "resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-1.1.5.tgz",
42 + "integrity": "sha512-TG+5YFiaKQ6CZiSQsosGMJ/IJzwMZ4V/rSdEXlD6+DwKyv8OyeUcprq34kp4yuS6bfQYXhxBC2Vm8PWo+iKBGQ=="
43 + },
44 + "bindings": {
45 + "version": "1.3.0",
46 + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
47 + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
48 + },
49 + "bl": {
50 + "version": "1.2.2",
51 + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
52 + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
53 + "requires": {
54 + "readable-stream": "^2.3.5",
55 + "safe-buffer": "^5.1.1"
56 + }
57 + },
58 + "browser-split": {
59 + "version": "0.0.1",
60 + "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.1.tgz",
61 + "integrity": "sha1-ewl1dPjj6tYG+0Zk5krf3aKYGpM="
62 + },
63 + "buffer-alloc": {
64 + "version": "1.2.0",
65 + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
66 + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
67 + "requires": {
68 + "buffer-alloc-unsafe": "^1.1.0",
69 + "buffer-fill": "^1.0.0"
70 + }
71 + },
72 + "buffer-alloc-unsafe": {
73 + "version": "1.1.0",
74 + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
75 + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
76 + },
77 + "buffer-fill": {
78 + "version": "1.0.0",
79 + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
80 + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
81 + },
82 + "charwise": {
83 + "version": "3.0.1",
84 + "resolved": "https://registry.npmjs.org/charwise/-/charwise-3.0.1.tgz",
85 + "integrity": "sha512-RcdumNsM6fJZ5HHbYunqj2bpurVRGsXour3OR+SlLEHFhG6ALm54i6Osnh+OvO7kEoSBzwExpblYFH8zKQiEPw=="
86 + },
87 + "chownr": {
88 + "version": "1.0.1",
89 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
90 + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
91 + },
92 + "code-point-at": {
93 + "version": "1.1.0",
94 + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
95 + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
96 + },
97 + "console-control-strings": {
98 + "version": "1.1.0",
99 + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
100 + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
101 + },
102 + "core-util-is": {
103 + "version": "1.0.2",
104 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
105 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
106 + },
107 + "decompress-response": {
108 + "version": "3.3.0",
109 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
110 + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
111 + "requires": {
112 + "mimic-response": "^1.0.0"
113 + }
114 + },
115 + "deep-equal": {
116 + "version": "1.0.1",
117 + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
118 + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
119 + },
120 + "deep-extend": {
121 + "version": "0.6.0",
122 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
123 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
124 + },
125 + "deferred-leveldown": {
126 + "version": "4.0.2",
127 + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz",
128 + "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==",
129 + "requires": {
130 + "abstract-leveldown": "~5.0.0",
131 + "inherits": "^2.0.3"
132 + }
133 + },
134 + "delegates": {
135 + "version": "1.0.0",
136 + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
137 + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
138 + },
139 + "detect-libc": {
140 + "version": "1.0.3",
141 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
142 + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
143 + },
144 + "encoding-down": {
145 + "version": "5.0.4",
146 + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz",
147 + "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==",
148 + "requires": {
149 + "abstract-leveldown": "^5.0.0",
150 + "inherits": "^2.0.3",
151 + "level-codec": "^9.0.0",
152 + "level-errors": "^2.0.0",
153 + "xtend": "^4.0.1"
154 + },
155 + "dependencies": {
156 + "level-codec": {
157 + "version": "9.0.0",
158 + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.0.tgz",
159 + "integrity": "sha512-OIpVvjCcZNP5SdhcNupnsI1zo5Y9Vpm+k/F1gfG5kXrtctlrwanisakweJtE0uA0OpLukRfOQae+Fg0M5Debhg=="
160 + }
161 + }
162 + },
163 + "end-of-stream": {
164 + "version": "1.4.1",
165 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
166 + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
167 + "requires": {
168 + "once": "^1.4.0"
169 + }
170 + },
171 + "errno": {
172 + "version": "0.1.7",
173 + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
174 + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
175 + "requires": {
176 + "prr": "~1.0.1"
177 + }
178 + },
179 + "expand-template": {
180 + "version": "1.1.1",
181 + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz",
182 + "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg=="
183 + },
184 + "fast-future": {
185 + "version": "1.0.2",
186 + "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz",
187 + "integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo="
188 + },
189 + "flumecodec": {
190 + "version": "0.0.0",
191 + "resolved": "https://registry.npmjs.org/flumecodec/-/flumecodec-0.0.0.tgz",
192 + "integrity": "sha1-Ns4Gq+Lg4BxE3WnyoWUwWiMgZJs=",
193 + "requires": {
194 + "level-codec": "^6.2.0"
195 + }
196 + },
197 + "flumeview-reduce": {
198 + "version": "1.3.13",
199 + "resolved": "https://registry.npmjs.org/flumeview-reduce/-/flumeview-reduce-1.3.13.tgz",
200 + "integrity": "sha512-QN/07+ia3uXpfy8/xWjLI2XGIG67Aiwp9VaOTIqYt6NHP6OfdGfl8nGRPkJRHlkfFbzEouRvJcQBFohWEXMdNQ==",
201 + "requires": {
202 + "async-single": "^1.0.5",
203 + "atomic-file": "^1.1.3",
204 + "deep-equal": "^1.0.1",
205 + "flumecodec": "0.0.0",
206 + "obv": "0.0.0",
207 + "pull-notify": "^0.1.1",
208 + "pull-stream": "^3.5.0"
209 + }
210 + },
211 + "fs-constants": {
212 + "version": "1.0.0",
213 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
214 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
215 + },
216 + "gauge": {
217 + "version": "2.7.4",
218 + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
219 + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
220 + "requires": {
221 + "aproba": "^1.0.3",
222 + "console-control-strings": "^1.0.0",
223 + "has-unicode": "^2.0.0",
224 + "object-assign": "^4.1.0",
225 + "signal-exit": "^3.0.0",
226 + "string-width": "^1.0.1",
227 + "strip-ansi": "^3.0.1",
228 + "wide-align": "^1.1.0"
229 + }
230 + },
231 + "github-from-package": {
232 + "version": "0.0.0",
233 + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
234 + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
235 + },
236 + "has-unicode": {
237 + "version": "2.0.1",
238 + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
239 + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
240 + },
241 + "inherits": {
242 + "version": "2.0.3",
243 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
244 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
245 + },
246 + "ini": {
247 + "version": "1.3.5",
248 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
249 + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
250 + },
251 + "is-fullwidth-code-point": {
252 + "version": "1.0.0",
253 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
254 + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
255 + "requires": {
256 + "number-is-nan": "^1.0.0"
257 + }
258 + },
259 + "isarray": {
260 + "version": "1.0.0",
261 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
262 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
263 + },
264 + "level": {
265 + "version": "4.0.0",
266 + "resolved": "https://registry.npmjs.org/level/-/level-4.0.0.tgz",
267 + "integrity": "sha512-4epzCOlEcJ529NOdlAYiuiakS/kZTDdiKSBNJmE1B8bsmA+zEVwcpxyH86qJSQTpOu7SODrlaD9WgPRHLkGutA==",
268 + "requires": {
269 + "level-packager": "^3.0.0",
270 + "leveldown": "^4.0.0",
271 + "opencollective-postinstall": "^2.0.0"
272 + }
273 + },
274 + "level-codec": {
275 + "version": "6.2.0",
276 + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.2.0.tgz",
277 + "integrity": "sha1-pLUkS7akwvcj1oodZOmAxTYn2dQ="
278 + },
279 + "level-errors": {
280 + "version": "2.0.0",
281 + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.0.tgz",
282 + "integrity": "sha512-AmY4HCp9h3OiU19uG+3YWkdELgy05OTP/r23aNHaQKWv8DO787yZgsEuGVkoph40uwN+YdUKnANlrxSsoOaaxg==",
283 + "requires": {
284 + "errno": "~0.1.1"
285 + }
286 + },
287 + "level-iterator-stream": {
288 + "version": "3.0.0",
289 + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.0.tgz",
290 + "integrity": "sha512-2tpBjsNZtvST8eJIy3R9Sk13aC84omgqvT4sQObZaUb4hDyDe4woWAMudXX3eCsaydOGVaaI5WMpRRBFSzz5WA==",
291 + "requires": {
292 + "inherits": "^2.0.1",
293 + "readable-stream": "^2.0.5",
294 + "xtend": "^4.0.0"
295 + }
296 + },
297 + "level-packager": {
298 + "version": "3.1.0",
299 + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-3.1.0.tgz",
300 + "integrity": "sha512-UxVEfK5WH0u0InR3WxTCSAroiorAGKzXWZT6i+nBjambmvINuXFUsFx2Ai3UIjUUtnyWhluv42jMlzUZCsAk9A==",
301 + "requires": {
302 + "encoding-down": "~5.0.0",
303 + "levelup": "^3.0.0"
304 + }
305 + },
306 + "leveldown": {
307 + "version": "4.0.1",
308 + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-4.0.1.tgz",
309 + "integrity": "sha512-ZlBKVSsglPIPJnz4ggB8o2R0bxDxbsMzuQohbfgoFMVApyTE118DK5LNRG0cRju6rt3OkGxe0V6UYACGlq/byg==",
310 + "requires": {
311 + "abstract-leveldown": "~5.0.0",
312 + "bindings": "~1.3.0",
313 + "fast-future": "~1.0.2",
314 + "nan": "~2.10.0",
315 + "prebuild-install": "^4.0.0"
316 + }
317 + },
318 + "levelup": {
319 + "version": "3.1.1",
320 + "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz",
321 + "integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==",
322 + "requires": {
323 + "deferred-leveldown": "~4.0.0",
324 + "level-errors": "~2.0.0",
325 + "level-iterator-stream": "~3.0.0",
326 + "xtend": "~4.0.0"
327 + }
328 + },
329 + "mimic-response": {
330 + "version": "1.0.1",
331 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
332 + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
333 + },
334 + "minimist": {
335 + "version": "1.2.0",
336 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
337 + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
338 + },
339 + "mkdirp": {
340 + "version": "0.5.1",
341 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
342 + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
343 + "requires": {
344 + "minimist": "0.0.8"
345 + },
346 + "dependencies": {
347 + "minimist": {
348 + "version": "0.0.8",
349 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
350 + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
351 + }
352 + }
353 + },
354 + "mutant": {
355 + "version": "3.22.1",
356 + "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.22.1.tgz",
357 + "integrity": "sha1-kEh1RvcAs8KKqApD0c99M48wdYE=",
358 + "requires": {
359 + "browser-split": "0.0.1",
360 + "xtend": "^4.0.1"
361 + }
362 + },
363 + "nan": {
364 + "version": "2.10.0",
365 + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
366 + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
367 + },
368 + "node-abi": {
369 + "version": "2.4.3",
370 + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.3.tgz",
371 + "integrity": "sha512-b656V5C0628gOOA2kwcpNA/bxdlqYF9FvxJ+qqVX0ctdXNVZpS8J6xEUYir3WAKc7U0BH/NRlSpNbGsy+azjeg==",
372 + "requires": {
373 + "semver": "^5.4.1"
374 + }
375 + },
376 + "noop-logger": {
377 + "version": "0.1.1",
378 + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
379 + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI="
380 + },
381 + "npmlog": {
382 + "version": "4.1.2",
383 + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
384 + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
385 + "requires": {
386 + "are-we-there-yet": "~1.1.2",
387 + "console-control-strings": "~1.1.0",
388 + "gauge": "~2.7.3",
389 + "set-blocking": "~2.0.0"
390 + }
391 + },
392 + "number-is-nan": {
393 + "version": "1.0.1",
394 + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
395 + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
396 + },
397 + "object-assign": {
398 + "version": "4.1.1",
399 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
400 + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
401 + },
402 + "obv": {
403 + "version": "0.0.0",
404 + "resolved": "https://registry.npmjs.org/obv/-/obv-0.0.0.tgz",
405 + "integrity": "sha1-7eq4Ro+R1BkzYu1/kdC5bdOaecE="
406 + },
407 + "once": {
408 + "version": "1.4.0",
409 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
410 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
411 + "requires": {
412 + "wrappy": "1"
413 + }
414 + },
415 + "opencollective-postinstall": {
416 + "version": "2.0.0",
417 + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.0.tgz",
418 + "integrity": "sha512-XAe80GycLe2yRGnJsUtt+EO5lk06XYRQt4kJJe53O2kJHPZJOZ+XMF/b47HW96e6LhfKVpwnXVr/s56jhV98jg=="
419 + },
420 + "os-homedir": {
421 + "version": "1.0.2",
422 + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
423 + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
424 + },
425 + "prebuild-install": {
426 + "version": "4.0.0",
427 + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-4.0.0.tgz",
428 + "integrity": "sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA==",
429 + "requires": {
430 + "detect-libc": "^1.0.3",
431 + "expand-template": "^1.0.2",
432 + "github-from-package": "0.0.0",
433 + "minimist": "^1.2.0",
434 + "mkdirp": "^0.5.1",
435 + "node-abi": "^2.2.0",
436 + "noop-logger": "^0.1.1",
437 + "npmlog": "^4.0.1",
438 + "os-homedir": "^1.0.1",
439 + "pump": "^2.0.1",
440 + "rc": "^1.1.6",
441 + "simple-get": "^2.7.0",
442 + "tar-fs": "^1.13.0",
443 + "tunnel-agent": "^0.6.0",
444 + "which-pm-runs": "^1.0.0"
445 + }
446 + },
447 + "process-nextick-args": {
448 + "version": "2.0.0",
449 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
450 + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
451 + },
452 + "prr": {
453 + "version": "1.0.1",
454 + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
455 + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
456 + },
457 + "pull-notify": {
458 + "version": "0.1.1",
459 + "resolved": "https://registry.npmjs.org/pull-notify/-/pull-notify-0.1.1.tgz",
460 + "integrity": "sha1-b4b/ldJwuJw+vyVbYDG3Ay3JnMo=",
461 + "requires": {
462 + "pull-pushable": "^2.0.0"
463 + }
464 + },
465 + "pull-pushable": {
466 + "version": "2.2.0",
467 + "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz",
468 + "integrity": "sha1-Xy867UethpGfAbEqLpnW8b13ZYE="
469 + },
470 + "pull-stream": {
471 + "version": "3.6.8",
472 + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.8.tgz",
473 + "integrity": "sha512-wQUIptQBcM0rFsUhZoEpOT3vUn73DtTGVq3NQ86c4T7iMOSprDzeKWYq2ksXnbwiuExTKvt+8G9fzNLFQuiO+A=="
474 + },
475 + "pump": {
476 + "version": "2.0.1",
477 + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
478 + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
479 + "requires": {
480 + "end-of-stream": "^1.1.0",
481 + "once": "^1.3.1"
482 + }
483 + },
484 + "rc": {
485 + "version": "1.2.8",
486 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
487 + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
488 + "requires": {
489 + "deep-extend": "^0.6.0",
490 + "ini": "~1.3.0",
491 + "minimist": "^1.2.0",
492 + "strip-json-comments": "~2.0.1"
493 + }
494 + },
495 + "readable-stream": {
496 + "version": "2.3.6",
497 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
498 + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
499 + "requires": {
500 + "core-util-is": "~1.0.0",
501 + "inherits": "~2.0.3",
502 + "isarray": "~1.0.0",
503 + "process-nextick-args": "~2.0.0",
504 + "safe-buffer": "~5.1.1",
505 + "string_decoder": "~1.1.1",
506 + "util-deprecate": "~1.0.1"
507 + }
508 + },
509 + "safe-buffer": {
510 + "version": "5.1.2",
511 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
512 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
513 + },
514 + "semver": {
515 + "version": "5.5.0",
516 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
517 + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
518 + },
519 + "set-blocking": {
520 + "version": "2.0.0",
521 + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
522 + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
523 + },
524 + "signal-exit": {
525 + "version": "3.0.2",
526 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
527 + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
528 + },
529 + "simple-concat": {
530 + "version": "1.0.0",
531 + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
532 + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY="
533 + },
534 + "simple-get": {
535 + "version": "2.8.1",
536 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",
537 + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
538 + "requires": {
539 + "decompress-response": "^3.3.0",
540 + "once": "^1.3.1",
541 + "simple-concat": "^1.0.0"
542 + }
543 + },
544 + "string-width": {
545 + "version": "1.0.2",
546 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
547 + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
548 + "requires": {
549 + "code-point-at": "^1.0.0",
550 + "is-fullwidth-code-point": "^1.0.0",
551 + "strip-ansi": "^3.0.0"
552 + }
553 + },
554 + "string_decoder": {
555 + "version": "1.1.1",
556 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
557 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
558 + "requires": {
559 + "safe-buffer": "~5.1.0"
560 + }
561 + },
562 + "strip-ansi": {
563 + "version": "3.0.1",
564 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
565 + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
566 + "requires": {
567 + "ansi-regex": "^2.0.0"
568 + }
569 + },
570 + "strip-json-comments": {
571 + "version": "2.0.1",
572 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
573 + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
574 + },
575 + "tar-fs": {
576 + "version": "1.16.3",
577 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
578 + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
579 + "requires": {
580 + "chownr": "^1.0.1",
581 + "mkdirp": "^0.5.1",
582 + "pump": "^1.0.0",
583 + "tar-stream": "^1.1.2"
584 + },
585 + "dependencies": {
586 + "pump": {
587 + "version": "1.0.3",
588 + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
589 + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
590 + "requires": {
591 + "end-of-stream": "^1.1.0",
592 + "once": "^1.3.1"
593 + }
594 + }
595 + }
596 + },
597 + "tar-stream": {
598 + "version": "1.6.1",
599 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
600 + "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
601 + "requires": {
602 + "bl": "^1.0.0",
603 + "buffer-alloc": "^1.1.0",
604 + "end-of-stream": "^1.0.0",
605 + "fs-constants": "^1.0.0",
606 + "readable-stream": "^2.3.0",
607 + "to-buffer": "^1.1.0",
608 + "xtend": "^4.0.0"
609 + }
610 + },
611 + "to-buffer": {
612 + "version": "1.1.1",
613 + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
614 + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
615 + },
616 + "tunnel-agent": {
617 + "version": "0.6.0",
618 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
619 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
620 + "requires": {
621 + "safe-buffer": "^5.0.1"
622 + }
623 + },
624 + "util-deprecate": {
625 + "version": "1.0.2",
626 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
627 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
628 + },
629 + "which-pm-runs": {
630 + "version": "1.0.0",
631 + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
632 + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs="
633 + },
634 + "wide-align": {
635 + "version": "1.1.3",
636 + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
637 + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
638 + "requires": {
639 + "string-width": "^1.0.2 || 2"
640 + }
641 + },
642 + "wrappy": {
643 + "version": "1.0.2",
644 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
645 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
646 + },
647 + "xtend": {
648 + "version": "4.0.1",
649 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
650 + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
651 + }
652 + }
653 +}
package.jsonView
@@ -1,0 +1,27 @@
1 +{
2 + "name": "ssb-unread",
3 + "version": "0.0.0",
4 + "description": "",
5 + "main": "index.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1"
8 + },
9 + "repository": {
10 + "type": "git",
11 + "url": "git+https://github.com/ssbc/ssb-unread.git"
12 + },
13 + "keywords": [],
14 + "author": "",
15 + "license": "AGPL-3.0",
16 + "bugs": {
17 + "url": "https://github.com/ssbc/ssb-unread/issues"
18 + },
19 + "homepage": "https://github.com/ssbc/ssb-unread#readme",
20 + "dependencies": {
21 + "charwise": "^3.0.1",
22 + "flumeview-reduce": "^1.3.13",
23 + "level": "^4.0.0",
24 + "mkdirp": "^0.5.1",
25 + "mutant": "^3.22.1"
26 + }
27 +}

Built with git-ssb-web