git ssb

0+

Josiah / patchbay-tags



Commit d6861e3a6c97728f151fbc42d87fe7b565358976

WIP: Initial Commit

- bookmarking ssb messages POC
- skeleton UI
- tags not yet working
Josiah Witt committed on 11/18/2017, 2:46:48 AM

Files changed

.gitignoreadded
bookmark/async/create.jsadded
bookmark/async/description.jsadded
bookmark/async/messageId.jsadded
bookmark/async/tags.jsadded
bookmark/async/title.jsadded
bookmark/html/create.jsadded
bookmark/html/description.jsadded
bookmark/html/render.jsadded
bookmark/obs/bookmark.jsadded
bookmark/obs/struct.jsadded
bookmark/page/bookmarks.jsadded
bookmark/pull/find.jsadded
bookmark/pull/findPublic.jsadded
bookmark/router/sync/routes.jsadded
index.jsadded
package-lock.jsonadded
package.jsonadded
.gitignoreView
@@ -1,0 +1,2 @@
1 +node_modules/
2 +
bookmark/async/create.jsView
@@ -1,0 +1,19 @@
1 +const nest = require('depnest')
2 +
3 +exports.gives = nest('bookmark.async.create')
4 +
5 +exports.needs = nest({
6 + 'sbot.async.publish': 'first',
7 + 'keys.sync.id': 'first'
8 +})
9 +
10 +exports.create = function(api) {
11 + return nest('bookmark.async.create', function({ public }, cb) {
12 + if (public) {
13 + api.sbot.async.publish({ type: 'bookmark' }, cb)
14 + } else {
15 + const id = api.keys.sync.id()
16 + api.sbot.async.publish({ type: 'bookmark', recps: [ id ] }, cb)
17 + }
18 + })
19 +}
bookmark/async/description.jsView
@@ -1,0 +1,19 @@
1 +const nest = require('depnest')
2 +
3 +exports.gives = nest('bookmark.async.description')
4 +
5 +exports.needs = nest({
6 + 'sbot.async.publish': 'first',
7 + 'keys.sync.id': 'first'
8 +})
9 +
10 +exports.create = function(api) {
11 + return nest('bookmark.async.description', function({ description, bookmark, public }, cb) {
12 + if (public) {
13 + api.sbot.async.publish({ type: 'about', about: bookmark, description }, cb)
14 + } else {
15 + const id = api.keys.sync.id()
16 + api.sbot.async.publish({ type: 'about', about: bookmark, description, recps: [ id ] }, cb)
17 + }
18 + })
19 +}
bookmark/async/messageId.jsView
@@ -1,0 +1,19 @@
1 +const nest = require('depnest')
2 +
3 +exports.gives = nest('bookmark.async.messageId')
4 +
5 +exports.needs = nest({
6 + 'sbot.async.publish': 'first',
7 + 'keys.sync.id': 'first'
8 +})
9 +
10 +exports.create = function(api) {
11 + return nest('bookmark.async.messageId', function({ messageId, bookmark, public }, cb) {
12 + if (public) {
13 + api.sbot.async.publish({ type: 'about', about: bookmark, messageId }, cb)
14 + } else {
15 + const id = api.keys.sync.id()
16 + api.sbot.async.publish({ type: 'about', about: bookmark, messageId, recps: [ id ] }, cb)
17 + }
18 + })
19 +}
bookmark/async/tags.jsView
@@ -1,0 +1,36 @@
1 +const nest = require('depnest')
2 +const pull = require('pull-stream')
3 +
4 +exports.gives = nest('bookmark.async.tags')
5 +
6 +exports.needs = nest({
7 + 'sbot.async.publish': 'first',
8 + 'keys.sync.id': 'first'
9 +})
10 +
11 +exports.create = function(api) {
12 + return nest('bookmark.async.tags', function(data, cb) {
13 + console.log(data.tags)
14 + pull(
15 + pull.values(data.tags),
16 + pull.asyncMap((tags, cb) => {
17 + if (data.public) {
18 + api.sbot.async.publish({
19 + type: 'about',
20 + about: data.bookmark,
21 + tags: tags
22 + }, cb)
23 + } else {
24 + const id = api.keys.sync.id()
25 + api.sbot.async.publish({
26 + type: 'about',
27 + about: data.bookmark,
28 + tags: tags,
29 + recps: [ id ]
30 + }, cb)
31 + }
32 + }),
33 + pull.collect(cb)
34 + )
35 + })
36 +}
bookmark/async/title.jsView
@@ -1,0 +1,19 @@
1 +const nest = require('depnest')
2 +
3 +exports.gives = nest('bookmark.async.title')
4 +
5 +exports.needs = nest({
6 + 'sbot.async.publish': 'first',
7 + 'keys.sync.id': 'first'
8 +})
9 +
10 +exports.create = function(api) {
11 + return nest('bookmark.async.title', function({ title, bookmark, public }, cb) {
12 + if (public) {
13 + api.sbot.async.publish({ type: 'about', about: bookmark, title }, cb)
14 + } else {
15 + const id = api.keys.sync.id()
16 + api.sbot.async.publish({ type: 'about', about: bookmark, title, recps: [ id ] }, cb)
17 + }
18 + })
19 +}
bookmark/html/create.jsView
@@ -1,0 +1,92 @@
1 +const { h, computed, when, Value, Struct } = require('mutant')
2 +const nest = require('depnest')
3 +
4 +exports.needs = nest({
5 + 'bookmark.async': {
6 + create: 'first',
7 + messageId: 'first',
8 + title: 'first',
9 + description: 'first',
10 + tags: 'first'
11 + },
12 + 'blob.html.input': 'first',
13 + 'message.html.confirm': 'first'
14 +})
15 +
16 +exports.gives = nest('bookmark.html.create')
17 +
18 +exports.create = function(api) {
19 + return nest({ 'bookmark.html.create': create })
20 +
21 + function create() {
22 + var bookmark = Struct({
23 + messageId: Value(),
24 + title: Value(),
25 + description: Value(),
26 + tags: Value(),
27 + public: Value()
28 + })
29 +
30 + const createButton = h('button', { 'ev-click': () =>
31 + api.bookmark.async.create({ public: bookmark.public() }, function(err, msg) {
32 + api.bookmark.async.messageId({
33 + bookmark: msg.key,
34 + messageId: bookmark.messageId(),
35 + public: bookmark.public()
36 + })
37 + api.bookmark.async.title({
38 + bookmark: msg.key,
39 + title: bookmark.title(),
40 + public: bookmark.public()
41 + })
42 + api.bookmark.async.description({
43 + bookmark: msg.key,
44 + description: bookmark.description(),
45 + public: bookmark.public()
46 + })
47 + api.bookmark.async.tags({
48 + bookmark: msg.key,
49 + tags: [ bookmark.tags().split(',').map(tag => tag.trim()) ],
50 + public: bookmark.public()
51 + }, console.log)
52 + })
53 + }, 'Save')
54 +
55 + const messageInput = h('input', {
56 + placeholder: 'id of message to save',
57 + 'ev-keyup': e => bookmark.messageId.set(e.target.value)
58 + })
59 +
60 + const titleInput = h('input', {
61 + placeholder: 'title of message',
62 + 'ev-keyup': e => bookmark.title.set(e.target.value)
63 + })
64 +
65 + const descriptionInput = h('input', {
66 + placeholder: 'description of message',
67 + 'ev-keyup': e => bookmark.description.set(e.target.value)
68 + })
69 +
70 + const tagsInput = h('input', {
71 + placeholder: 'message tags (comma separated)',
72 + 'ev-keyup': e => bookmark.tags.set(e.target.value)
73 + })
74 +
75 + const publicState = computed(bookmark.public, public => public)
76 + const publicInput = h('PublicToggle', { 'ev-click': () => bookmark.public.set(!publicState()) }, [
77 + h('label', 'Public'),
78 + h('i', { classList: when(publicState, 'fa fa-check-square-o', 'fa fa-square-o') })
79 + ])
80 +
81 + const composer = h('div', [
82 + createButton,
83 + messageInput,
84 + titleInput,
85 + descriptionInput,
86 + tagsInput,
87 + publicInput
88 + ])
89 +
90 + return composer
91 + }
92 +}
bookmark/html/description.jsView
@@ -1,0 +1,30 @@
1 +const nest = require('depnest')
2 +const { h, computed, when } = require('mutant')
3 +
4 +exports.needs = nest({
5 + 'message.html.markdown': 'first'
6 +})
7 +
8 +exports.gives = nest('bookmark.html.description')
9 +
10 +exports.create = (api) => {
11 + return nest('bookmark.html.description', description)
12 + function description ({ description, isEditing, onUpdate }) {
13 + const markdown = api.message.html.markdown
14 + const input = h(
15 + 'textarea',
16 + {
17 + 'ev-input': e => onUpdate(e.target.value),
18 + 'value': description
19 + }
20 + )
21 +
22 + return h('Description', [
23 + when(
24 + isEditing,
25 + input,
26 + computed(description, d => d ? markdown(d) : '')
27 + )
28 + ])
29 + }
30 +}
bookmark/html/render.jsView
@@ -1,0 +1,72 @@
1 +const { h, Value, when, computed } = require('mutant')
2 +const nest = require('depnest')
3 +
4 +exports.needs = nest({
5 + 'blob.sync.url': 'first',
6 + 'bookmark.obs.bookmark': 'first',
7 + 'feed.html.render': 'first',
8 + 'keys.sync.load': 'first',
9 + 'about.html.link': 'first',
10 + 'about.html.image': 'first',
11 + 'message.html': {
12 + decorate: 'reduce',
13 + link: 'first',
14 + markdown: 'first',
15 + backlinks: 'first',
16 + meta: 'map',
17 + action: 'map',
18 + timestamp: 'first',
19 + },
20 +})
21 +
22 +exports.gives = nest({
23 + 'message.html': [ 'render' ],
24 + 'bookmark.html': [ 'render' ]
25 +})
26 +
27 +exports.create = function(api) {
28 + const { timestamp, meta, backlinks, action } = api.message.html
29 +
30 + return nest({
31 + 'message.html.render': renderBookmark,
32 + 'bookmark.html.render': renderBookmark
33 + })
34 +
35 + function renderBookmark(msg, { pageId } = {}) {
36 + if (!msg.value || (msg.value.content.type !== 'bookmark')) return
37 +
38 + const bookmark = api.bookmark.obs.bookmark(msg.key)
39 +
40 + const content = [
41 + h('a', { href: bookmark.messageId }, [
42 + h('.details', [
43 + h('Title', bookmark.title),
44 + h('Description', bookmark.description),
45 + h('Tags', bookmark.tags().map(tag =>
46 + h('Tag', tag)
47 + ))
48 + ])
49 + ])
50 + ]
51 +
52 + const message = h(
53 + 'Message -bookmark',
54 + [
55 + h('section.avatar', {}, api.about.html.image(msg.value.author)),
56 + h('section.timestamp', {}, timestamp(msg)),
57 + h('section.meta', {}, meta(msg)),
58 + h('section.content', {}, content),
59 + h('section.actions', {}, action(msg)),
60 + h('footer.backlinks', {}, backlinks(msg))
61 + ]
62 + )
63 +
64 + const element = h(
65 + 'div',
66 + { attributes: { tabindex: '0' } },
67 + message
68 + )
69 +
70 + return api.message.html.decorate(element, { msg })
71 + }
72 +}
bookmark/obs/bookmark.jsView
@@ -1,0 +1,29 @@
1 +const nest = require('depnest')
2 +const pull = require('pull-stream')
3 +const ref = require('ssb-ref')
4 +const { computed } = require('mutant')
5 +
6 +exports.needs = nest({
7 + 'about.obs.latestValue': 'first',
8 + 'about.obs.groupedValues': 'first',
9 + 'bookmark.obs.struct': 'first'
10 +})
11 +
12 +exports.gives = nest('bookmark.obs.bookmark')
13 +
14 +exports.create = function(api) {
15 + return nest('bookmark.obs.bookmark', function(bookmarkId) {
16 + if (!ref.isLink(bookmarkId)) throw new Error('an id must be specified')
17 +
18 + const { latestValue, groupedValues } = api.about.obs
19 +
20 + const bookmark = api.bookmark.obs.struct({
21 + title: latestValue(bookmarkId, 'title'),
22 + description: latestValue(bookmarkId, 'description'),
23 + messageId: latestValue(bookmarkId, 'messageId'),
24 + tags: computed([groupedValues(bookmarkId, 'tags')], Object.keys)
25 + })
26 +
27 + return bookmark
28 + })
29 +}
bookmark/obs/struct.jsView
@@ -1,0 +1,41 @@
1 +const nest = require('depnest')
2 +const { Value, Set, Struct, forEachPair } = require('mutant')
3 +
4 +exports.needs = nest({
5 + 'bookmark.async': {
6 + 'title': 'first',
7 + 'description': 'first',
8 + 'messageId': 'first',
9 + 'tags': 'first'
10 + }
11 +})
12 +
13 +exports.gives = nest('bookmark.obs.struct')
14 +
15 +exports.create = function(api) {
16 + return nest('bookmark.obs.struct', function(opts = {}) {
17 + const struct = Struct({
18 + title: Value(''),
19 + description: Value(''),
20 + messageId: Value(''),
21 + tags: Set([])
22 + })
23 +
24 + Object.keys(opts).forEach(k => {
25 + if (!opts[k]) return
26 +
27 + if (typeof opts[k] === 'function') struct[k] = opts[k]
28 + else struct[k].set(opts[k])
29 + })
30 +
31 + struct.save = id => {
32 + forEachPair(struct, (k, v) => {
33 + if (api.bookmark.async[k] && v) {
34 + api.bookmark.async[k]({[k]: v, bookmark: id}, console.log)
35 + }
36 + })
37 + }
38 +
39 + return struct
40 + })
41 +}
bookmark/page/bookmarks.jsView
@@ -1,0 +1,59 @@
1 +const nest = require('depnest')
2 +const pull = require('pull-stream')
3 +const { h , Array } = require('mutant')
4 +const Scroller = require('pull-scroll')
5 +const ref = require('ssb-ref')
6 +
7 +const next = require('../../../patchbay/junk/next-stepper')
8 +
9 +exports.gives = nest({
10 + 'app.html.menuItem': true,
11 + 'app.page.bookmarks': true,
12 +})
13 +
14 +exports.needs = nest({
15 + 'app.html.scroller': 'first',
16 + 'bookmark.html': {
17 + create: 'first',
18 + render: 'first'
19 + },
20 + 'keys.sync.id': 'first',
21 + 'bookmark.pull.findPublic': 'first',
22 +})
23 +
24 +exports.create = function(api) {
25 + return nest({
26 + 'app.html.menuItem': menuItem,
27 + 'app.page.bookmarks': bookmarksPage,
28 + })
29 +
30 + function menuItem(handleClick) {
31 + return h('a', {
32 + style: { order: 0 },
33 + 'ev-click': () => handleClick({ page: 'bookmarks' })
34 + }, '/bookmarks')
35 + }
36 +
37 + function bookmarksPage(path) {
38 + const id = api.keys.sync.id()
39 +
40 + console.log('path', path)
41 + const creator = api.bookmark.html.create({})
42 + const { container, content } = api.app.html.scroller({
43 + prepend: [ creator ]
44 + })
45 +
46 + pull(
47 + api.bookmark.pull.findPublic({ old: false }),
48 + Scroller(container, content, api.bookmark.html.render, true, false)
49 + )
50 +
51 + pull(
52 + api.bookmark.pull.findPublic({ reverse: true }),
53 + Scroller(container, content, api.bookmark.html.render, false, false)
54 + )
55 +
56 + container.title = '/bookmarks'
57 + return container
58 + }
59 +}
bookmark/pull/find.jsView
@@ -1,0 +1,46 @@
1 +const nest = require('depnest')
2 +const defer = require('pull-defer')
3 +const pull = require('pull-stream')
4 +const onceTrue = require('mutant/once-true')
5 +
6 +exports.gives = nest('bookmark.pull.find')
7 +
8 +exports.needs = nest({
9 + 'sbot.obs.connection': 'first'
10 +})
11 +
12 +exports.create = function(api) {
13 + return nest({ 'bookmark.pull.find': find })
14 +
15 + function find(opts) {
16 + // handle last item passed in as lt
17 + var lt = (opts.lt && opts.lt.value)
18 + ? opts.lt.timestamp
19 + : opts.lt
20 + delete opts.lt
21 +
22 + // HACK: needed to select correct index and handle lt
23 + opts.query = [
24 + {$filter: {
25 + timestamp: typeof lt === 'number'
26 + ? {$lt: lt, $gt: 0}
27 + : {$gt: 0}
28 + }}
29 + ]
30 +
31 + return StreamWhenConnected(api.sbot.obs.connection, (sbot) => {
32 + if (!sbot.private || !sbot.private.read) return pull.empty()
33 + return sbot.private.read(opts)
34 + })
35 + }
36 +}
37 +
38 +
39 +// COPIED from patchcore 'feed.pull.private'
40 +function StreamWhenConnected (connection, fn) {
41 + var stream = defer.source()
42 + onceTrue(connection, function (connection) {
43 + stream.resolve(fn(connection))
44 + })
45 + return stream
46 +}
bookmark/pull/findPublic.jsView
@@ -1,0 +1,31 @@
1 +const nest = require('depnest')
2 +const pull = require('pull-stream')
3 +
4 +exports.gives = nest('bookmark.pull.findPublic')
5 +
6 +exports.needs = nest({
7 + 'sbot.pull.messagesByType': 'first'
8 +})
9 +
10 +exports.create = function(api) {
11 + const { messagesByType } = api.sbot.pull
12 +
13 + return nest({ 'bookmark.pull.findPublic': find })
14 +
15 + function find(opts) {
16 + const _opts = Object.assign(
17 + {},
18 + {
19 + live: true,
20 + future: true,
21 + past: false
22 + },
23 + opts,
24 + { type: 'bookmark' }
25 + )
26 + return pull(
27 + messagesByType(_opts),
28 + pull.filter(bookmark => bookmark)
29 + )
30 + }
31 +}
bookmark/router/sync/routes.jsView
@@ -1,0 +1,20 @@
1 +const nest = require('depnest')
2 +
3 +exports.gives = nest('router.sync.routes')
4 +
5 +exports.needs = nest({
6 + 'app.page.bookmarks': 'first',
7 +})
8 +
9 +exports.create = (api) => {
10 + return nest('router.sync.routes', (sofar = []) => {
11 + const pages = api.app.page
12 +
13 + // loc = location
14 + const routes = [
15 + [ loc => loc.page === 'bookmarks', pages.bookmarks ],
16 + ]
17 +
18 + return [...routes, ...sofar]
19 + })
20 +}
index.jsView
@@ -1,0 +1,7 @@
1 +const bulk = require('bulk-require')
2 +
3 +const modules = bulk(__dirname, ['!(node_modules|test.js|*.test.js)/**/*.js'], {require: function (module) {
4 + return module.match(/(.*.test.js$)/) ? null : require(module)
5 +}})
6 +
7 +module.exports = modules
package-lock.jsonView
@@ -1,0 +1,766 @@
1 +{
2 + "name": "patch-bookmarks",
3 + "version": "1.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "ansi-regex": {
8 + "version": "2.1.1",
9 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
10 + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
11 + },
12 + "ansi-styles": {
13 + "version": "2.2.1",
14 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
15 + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
16 + },
17 + "babel-code-frame": {
18 + "version": "6.26.0",
19 + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
20 + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
21 + "requires": {
22 + "chalk": "1.1.3",
23 + "esutils": "2.0.2",
24 + "js-tokens": "3.0.2"
25 + }
26 + },
27 + "babel-core": {
28 + "version": "6.26.0",
29 + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
30 + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
31 + "requires": {
32 + "babel-code-frame": "6.26.0",
33 + "babel-generator": "6.26.0",
34 + "babel-helpers": "6.24.1",
35 + "babel-messages": "6.23.0",
36 + "babel-register": "6.26.0",
37 + "babel-runtime": "6.26.0",
38 + "babel-template": "6.26.0",
39 + "babel-traverse": "6.26.0",
40 + "babel-types": "6.26.0",
41 + "babylon": "6.18.0",
42 + "convert-source-map": "1.5.0",
43 + "debug": "2.6.9",
44 + "json5": "0.5.1",
45 + "lodash": "4.17.4",
46 + "minimatch": "3.0.4",
47 + "path-is-absolute": "1.0.1",
48 + "private": "0.1.8",
49 + "slash": "1.0.0",
50 + "source-map": "0.5.7"
51 + }
52 + },
53 + "babel-generator": {
54 + "version": "6.26.0",
55 + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
56 + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
57 + "requires": {
58 + "babel-messages": "6.23.0",
59 + "babel-runtime": "6.26.0",
60 + "babel-types": "6.26.0",
61 + "detect-indent": "4.0.0",
62 + "jsesc": "1.3.0",
63 + "lodash": "4.17.4",
64 + "source-map": "0.5.7",
65 + "trim-right": "1.0.1"
66 + }
67 + },
68 + "babel-helper-call-delegate": {
69 + "version": "6.24.1",
70 + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
71 + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
72 + "requires": {
73 + "babel-helper-hoist-variables": "6.24.1",
74 + "babel-runtime": "6.26.0",
75 + "babel-traverse": "6.26.0",
76 + "babel-types": "6.26.0"
77 + }
78 + },
79 + "babel-helper-get-function-arity": {
80 + "version": "6.24.1",
81 + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
82 + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
83 + "requires": {
84 + "babel-runtime": "6.26.0",
85 + "babel-types": "6.26.0"
86 + }
87 + },
88 + "babel-helper-hoist-variables": {
89 + "version": "6.24.1",
90 + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
91 + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
92 + "requires": {
93 + "babel-runtime": "6.26.0",
94 + "babel-types": "6.26.0"
95 + }
96 + },
97 + "babel-helpers": {
98 + "version": "6.24.1",
99 + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
100 + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
101 + "requires": {
102 + "babel-runtime": "6.26.0",
103 + "babel-template": "6.26.0"
104 + }
105 + },
106 + "babel-messages": {
107 + "version": "6.23.0",
108 + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
109 + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
110 + "requires": {
111 + "babel-runtime": "6.26.0"
112 + }
113 + },
114 + "babel-plugin-check-es2015-constants": {
115 + "version": "6.22.0",
116 + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
117 + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
118 + "requires": {
119 + "babel-runtime": "6.26.0"
120 + }
121 + },
122 + "babel-plugin-transform-es2015-arrow-functions": {
123 + "version": "6.22.0",
124 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
125 + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
126 + "requires": {
127 + "babel-runtime": "6.26.0"
128 + }
129 + },
130 + "babel-plugin-transform-es2015-block-scoping": {
131 + "version": "6.26.0",
132 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
133 + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
134 + "requires": {
135 + "babel-runtime": "6.26.0",
136 + "babel-template": "6.26.0",
137 + "babel-traverse": "6.26.0",
138 + "babel-types": "6.26.0",
139 + "lodash": "4.17.4"
140 + }
141 + },
142 + "babel-plugin-transform-es2015-computed-properties": {
143 + "version": "6.24.1",
144 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
145 + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
146 + "requires": {
147 + "babel-runtime": "6.26.0",
148 + "babel-template": "6.26.0"
149 + }
150 + },
151 + "babel-plugin-transform-es2015-destructuring": {
152 + "version": "6.23.0",
153 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
154 + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
155 + "requires": {
156 + "babel-runtime": "6.26.0"
157 + }
158 + },
159 + "babel-plugin-transform-es2015-parameters": {
160 + "version": "6.24.1",
161 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
162 + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
163 + "requires": {
164 + "babel-helper-call-delegate": "6.24.1",
165 + "babel-helper-get-function-arity": "6.24.1",
166 + "babel-runtime": "6.26.0",
167 + "babel-template": "6.26.0",
168 + "babel-traverse": "6.26.0",
169 + "babel-types": "6.26.0"
170 + }
171 + },
172 + "babel-plugin-transform-es2015-shorthand-properties": {
173 + "version": "6.24.1",
174 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
175 + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
176 + "requires": {
177 + "babel-runtime": "6.26.0",
178 + "babel-types": "6.26.0"
179 + }
180 + },
181 + "babel-plugin-transform-es2015-spread": {
182 + "version": "6.22.0",
183 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
184 + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
185 + "requires": {
186 + "babel-runtime": "6.26.0"
187 + }
188 + },
189 + "babel-plugin-transform-es2015-template-literals": {
190 + "version": "6.22.0",
191 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
192 + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
193 + "requires": {
194 + "babel-runtime": "6.26.0"
195 + }
196 + },
197 + "babel-preset-es2040": {
198 + "version": "1.1.1",
199 + "resolved": "https://registry.npmjs.org/babel-preset-es2040/-/babel-preset-es2040-1.1.1.tgz",
200 + "integrity": "sha1-QIzDNyRwggXHgGZ7kw+njfW8j5Q=",
201 + "requires": {
202 + "babel-plugin-check-es2015-constants": "6.22.0",
203 + "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
204 + "babel-plugin-transform-es2015-block-scoping": "6.26.0",
205 + "babel-plugin-transform-es2015-computed-properties": "6.24.1",
206 + "babel-plugin-transform-es2015-destructuring": "6.23.0",
207 + "babel-plugin-transform-es2015-parameters": "6.24.1",
208 + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
209 + "babel-plugin-transform-es2015-spread": "6.22.0",
210 + "babel-plugin-transform-es2015-template-literals": "6.22.0"
211 + }
212 + },
213 + "babel-register": {
214 + "version": "6.26.0",
215 + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
216 + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
217 + "requires": {
218 + "babel-core": "6.26.0",
219 + "babel-runtime": "6.26.0",
220 + "core-js": "2.5.1",
221 + "home-or-tmp": "2.0.0",
222 + "lodash": "4.17.4",
223 + "mkdirp": "0.5.1",
224 + "source-map-support": "0.4.18"
225 + }
226 + },
227 + "babel-runtime": {
228 + "version": "6.26.0",
229 + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
230 + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
231 + "requires": {
232 + "core-js": "2.5.1",
233 + "regenerator-runtime": "0.11.0"
234 + }
235 + },
236 + "babel-template": {
237 + "version": "6.26.0",
238 + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
239 + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
240 + "requires": {
241 + "babel-runtime": "6.26.0",
242 + "babel-traverse": "6.26.0",
243 + "babel-types": "6.26.0",
244 + "babylon": "6.18.0",
245 + "lodash": "4.17.4"
246 + }
247 + },
248 + "babel-traverse": {
249 + "version": "6.26.0",
250 + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
251 + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
252 + "requires": {
253 + "babel-code-frame": "6.26.0",
254 + "babel-messages": "6.23.0",
255 + "babel-runtime": "6.26.0",
256 + "babel-types": "6.26.0",
257 + "babylon": "6.18.0",
258 + "debug": "2.6.9",
259 + "globals": "9.18.0",
260 + "invariant": "2.2.2",
261 + "lodash": "4.17.4"
262 + }
263 + },
264 + "babel-types": {
265 + "version": "6.26.0",
266 + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
267 + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
268 + "requires": {
269 + "babel-runtime": "6.26.0",
270 + "esutils": "2.0.2",
271 + "lodash": "4.17.4",
272 + "to-fast-properties": "1.0.3"
273 + }
274 + },
275 + "babylon": {
276 + "version": "6.18.0",
277 + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
278 + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
279 + },
280 + "balanced-match": {
281 + "version": "1.0.0",
282 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
283 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
284 + },
285 + "brace-expansion": {
286 + "version": "1.1.8",
287 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
288 + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
289 + "requires": {
290 + "balanced-match": "1.0.0",
291 + "concat-map": "0.0.1"
292 + }
293 + },
294 + "browser-split": {
295 + "version": "0.0.1",
296 + "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.1.tgz",
297 + "integrity": "sha1-ewl1dPjj6tYG+0Zk5krf3aKYGpM="
298 + },
299 + "bulk-require": {
300 + "version": "1.0.1",
301 + "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz",
302 + "integrity": "sha1-yz0DnmmBOaRE/FdLJh1rOyz0TIk=",
303 + "requires": {
304 + "glob": "7.1.2"
305 + }
306 + },
307 + "chalk": {
308 + "version": "1.1.3",
309 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
310 + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
311 + "requires": {
312 + "ansi-styles": "2.2.1",
313 + "escape-string-regexp": "1.0.5",
314 + "has-ansi": "2.0.0",
315 + "strip-ansi": "3.0.1",
316 + "supports-color": "2.0.0"
317 + }
318 + },
319 + "class-list": {
320 + "version": "0.1.1",
321 + "resolved": "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz",
322 + "integrity": "sha1-m5dFGSxBebXaCg12M2WOPHDXlss=",
323 + "requires": {
324 + "indexof": "0.0.1"
325 + }
326 + },
327 + "concat-map": {
328 + "version": "0.0.1",
329 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
330 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
331 + },
332 + "convert-source-map": {
333 + "version": "1.5.0",
334 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
335 + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU="
336 + },
337 + "core-js": {
338 + "version": "2.5.1",
339 + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
340 + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs="
341 + },
342 + "core-util-is": {
343 + "version": "1.0.2",
344 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
345 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
346 + },
347 + "debug": {
348 + "version": "2.6.9",
349 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
350 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
351 + "requires": {
352 + "ms": "2.0.0"
353 + }
354 + },
355 + "depnest": {
356 + "version": "1.3.0",
357 + "resolved": "https://registry.npmjs.org/depnest/-/depnest-1.3.0.tgz",
358 + "integrity": "sha1-FL2KNh30RdLTT37LNi1sdFcoiVk=",
359 + "requires": {
360 + "es2040": "1.2.6",
361 + "libnested": "1.2.1"
362 + }
363 + },
364 + "detect-indent": {
365 + "version": "4.0.0",
366 + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
367 + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
368 + "requires": {
369 + "repeating": "2.0.1"
370 + }
371 + },
372 + "es2040": {
373 + "version": "1.2.6",
374 + "resolved": "https://registry.npmjs.org/es2040/-/es2040-1.2.6.tgz",
375 + "integrity": "sha512-+sAm7CSGH2+0NMZqm63huevZVoyk8OwF8lVIdwPcNtvZxX3YIITGiui8bfLYS8oNcgCgHNYO+QsgMafwo1OWwg==",
376 + "requires": {
377 + "babel-core": "6.26.0",
378 + "babel-preset-es2040": "1.1.1",
379 + "through2": "2.0.3"
380 + }
381 + },
382 + "escape-string-regexp": {
383 + "version": "1.0.5",
384 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
385 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
386 + },
387 + "esutils": {
388 + "version": "2.0.2",
389 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
390 + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
391 + },
392 + "fs.realpath": {
393 + "version": "1.0.0",
394 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
395 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
396 + },
397 + "glob": {
398 + "version": "7.1.2",
399 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
400 + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
401 + "requires": {
402 + "fs.realpath": "1.0.0",
403 + "inflight": "1.0.6",
404 + "inherits": "2.0.3",
405 + "minimatch": "3.0.4",
406 + "once": "1.4.0",
407 + "path-is-absolute": "1.0.1"
408 + }
409 + },
410 + "globals": {
411 + "version": "9.18.0",
412 + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
413 + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
414 + },
415 + "has-ansi": {
416 + "version": "2.0.0",
417 + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
418 + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
419 + "requires": {
420 + "ansi-regex": "2.1.1"
421 + }
422 + },
423 + "home-or-tmp": {
424 + "version": "2.0.0",
425 + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
426 + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
427 + "requires": {
428 + "os-homedir": "1.0.2",
429 + "os-tmpdir": "1.0.2"
430 + }
431 + },
432 + "html-element": {
433 + "version": "1.3.0",
434 + "resolved": "https://registry.npmjs.org/html-element/-/html-element-1.3.0.tgz",
435 + "integrity": "sha1-117LXa6HSx3mCgv4eUu9GYTQ8gk=",
436 + "requires": {
437 + "class-list": "0.1.1"
438 + }
439 + },
440 + "hyperlightbox": {
441 + "version": "1.0.0",
442 + "resolved": "https://registry.npmjs.org/hyperlightbox/-/hyperlightbox-1.0.0.tgz",
443 + "integrity": "sha1-92crMRRJ4S3jcDJTGavFNps/iMk=",
444 + "requires": {
445 + "hyperscript": "1.4.7"
446 + }
447 + },
448 + "hyperscript": {
449 + "version": "1.4.7",
450 + "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-1.4.7.tgz",
451 + "integrity": "sha1-HyPYgPhDbKrCW5GnrDl0e4mnJhg=",
452 + "requires": {
453 + "browser-split": "0.0.0",
454 + "class-list": "0.1.1",
455 + "html-element": "1.3.0"
456 + },
457 + "dependencies": {
458 + "browser-split": {
459 + "version": "0.0.0",
460 + "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz",
461 + "integrity": "sha1-QUGcrvdpdVkp3VGJZ9PuwKYmJ3E="
462 + }
463 + }
464 + },
465 + "indexof": {
466 + "version": "0.0.1",
467 + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
468 + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
469 + },
470 + "inflight": {
471 + "version": "1.0.6",
472 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
473 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
474 + "requires": {
475 + "once": "1.4.0",
476 + "wrappy": "1.0.2"
477 + }
478 + },
479 + "inherits": {
480 + "version": "2.0.3",
481 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
482 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
483 + },
484 + "invariant": {
485 + "version": "2.2.2",
486 + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
487 + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
488 + "requires": {
489 + "loose-envify": "1.3.1"
490 + }
491 + },
492 + "ip": {
493 + "version": "1.1.5",
494 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
495 + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
496 + },
497 + "is-finite": {
498 + "version": "1.0.2",
499 + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
500 + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
501 + "requires": {
502 + "number-is-nan": "1.0.1"
503 + }
504 + },
505 + "is-valid-domain": {
506 + "version": "0.0.5",
507 + "resolved": "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.0.5.tgz",
508 + "integrity": "sha1-SOcDGfy0MAkjbpazf5hDiJzntRM="
509 + },
510 + "isarray": {
511 + "version": "1.0.0",
512 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
513 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
514 + },
515 + "js-tokens": {
516 + "version": "3.0.2",
517 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
518 + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
519 + },
520 + "jsesc": {
521 + "version": "1.3.0",
522 + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
523 + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
524 + },
525 + "json5": {
526 + "version": "0.5.1",
527 + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
528 + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
529 + },
530 + "libnested": {
531 + "version": "1.2.1",
532 + "resolved": "https://registry.npmjs.org/libnested/-/libnested-1.2.1.tgz",
533 + "integrity": "sha1-pwo2mxsPqQd0I0TwRfOhHzSv9R8="
534 + },
535 + "lodash": {
536 + "version": "4.17.4",
537 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
538 + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
539 + },
540 + "loose-envify": {
541 + "version": "1.3.1",
542 + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
543 + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
544 + "requires": {
545 + "js-tokens": "3.0.2"
546 + }
547 + },
548 + "minimatch": {
549 + "version": "3.0.4",
550 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
551 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
552 + "requires": {
553 + "brace-expansion": "1.1.8"
554 + }
555 + },
556 + "minimist": {
557 + "version": "0.0.8",
558 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
559 + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
560 + },
561 + "mkdirp": {
562 + "version": "0.5.1",
563 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
564 + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
565 + "requires": {
566 + "minimist": "0.0.8"
567 + }
568 + },
569 + "ms": {
570 + "version": "2.0.0",
571 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
572 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
573 + },
574 + "mutant": {
575 + "version": "3.21.2",
576 + "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.21.2.tgz",
577 + "integrity": "sha1-Ez3McBQG5vHQJZHiOjVc+ufIy1M=",
578 + "requires": {
579 + "browser-split": "0.0.1",
580 + "xtend": "4.0.1"
581 + }
582 + },
583 + "number-is-nan": {
584 + "version": "1.0.1",
585 + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
586 + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
587 + },
588 + "obv": {
589 + "version": "0.0.1",
590 + "resolved": "https://registry.npmjs.org/obv/-/obv-0.0.1.tgz",
591 + "integrity": "sha1-yyNhBjQVNvDaxIFeBnCCIcrX+14="
592 + },
593 + "once": {
594 + "version": "1.4.0",
595 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
596 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
597 + "requires": {
598 + "wrappy": "1.0.2"
599 + }
600 + },
601 + "os-homedir": {
602 + "version": "1.0.2",
603 + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
604 + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
605 + },
606 + "os-tmpdir": {
607 + "version": "1.0.2",
608 + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
609 + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
610 + },
611 + "path-is-absolute": {
612 + "version": "1.0.1",
613 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
614 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
615 + },
616 + "private": {
617 + "version": "0.1.8",
618 + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
619 + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
620 + },
621 + "process-nextick-args": {
622 + "version": "1.0.7",
623 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
624 + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
625 + },
626 + "pull-defer": {
627 + "version": "0.2.2",
628 + "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz",
629 + "integrity": "sha1-CIew/7MK8ypW2+z6csFnInHwexM="
630 + },
631 + "pull-pause": {
632 + "version": "0.0.0",
633 + "resolved": "https://registry.npmjs.org/pull-pause/-/pull-pause-0.0.0.tgz",
634 + "integrity": "sha1-EBpijXF+Gd+/mADp3sjyXTBGGWk="
635 + },
636 + "pull-scroll": {
637 + "version": "1.0.9",
638 + "resolved": "https://registry.npmjs.org/pull-scroll/-/pull-scroll-1.0.9.tgz",
639 + "integrity": "sha1-B9FUjju7K0ALFcV/brjKQBKm/ik=",
640 + "requires": {
641 + "obv": "0.0.1",
642 + "pull-pause": "0.0.0",
643 + "pull-stream": "3.6.1"
644 + }
645 + },
646 + "pull-stream": {
647 + "version": "3.6.1",
648 + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.1.tgz",
649 + "integrity": "sha1-xcKuSlEkbv7rzGXAQSo9clqSzgA="
650 + },
651 + "readable-stream": {
652 + "version": "2.3.3",
653 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
654 + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
655 + "requires": {
656 + "core-util-is": "1.0.2",
657 + "inherits": "2.0.3",
658 + "isarray": "1.0.0",
659 + "process-nextick-args": "1.0.7",
660 + "safe-buffer": "5.1.1",
661 + "string_decoder": "1.0.3",
662 + "util-deprecate": "1.0.2"
663 + }
664 + },
665 + "regenerator-runtime": {
666 + "version": "0.11.0",
667 + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
668 + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A=="
669 + },
670 + "repeating": {
671 + "version": "2.0.1",
672 + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
673 + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
674 + "requires": {
675 + "is-finite": "1.0.2"
676 + }
677 + },
678 + "safe-buffer": {
679 + "version": "5.1.1",
680 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
681 + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
682 + },
683 + "slash": {
684 + "version": "1.0.0",
685 + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
686 + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
687 + },
688 + "source-map": {
689 + "version": "0.5.7",
690 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
691 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
692 + },
693 + "source-map-support": {
694 + "version": "0.4.18",
695 + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
696 + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
697 + "requires": {
698 + "source-map": "0.5.7"
699 + }
700 + },
701 + "ssb-ref": {
702 + "version": "2.7.1",
703 + "resolved": "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.7.1.tgz",
704 + "integrity": "sha1-XU7/xUXsD/1/wVuieCmmQLiir7o=",
705 + "requires": {
706 + "ip": "1.1.5",
707 + "is-valid-domain": "0.0.5"
708 + }
709 + },
710 + "string_decoder": {
711 + "version": "1.0.3",
712 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
713 + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
714 + "requires": {
715 + "safe-buffer": "5.1.1"
716 + }
717 + },
718 + "strip-ansi": {
719 + "version": "3.0.1",
720 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
721 + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
722 + "requires": {
723 + "ansi-regex": "2.1.1"
724 + }
725 + },
726 + "supports-color": {
727 + "version": "2.0.0",
728 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
729 + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
730 + },
731 + "through2": {
732 + "version": "2.0.3",
733 + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
734 + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
735 + "requires": {
736 + "readable-stream": "2.3.3",
737 + "xtend": "4.0.1"
738 + }
739 + },
740 + "to-fast-properties": {
741 + "version": "1.0.3",
742 + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
743 + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
744 + },
745 + "trim-right": {
746 + "version": "1.0.1",
747 + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
748 + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
749 + },
750 + "util-deprecate": {
751 + "version": "1.0.2",
752 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
753 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
754 + },
755 + "wrappy": {
756 + "version": "1.0.2",
757 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
758 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
759 + },
760 + "xtend": {
761 + "version": "4.0.1",
762 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
763 + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
764 + }
765 + }
766 +}
package.jsonView
@@ -1,0 +1,27 @@
1 +{
2 + "name": "patch-bookmarks",
3 + "version": "1.0.0",
4 + "description": "Bookmarks plugin for patchbay",
5 + "main": "index.js",
6 + "scripts": {
7 + "test": "node test.js"
8 + },
9 + "repository": {
10 + "type": "git",
11 + "url": "git@github.com:wittjosiah/patch-bookmarks.git"
12 + },
13 + "keywords": [],
14 + "author": "wittjosiah",
15 + "license": "AGPL-3.0",
16 + "dependencies": {
17 + "bulk-require": "^1.0.1",
18 + "depnest": "^1.3.0",
19 + "hyperlightbox": "^1.0.0",
20 + "lodash": "^4.17.4",
21 + "mutant": "^3.21.2",
22 + "pull-defer": "^0.2.2",
23 + "pull-scroll": "^1.0.9",
24 + "pull-stream": "^3.6.1",
25 + "ssb-ref": "^2.7.1"
26 + }
27 +}

Built with git-ssb-web