From 5f5a7880a661df9accb5a4483c18724b38535f0b Mon Sep 17 00:00:00 2001 From: bimlas Date: Mon, 19 Mar 2018 20:37:58 +0100 Subject: [PATCH 01/36] Fix tag filtering in search entry Some issues introduced in #954 (https://github.com/BoostIO/Boostnote/pull/954#issuecomment-336344915): - search by `#tag1 #tag2` returns the results of only `#tag2` - search by `#tag1 content` is as same as AND search by `#tag1 content` (and `#tag1` is regarded a word, not a tag) - search by `content #tag1` returns the results of only `#tag1` This commit fixing these: - search by `#tag1 #tag2` returns the results of only `#tag2` ![screencast](https://i.imgur.com/SjhQIhl.gif) - search by `#tag1 content` is as same as AND search by `#tag1 content` (and `#tag1` is regarded a word, not a tag) ![screencast](https://i.imgur.com/G0Tmd8c.gif) - search by `content #tag1` returns the results of only `#tag1` ![screencast](https://i.imgur.com/5MrMbE6.gif) NOTE: the examples works without `#` character too, because `findByWord()` checks the tags too. --- browser/lib/search.js | 7 ++++--- tests/lib/search-test.js | 7 +++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/browser/lib/search.js b/browser/lib/search.js index dadc9a29..d0cb376c 100644 --- a/browser/lib/search.js +++ b/browser/lib/search.js @@ -4,11 +4,12 @@ export default function searchFromNotes (notes, search) { if (search.trim().length === 0) return [] const searchBlocks = search.split(' ').filter(block => { return block !== '' }) - let foundNotes = findByWord(notes, searchBlocks[0]) + let foundNotes = notes searchBlocks.forEach((block) => { - foundNotes = findByWord(foundNotes, block) if (block.match(/^#.+/)) { - foundNotes = foundNotes.concat(findByTag(notes, block)) + foundNotes = findByTag(foundNotes, block) + } else { + foundNotes = findByWord(foundNotes, block) } }) return foundNotes diff --git a/tests/lib/search-test.js b/tests/lib/search-test.js index 1550a08f..c0cbf6b7 100644 --- a/tests/lib/search-test.js +++ b/tests/lib/search-test.js @@ -20,16 +20,19 @@ test.before(t => { notes = [note1, note2, note3] }) -test('it can find notes by tags or words', t => { +test('it can find notes by tags and words', t => { // [input, expected content (Array)] const testCases = [ ['#tag1', [note1.content, note2.content, note3.content]], ['#tag1 #tag2', [note2.content]], + ['#tag2 #tag1', [note2.content]], ['#tag1 #tag2 #tag3', []], ['content1', [note1.content, note2.content]], ['content1 content2', [note2.content]], ['content1 content2 content3', []], - ['#content4', [note3.content]] + ['#content4', [note3.content]], + ['#tag2 content1', [note2.content]], + ['content1 #tag2', [note2.content]] ] testCases.forEach((testCase) => { From aae584106a6c31b038bebe3f7aab54699b7a08a3 Mon Sep 17 00:00:00 2001 From: bimlas Date: Tue, 20 Mar 2018 09:35:39 +0100 Subject: [PATCH 02/36] Look for tags in context too The previous commit broke this behaviour. Looking for a tag means the union of **tags** AND **tag in content**, so it has to search in the in currently found notes separetely, thus it has to clone the list first (`.slice(0)`). --- browser/lib/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/lib/search.js b/browser/lib/search.js index d0cb376c..13d7c736 100644 --- a/browser/lib/search.js +++ b/browser/lib/search.js @@ -7,7 +7,7 @@ export default function searchFromNotes (notes, search) { let foundNotes = notes searchBlocks.forEach((block) => { if (block.match(/^#.+/)) { - foundNotes = findByTag(foundNotes, block) + foundNotes = findByTag(foundNotes.slice(0), block).concat(findByWord(foundNotes.slice(0), block)) } else { foundNotes = findByWord(foundNotes, block) } From 4f9a0b00403630181d01ebed8ee849952e246e5b Mon Sep 17 00:00:00 2001 From: bimlas Date: Tue, 20 Mar 2018 19:01:09 +0100 Subject: [PATCH 03/36] Merge `findByTag()` and `findByWord()` into one Both looked for word in tags and content too, the only difference is when searched for `#tag`, the prefix (`#`) was truncated before compared with list of tags. --- browser/lib/search.js | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/browser/lib/search.js b/browser/lib/search.js index 13d7c736..46d47677 100644 --- a/browser/lib/search.js +++ b/browser/lib/search.js @@ -6,38 +6,28 @@ export default function searchFromNotes (notes, search) { let foundNotes = notes searchBlocks.forEach((block) => { - if (block.match(/^#.+/)) { - foundNotes = findByTag(foundNotes.slice(0), block).concat(findByWord(foundNotes.slice(0), block)) - } else { - foundNotes = findByWord(foundNotes, block) - } + foundNotes = findByWordOrTag(foundNotes, block) }) return foundNotes } -function findByTag (notes, block) { - const tag = block.match(/#(.+)/)[1] - const regExp = new RegExp(_.escapeRegExp(tag), 'i') - return notes.filter((note) => { - if (!_.isArray(note.tags)) return false - return note.tags.some((_tag) => { - return _tag.match(regExp) - }) - }) -} - -function findByWord (notes, block) { - const regExp = new RegExp(_.escapeRegExp(block), 'i') +function findByWordOrTag (notes, block) { + let tag = block + if (tag.match(/^#.+/)) { + tag = tag.match(/#(.+)/)[1] + } + const tagRegExp = new RegExp(_.escapeRegExp(tag), 'i') + const wordRegExp = new RegExp(_.escapeRegExp(block), 'i') return notes.filter((note) => { if (_.isArray(note.tags) && note.tags.some((_tag) => { - return _tag.match(regExp) + return _tag.match(tagRegExp) })) { return true } if (note.type === 'SNIPPET_NOTE') { - return note.description.match(regExp) + return note.description.match(wordRegExp) } else if (note.type === 'MARKDOWN_NOTE') { - return note.content.match(regExp) + return note.content.match(wordRegExp) } return false }) From 145ae10a793fc59651a4323c1f9a8c862c32e5c6 Mon Sep 17 00:00:00 2001 From: bimlas Date: Wed, 21 Mar 2018 20:00:02 +0100 Subject: [PATCH 04/36] Add test: find tags without hash symbol Searching has to find tags without hash symbol too (`tag` instead of `#tag`). --- tests/lib/search-test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/lib/search-test.js b/tests/lib/search-test.js index c0cbf6b7..2e288d26 100644 --- a/tests/lib/search-test.js +++ b/tests/lib/search-test.js @@ -22,7 +22,7 @@ test.before(t => { test('it can find notes by tags and words', t => { // [input, expected content (Array)] - const testCases = [ + const testWithTags = [ ['#tag1', [note1.content, note2.content, note3.content]], ['#tag1 #tag2', [note2.content]], ['#tag2 #tag1', [note2.content]], @@ -34,7 +34,11 @@ test('it can find notes by tags and words', t => { ['#tag2 content1', [note2.content]], ['content1 #tag2', [note2.content]] ] + const testWithTagsWithoutHash = testWithTags.map(function (testCase) { + return [testCase[0].replace(/#/g, ''), testCase[1]] + }) + const testCases = testWithTags.concat(testWithTagsWithoutHash) testCases.forEach((testCase) => { const [input, expectedContents] = testCase const results = searchFromNotes(notes, input) From cf776088e6294a54fc3e5bdbdc5328b3844670fe Mon Sep 17 00:00:00 2001 From: ceh Date: Thu, 22 Mar 2018 17:26:59 +0100 Subject: [PATCH 05/36] Fixes #1723 --- browser/components/CodeEditor.js | 13 +++++++++---- browser/components/MarkdownPreview.js | 3 +++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index eeb1a930..da10ec43 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -275,11 +275,16 @@ export default class CodeEditor extends React.Component { handleDropImage (e) { e.preventDefault() - const imagePath = e.dataTransfer.files[0].path - const filename = path.basename(imagePath) + const ValidImageTypes = ['image/gif', 'image/jpeg', 'image/png'] - copyImage(imagePath, this.props.storageKey).then((imagePath) => { - const imageMd = `![${filename}](${path.join('/:storage', imagePath)})` + const file = e.dataTransfer.files[0] + const filePath = file.path + const filename = path.basename(filePath) + const fileType = file['type'] + + copyImage(filePath, this.props.storageKey).then((imagePath) => { + var showPreview = ValidImageTypes.indexOf(fileType) > 0 + const imageMd = `${showPreview ? '!' : ''}[${filename}](${path.join('/:storage', imagePath)})` this.insertImageMd(imageMd) }) } diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index bd5d3939..f5ed2526 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -394,6 +394,9 @@ export default class MarkdownPreview extends React.Component { _.forEach(this.refs.root.contentWindow.document.querySelectorAll('a'), (el) => { this.fixDecodedURI(el) + el.href = this.markdown.normalizeLinkText(el.href) + if (!/\/:storage/.test(el.href)) return + el.href = `file:///${this.markdown.normalizeLinkText(path.join(storagePath, 'images', path.basename(el.href)))}` el.addEventListener('click', this.anchorClickHandler) }) From bdb906c26d1288bdb4d891a85d8d926c19bbdd25 Mon Sep 17 00:00:00 2001 From: yosmoc Date: Fri, 23 Mar 2018 22:24:53 +0100 Subject: [PATCH 06/36] remove broken note from note list When .cson is broken and catch error in processing this file, undefined is collected in notes. remved broken note(s) from notes list. --- browser/main/lib/dataApi/resolveStorageNotes.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/browser/main/lib/dataApi/resolveStorageNotes.js b/browser/main/lib/dataApi/resolveStorageNotes.js index 5684f06e..fa3f19ae 100644 --- a/browser/main/lib/dataApi/resolveStorageNotes.js +++ b/browser/main/lib/dataApi/resolveStorageNotes.js @@ -27,9 +27,12 @@ function resolveStorageNotes (storage) { data.storage = storage.key return data } catch (err) { - console.error(notePath) + console.error(`error on note path: ${notePath}, error: ${err}`) } }) + .filter(function filterOnlyNoteObject (noteObj) { + return typeof noteObj === 'object' + }) return Promise.resolve(notes) } From 5ee4237510ba9c1e4924f202e99e788ce2132e2a Mon Sep 17 00:00:00 2001 From: wAuner <18383180+wAuner@users.noreply.github.com> Date: Sat, 24 Mar 2018 14:48:34 +0100 Subject: [PATCH 07/36] fix incorrect app closing for linux mint cinnamon excluded the cinnamon desktop for the macOS-like behavior which closes the window, but does not shutdown the app processes --- lib/main-window.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main-window.js b/lib/main-window.js index 4ac60797..86b85a24 100644 --- a/lib/main-window.js +++ b/lib/main-window.js @@ -40,7 +40,7 @@ mainWindow.webContents.sendInputEvent({ keyCode: '\u0008' }) -if (process.platform === 'darwin' || process.env.DESKTOP_SESSION === 'cinnamon') { +if (process.platform === 'darwin') { mainWindow.on('close', function (e) { e.preventDefault() if (mainWindow.isFullScreen()) { From 2a23d19321d93b35f7326f088f264f663b0fa661 Mon Sep 17 00:00:00 2001 From: bimlas Date: Sat, 24 Mar 2018 10:56:01 +0100 Subject: [PATCH 08/36] Add selector to sort tags by counter or alphabetically ![screencast](https://i.imgur.com/XUkTyRe.gif) --- .boostnoterc.sample | 1 + browser/main/SideNav/SideNav.styl | 35 ++++++++++++++++++++++ browser/main/SideNav/index.js | 40 ++++++++++++++++++++++++-- browser/main/lib/ConfigManager.js | 1 + locales/en.json | 1 + locales/hu.json | 1 + tests/lib/boostnoterc/.boostnoterc.all | 1 + 7 files changed, 77 insertions(+), 3 deletions(-) diff --git a/.boostnoterc.sample b/.boostnoterc.sample index 8419061d..a7981f7f 100644 --- a/.boostnoterc.sample +++ b/.boostnoterc.sample @@ -23,6 +23,7 @@ "lineNumber": true }, "sortBy": "UPDATED_AT", + "sortTagsBy": "ALPHABETICAL", "ui": { "defaultNote": "ALWAYS_ASK", "disableDirectWrite": false, diff --git a/browser/main/SideNav/SideNav.styl b/browser/main/SideNav/SideNav.styl index a0ffb2e7..b5b6378b 100644 --- a/browser/main/SideNav/SideNav.styl +++ b/browser/main/SideNav/SideNav.styl @@ -8,6 +8,29 @@ display: flex flex-direction column +.control + user-select none + height $control-height + font-size 12px + line-height 25px + display flex + color $ui-inactive-text-color + +.control-sortTagsBy + flex 1 + padding-left 15px + +.control-sortTagsBy-select + appearance: none; + margin-left 5px + color $ui-inactive-text-color + padding 0 + border none + background-color transparent + outline none + cursor pointer + font-size 12px + .top padding-bottom 15px @@ -82,6 +105,10 @@ body[data-theme="white"] background-color #f9f9f9 color $ui-text-color + .control + background-color $ui-white-backgroundColor + border-color $ui-white-borderColor + body[data-theme="dark"] .root, .root--folded border-right 1px solid $ui-dark-borderColor @@ -91,7 +118,15 @@ body[data-theme="dark"] .top border-color $ui-dark-borderColor + .control + background-color $ui-dark-backgroundColor + border-color $ui-dark-borderColor + body[data-theme="solarized-dark"] .root, .root--folded background-color $ui-solarized-dark-backgroundColor border-right 1px solid $ui-solarized-dark-borderColor + + .control + background-color $ui-solarized-dark-backgroundColor + border-color $ui-solarized-dark-borderColor diff --git a/browser/main/SideNav/index.js b/browser/main/SideNav/index.js index c3ad11ce..c3739412 100644 --- a/browser/main/SideNav/index.js +++ b/browser/main/SideNav/index.js @@ -82,7 +82,7 @@ class SideNav extends React.Component { } SideNavComponent (isFolded, storageList) { - const { location, data } = this.props + const { location, data, config } = this.props const isHomeActive = !!location.pathname.match(/^\/home$/) const isStarredActive = !!location.pathname.match(/^\/starred$/) @@ -119,6 +119,21 @@ class SideNav extends React.Component {

{i18n.__('Tags')}

+
+
+ + +
+
{this.tagListComponent(data)}
@@ -129,10 +144,15 @@ class SideNav extends React.Component { } tagListComponent () { - const { data, location } = this.props - const tagList = _.sortBy(data.tagNoteMap.map((tag, name) => { + const { data, location, config } = this.props + let tagList = _.sortBy(data.tagNoteMap.map((tag, name) => { return { name, size: tag.size } }), ['name']) + if (config.sortTagsBy === 'COUNTER') { + tagList = _.sortBy(tagList, function (item) { + return 0 - item.size + }) + } return ( tagList.map(tag => { return ( @@ -159,6 +179,20 @@ class SideNav extends React.Component { router.push(`/tags/${name}`) } + handleSortTagsByChange (e) { + const { dispatch } = this.props + + const config = { + sortTagsBy: e.target.value + } + + ConfigManager.set(config) + dispatch({ + type: 'SET_CONFIG', + config + }) + } + emptyTrash (entries) { const { dispatch } = this.props const deletionPromises = entries.map((note) => { diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 4d67d4e7..59bd0704 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -16,6 +16,7 @@ export const DEFAULT_CONFIG = { listWidth: 280, navWidth: 200, sortBy: 'UPDATED_AT', // 'CREATED_AT', 'UPDATED_AT', 'APLHABETICAL' + sortTagsBy: 'ALPHABETICAL', // 'ALPHABETICAL', 'COUNTER' listStyle: 'DEFAULT', // 'DEFAULT', 'SMALL' amaEnabled: true, hotkey: { diff --git a/locales/en.json b/locales/en.json index 8a4a8eff..b8250ea7 100644 --- a/locales/en.json +++ b/locales/en.json @@ -111,6 +111,7 @@ "Updated": "Updated", "Created": "Created", "Alphabetically": "Alphabetically", + "Counter": "Counter", "Default View": "Default View", "Compressed View": "Compressed View", "Search": "Search", diff --git a/locales/hu.json b/locales/hu.json index 37c19e48..74cd5d04 100644 --- a/locales/hu.json +++ b/locales/hu.json @@ -111,6 +111,7 @@ "Updated": "Módosítás", "Created": "Létrehozás", "Alphabetically": "Ábécé sorrendben", + "Counter": "Számláló", "Default View": "Alapértelmezett Nézet", "Compressed View": "Tömörített Nézet", "Search": "Keresés", diff --git a/tests/lib/boostnoterc/.boostnoterc.all b/tests/lib/boostnoterc/.boostnoterc.all index 8419061d..a7981f7f 100644 --- a/tests/lib/boostnoterc/.boostnoterc.all +++ b/tests/lib/boostnoterc/.boostnoterc.all @@ -23,6 +23,7 @@ "lineNumber": true }, "sortBy": "UPDATED_AT", + "sortTagsBy": "ALPHABETICAL", "ui": { "defaultNote": "ALWAYS_ASK", "disableDirectWrite": false, From 3b0f664a3bcb63231508c012068081300a7c6ac7 Mon Sep 17 00:00:00 2001 From: azu Date: Sun, 25 Mar 2018 00:33:57 +0900 Subject: [PATCH 09/36] fix: fix crash on /searched Add routing for search word: - `/searched/:searchword` Restore the state from the `:searchword` params. --- browser/main/NoteList/index.js | 6 ++++-- browser/main/TopBar/index.js | 15 ++++++++++++--- browser/main/index.js | 4 +++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index e97f7aef..9b9f9b1c 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -326,8 +326,10 @@ class NoteList extends React.Component { } if (location.pathname.match(/\/searched/)) { - const searchInputText = document.getElementsByClassName('searchInput')[0].value - if (searchInputText === '') { + const searchInputText = params.searchword + const allNotes = data.noteMap.map((note) => note) + this.contextNotes = allNotes + if (searchInputText === undefined || searchInputText === '') { return this.sortByPin(this.contextNotes) } return searchFromNotes(this.contextNotes, searchInputText) diff --git a/browser/main/TopBar/index.js b/browser/main/TopBar/index.js index 86cc6b2a..ae4d9664 100644 --- a/browser/main/TopBar/index.js +++ b/browser/main/TopBar/index.js @@ -28,6 +28,14 @@ class TopBar extends React.Component { } componentDidMount () { + const { params } = this.props + const searchWord = params.searchword + if (searchWord !== undefined) { + this.setState({ + search: searchWord, + isSearching: true + }) + } ee.on('top:focus-search', this.focusSearchHandler) ee.on('code:init', this.codeInitHandler) } @@ -97,9 +105,10 @@ class TopBar extends React.Component { this.setState({ isConfirmTranslation: true }) - router.push('/searched') + const keyword = this.refs.searchInput.value + router.push(`/searched/${encodeURIComponent(keyword)}`) this.setState({ - search: this.refs.searchInput.value + search: keyword }) } } @@ -108,7 +117,7 @@ class TopBar extends React.Component { const { router } = this.context const keyword = this.refs.searchInput.value if (this.state.isAlphabet || this.state.isConfirmTranslation) { - router.push('/searched') + router.push(`/searched/${encodeURIComponent(keyword)}`) } else { e.preventDefault() } diff --git a/browser/main/index.js b/browser/main/index.js index d9c7456e..ae906538 100644 --- a/browser/main/index.js +++ b/browser/main/index.js @@ -64,7 +64,9 @@ ReactDOM.render(( - + + + From 333f0be879ac2d19595e3247f334f58839f5d977 Mon Sep 17 00:00:00 2001 From: Frank Kanis Date: Sat, 24 Mar 2018 20:49:04 +0100 Subject: [PATCH 10/36] Clean up trash context menu --- browser/main/NoteList/index.js | 71 ++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index e97f7aef..99649766 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -481,50 +481,53 @@ class NoteList extends React.Component { const openBlogLabel = i18n.__('Open Blog') const menu = new Menu() - if (!location.pathname.match(/\/starred|\/trash/)) { - menu.append(new MenuItem({ - label: pinLabel, - click: this.pinToTop - })) - } if (location.pathname.match(/\/trash/)) { menu.append(new MenuItem({ label: restoreNote, click: this.restoreNote })) - } - - menu.append(new MenuItem({ - label: deleteLabel, - click: this.deleteNote - })) - menu.append(new MenuItem({ - label: cloneNote, - click: this.cloneNote.bind(this) - })) - menu.append(new MenuItem({ - label: copyNoteLink, - click: this.copyNoteLink(note) - })) - if (note.type === 'MARKDOWN_NOTE') { - if (note.blog && note.blog.blogLink && note.blog.blogId) { + menu.append(new MenuItem({ + label: deleteLabel, + click: this.deleteNote + })) + } else { + if (!location.pathname.match(/\/starred/)) { menu.append(new MenuItem({ - label: updateLabel, - click: this.publishMarkdown.bind(this) - })) - menu.append(new MenuItem({ - label: openBlogLabel, - click: () => this.openBlog.bind(this)(note) - })) - } else { - menu.append(new MenuItem({ - label: publishLabel, - click: this.publishMarkdown.bind(this) + label: pinLabel, + click: this.pinToTop })) } + menu.append(new MenuItem({ + label: deleteLabel, + click: this.deleteNote + })) + menu.append(new MenuItem({ + label: cloneNote, + click: this.cloneNote.bind(this) + })) + menu.append(new MenuItem({ + label: copyNoteLink, + click: this.copyNoteLink(note) + })) + if (note.type === 'MARKDOWN_NOTE') { + if (note.blog && note.blog.blogLink && note.blog.blogId) { + menu.append(new MenuItem({ + label: updateLabel, + click: this.publishMarkdown.bind(this) + })) + menu.append(new MenuItem({ + label: openBlogLabel, + click: () => this.openBlog.bind(this)(note) + })) + } else { + menu.append(new MenuItem({ + label: publishLabel, + click: this.publishMarkdown.bind(this) + })) + } + } } - menu.popup() } From 71078dea4fc1e979a1ef6bcad50ce7786e8a2214 Mon Sep 17 00:00:00 2001 From: Luiz Date: Sat, 24 Mar 2018 17:41:48 -0300 Subject: [PATCH 11/36] Brazilian Portuguese localization --- locales/pt-BR.json | 152 ++++++++++++++++++++++++++++++++ locales/{pt.json => pt-PT.json} | 0 2 files changed, 152 insertions(+) create mode 100644 locales/pt-BR.json rename locales/{pt.json => pt-PT.json} (100%) diff --git a/locales/pt-BR.json b/locales/pt-BR.json new file mode 100644 index 00000000..0290020c --- /dev/null +++ b/locales/pt-BR.json @@ -0,0 +1,152 @@ +{ + "Notes": "Notas", + "Tags": "Etiquetas", + "Preferences": "Preferências", + "Make a note": "Fazer uma nota", + "Ctrl": "Ctrl", + "Ctrl(^)": "Ctrl", + "to create a new note": "para criar uma nova nota", + "Toggle Mode": "Modo de alternância", + "Trash": "Lixeira", + "MODIFICATION DATE": "DATA DE MODIFICAÇÃO", + "Words": "Palavras", + "Letters": "Letras", + "STORAGE": "ARMAZENAMENTO", + "FOLDER": "PASTA", + "CREATION DATE": "DATA DE CRIAÇÃO", + "NOTE LINK": "VÍNCULO DA NOTA", + ".md": ".md", + ".txt": ".txt", + ".html": ".html", + "Print": "Imprimir", + "Your preferences for Boostnote": "Suas preferências para o Boostnote", + "Storages": "Aramazenamentos", + "Add Storage Location": "Adicionar Local de Armazenamento", + "Add Folder": "Adicionar Pasta", + "Open Storage folder": "Abrir Local de Armazenamento", + "Unlink": "Desvincular", + "Edit": "Editar", + "Delete": "Apagar", + "Interface": "Interface", + "Interface Theme": "Tema da Interface", + "Default": "Padrão", + "White": "Branco", + "Solarized Dark": "Escuro Solarizado", + "Dark": "Escuro", + "Show a confirmation dialog when deleting notes": "Mostrar um diálogo de confirmação ao escluir notas", + "Editor Theme": "Tema do Editor", + "Editor Font Size": "Tamanho da Fonte do Editor", + "Editor Font Family": "Família da Fonte do Editor", + "Editor Indent Style": "Estílo de Indentação do Editor", + "Spaces": "Espaços", + "Tabs": "Tabulação", + "Switch to Preview": "Mudar para a Pré-Visualização", + "When Editor Blurred": "Quando o Editor Obscurece", + "When Editor Blurred, Edit On Double Click": "Quando o Editor Obscurece, Editar com Duplo Clique", + "On Right Click": "Ao Clicar Com o Botão Direito", + "Editor Keymap": "Mapa de Teclado do Editor", + "default": "padrão", + "vim": "vim", + "emacs": "emacs", + "⚠️ Please restart boostnote after you change the keymap": "⚠️ Por favor, reinicie o boostnote depois de alterar o mapa de teclado", + "Show line numbers in the editor": "Mostrar os números das linhas no editor", + "Allow editor to scroll past the last line": "Permitir ao editor rolar além da última linha", + "Bring in web page title when pasting URL on editor": "Trazer o título da página da Web ao colar a URL no editor", + "Preview": "Pré-Visualização", + "Preview Font Size": "Tamanho da Fonte da Pré-Visualização", + "Preview Font Family": "Família da Fonte da Pré-Visualização", + "Code block Theme": "Tema do Bloco de Código", + "Allow preview to scroll past the last line": "Permitir à pré-visualização rolar além da última linha", + "Show line numbers for preview code blocks": "Mostrar os números das linhas na pré-visualização dos blocos de código", + "LaTeX Inline Open Delimiter": "Delimitador em Linha Aberto do LaTeX", + "LaTeX Inline Close Delimiter": "Delimitador em Linha Fechado do LaTeX", + "LaTeX Block Open Delimiter": "Delimitador de Bloco Aberto do LaTeX", + "LaTeX Block Close Delimiter": "Delimitador de Bloco Fechado do LaTeX", + "Community": "Comunidade", + "Subscribe to Newsletter": "Subscrever à Newsletter", + "GitHub": "GitHub", + "Blog": "Blog", + "Facebook Group": "Grupo do Facebook", + "Twitter": "Twitter", + "About": "Sobre", + "Boostnote": "Boostnote", + "An open source note-taking app made for programmers just like you.": "Um aplicativo de anotações de código aberto feito para programadores como você.", + "Website": "Website", + "Development": "Desenvolvimento", + " : Development configurations for Boostnote.": " : Configurações de desenvolvimento para o Boostnote.", + "Copyright (C) 2017 - 2018 BoostIO": "Direitos Autorais (C) 2017 - 2018 BoostIO", + "License: GPL v3": "Licença: GPL v3", + "Analytics": "Técnicas analíticas", + "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "O Boostnote coleta dados anônimos com o único propósito de melhorar o aplicativo e de modo algum coleta qualquer informação pessoal, bem como o conteúdo de suas anotações.", + "You can see how it works on ": "Você pode ver como funciona ", + "You can choose to enable or disable this option.": "Você pode optar por ativar ou desativar essa opção.", + "Enable analytics to help improve Boostnote": "Ativar técnicas analíticas para ajudar a melhorar o Boostnote", + "Crowdfunding": "Financiamento Coletivo", + "Dear everyone,": "Caros(as),", + "Thank you for using Boostnote!": "Obrigado por usar o Boostnote!", + "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "O Boostnote é usado em cerca de 200 países e regiões diferentes por uma incrível comunidade de desenvolvedores.", + "To continue supporting this growth, and to satisfy community expectations,": "Para continuar apoiando o crescimento e satisfazer as expectativas da comunidade,", + "we would like to invest more time and resources in this project.": "gostaríamos de investir mais tempo e recursos neste projeto.", + "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Se você gosta deste projeto e vê o seu potencial, você pode nos ajudar apoiando-nos no OpenCollective!", + "Thanks,": "Obrigado,", + "Boostnote maintainers": "Mantenedores do Boostnote", + "Support via OpenCollective": "Suporte via OpenCollective", + "Language": "Idioma", + "English": "Inglês", + "German": "Alemão", + "French": "Francês", + "Show \"Saved to Clipboard\" notification when copying": "Mostrar a notificação \"Armazenado na Área de Transferência\" ao copiar", + "All Notes": "Todas as Notas", + "Starred": "Com Estrela", + "Are you sure to ": "Tem certeza que gostaría de ", + " delete": " apagar", + "this folder?": "essa pasta?", + "Confirm": "Confirmar", + "Cancel": "Cancelar", + "Markdown Note": "Nota em Markdown", + "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "Este formato permite a criação de documentos de texto. Listas de verificação, blocos de código e blocos Latex estão disponíveis.", + "Snippet Note": "Fragmento de Nota", + "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "Este formato é para criar trechos de código. Vários trechos podem ser agrupados em uma única nota.", + "Tab to switch format": "Tabule para mudar o formato", + "Updated": "Atualizado", + "Created": "Criado", + "Alphabetically": "Alfabeticamente", + "Default View": "Visualização Padrão", + "Compressed View": "Visualização Comprimida", + "Search": "Procura", + "Blog Type": "Tipo do Blog", + "Blog Address": "Endereço do Blog", + "Save": "Salvar", + "Auth": "Auth", + "Authentication Method": "Método de Autenticação", + "JWT": "JWT", + "USER": "USUÁRIO", + "Token": "Token", + "Storage": "Armazenamento", + "Hotkeys": "Teclas de Atalho", + "Show/Hide Boostnote": "Esconder/Mostrar Boostnote", + "Restore": "Restaurar", + "Permanent Delete": "Excluir Permanentemente", + "Confirm note deletion": "Confirmar exclusão da nota", + "This will permanently remove this note.": "Isso irá excluir a nota permanentemente.", + "Successfully applied!": "Aplicado com Sucesso!", + "Albanian": "Albanês", + "Chinese (zh-CN)": "Chinês (zh-CN)", + "Chinese (zh-TW)": "Chinês (zh-TW)", + "Danish": "Dinamarquês", + "Japanese": "Japonês", + "Korean": "Coreano", + "Norwegian": "Norueguês", + "Polish": "Polonês", + "Portuguese": "Português (pt-BR)", + "Spanish": "Espanhol", + "You have to save!": "Você precisa salvar!", + "Russian": "Russo", + "Editor Rulers": "Réguas do Editor", + "Enable": "Habilitado", + "Disable": "Desabilitado", + "Sanitization": "Sanitização", + "Only allow secure html tags (recommended)": "Permitir apenas tags html seguras (recomendado)", + "Allow styles": "Permitir estilos", + "Allow dangerous html tags": "Allow tags html perigosas" +} diff --git a/locales/pt.json b/locales/pt-PT.json similarity index 100% rename from locales/pt.json rename to locales/pt-PT.json From 6e2272d043245270b63f54fd3e220e2abd955bab Mon Sep 17 00:00:00 2001 From: Luiz Date: Sat, 24 Mar 2018 18:04:45 -0300 Subject: [PATCH 12/36] Brazilian Portuguese localization --- locales/pt-BR.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/pt-BR.json b/locales/pt-BR.json index 0290020c..10fade1f 100644 --- a/locales/pt-BR.json +++ b/locales/pt-BR.json @@ -20,7 +20,7 @@ ".html": ".html", "Print": "Imprimir", "Your preferences for Boostnote": "Suas preferências para o Boostnote", - "Storages": "Aramazenamentos", + "Storages": "Armazenamentos", "Add Storage Location": "Adicionar Local de Armazenamento", "Add Folder": "Adicionar Pasta", "Open Storage folder": "Abrir Local de Armazenamento", @@ -148,5 +148,5 @@ "Sanitization": "Sanitização", "Only allow secure html tags (recommended)": "Permitir apenas tags html seguras (recomendado)", "Allow styles": "Permitir estilos", - "Allow dangerous html tags": "Allow tags html perigosas" + "Allow dangerous html tags": "Permitir tags html perigosas" } From 080448af3a11a3a17d30915cbfe10673dfa71728 Mon Sep 17 00:00:00 2001 From: David Miguel Date: Sun, 25 Mar 2018 02:09:04 +0100 Subject: [PATCH 13/36] Add Spanish (es-ES) locale --- browser/lib/i18n.js | 2 +- browser/main/Main.js | 4 +- browser/main/lib/ConfigManager.js | 4 +- locales/es-ES.json | 153 ++++++++++++++++++++++++++++++ locales/es.json | 153 ------------------------------ 5 files changed, 158 insertions(+), 158 deletions(-) create mode 100644 locales/es-ES.json delete mode 100644 locales/es.json diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index b547d97c..fe339072 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -1,7 +1,7 @@ // load package for localization const i18n = new (require('i18n-2'))({ // setup some locales - other locales default to the first locale - locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'hu', 'ja', 'ko', 'no', 'pl', 'pt', 'es'], + locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'hu', 'ja', 'ko', 'no', 'pl', 'pt', 'es-ES'], extension: '.json', devMode: false }) diff --git a/browser/main/Main.js b/browser/main/Main.js index 35953aea..2f431374 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -175,8 +175,8 @@ class Main extends React.Component { i18n.setLocale('pt') } else if (config.ui.language === 'ru') { i18n.setLocale('ru') - } else if (config.ui.language === 'es') { - i18n.setLocale('es') + } else if (config.ui.language === 'es-ES') { + i18n.setLocale('es-ES') } else { i18n.setLocale('en') } diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 4d67d4e7..157973ea 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -164,8 +164,8 @@ function set (updates) { i18n.setLocale('pt') } else if (newConfig.ui.language === 'ru') { i18n.setLocale('ru') - } else if (newConfig.ui.language === 'es') { - i18n.setLocale('es') + } else if (newConfig.ui.language === 'es-ES') { + i18n.setLocale('es-ES') } else { i18n.setLocale('en') } diff --git a/locales/es-ES.json b/locales/es-ES.json new file mode 100644 index 00000000..ea20641b --- /dev/null +++ b/locales/es-ES.json @@ -0,0 +1,153 @@ +{ + "Notes": "Notas", + "Tags": "Etiquetas", + "Preferences": "Preferencias", + "Make a note": "Tomar una nota", + "Ctrl": "Ctrl", + "Ctrl(^)": "Ctrl", + "to create a new note": "para crear una nueva nota", + "Toggle Mode": "Alternar modo", + "Trash": "Basura", + "MODIFICATION DATE": "FECHA DE MODIFICACIÓN", + "Words": "Palabras", + "Letters": "Letras", + "STORAGE": "ALMACENAMIENTO", + "FOLDER": "CARPETA", + "CREATION DATE": "FECHA DE CREACIÓN", + "NOTE LINK": "ENLACE A LA NOTA", + ".md": ".md", + ".txt": ".txt", + ".html": ".html", + "Print": "Imprimir", + "Your preferences for Boostnote": "Tus preferencias para Boostnote", + "Storages": "Almacenamientos", + "Add Storage Location": "Añadir ubicación de almacenamiento", + "Add Folder": "Añadir carpeta", + "Open Storage folder": "Añadir carpeta de almacenamiento", + "Unlink": "Desvincular", + "Edit": "Editar", + "Delete": "Eliminar", + "Interface": "Interfaz", + "Interface Theme": "Tema de la interfaz", + "Default": "Por defecto", + "White": "Blanco", + "Solarized Dark": "Solarizado oscuro", + "Dark": "Oscuro", + "Show a confirmation dialog when deleting notes": "Requerir confirmación al eliminar nota", + "Editor Theme": "Tema del editor", + "Editor Font Size": "Tamaño de fuente del editor", + "Editor Font Family": "Fuente del editor", + "Editor Indent Style": "Estilo de indentado del editor", + "Spaces": "Espacios", + "Tabs": "Tabulación", + "Switch to Preview": "Cambiar a Previsualización", + "When Editor Blurred": "Cuando el editor pierde el foco", + "When Editor Blurred, Edit On Double Click": "Cuando el editor pierde el foco, editar con doble clic", + "On Right Click": "Al hacer clic derecho", + "Editor Keymap": "Mapeo de teclas del editor", + "default": "por defecto", + "vim": "vim", + "emacs": "emacs", + "⚠️ Please restart boostnote after you change the keymap": "⚠️ Reinicie boostnote después de cambiar el mapeo de teclas", + "Show line numbers in the editor": "Mostrar números de línea en el editor", + "Allow editor to scroll past the last line": "Permitir al editor desplazarse más allá de la última línea", + "Bring in web page title when pasting URL on editor": "Al pegar una URL en el editor, insertar el título de la web automáticamente", + "Preview": "Previsualización", + "Preview Font Size": "Previsualizar tamaño de la fuente", + "Preview Font Family": "Previsualizar fuente", + "Code block Theme": "Tema de los bloques de código", + "Allow preview to scroll past the last line": "Permitir a la previsualización desplazarse más allá de la última línea", + "Show line numbers for preview code blocks": "Mostar números de línea al previsualizar bloques de código", + "LaTeX Inline Open Delimiter": "Delimitador de apertura LaTeX en línea", + "LaTeX Inline Close Delimiter": "Delimitador de cierre LaTeX en línea", + "LaTeX Block Open Delimiter": "Delimitado de apertura bloque LaTeX", + "LaTeX Block Close Delimiter": "Delimitador de cierre bloque LaTeX", + "Community": "Comunidad", + "Subscribe to Newsletter": "Suscribirse al boletín", + "GitHub": "GitHub", + "Blog": "Blog", + "Facebook Group": "Grupo de Facebook", + "Twitter": "Twitter", + "About": "Sobre", + "Boostnote": "Boostnote", + "An open source note-taking app made for programmers just like you.": "Una aplicación para tomar notas de código abieto para programadores como tú.", + "Website": "Página web", + "Development": "Desarrollo", + " : Development configurations for Boostnote.": " : Configuraciones de desarrollo para Boostnote.", + "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO", + "License: GPL v3": "Licencia: GPL v3", + "Analytics": "Analítica", + "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote recopila datos anónimos con el único propósito de mejorar la aplicación. No recopila ninguna información personal, como puede ser el contenido de sus notas.", + "You can see how it works on ": "Puedes ver cómo funciona en ", + "You can choose to enable or disable this option.": "Puedes elegir activar o desactivar esta opción.", + "Enable analytics to help improve Boostnote": "Activa analítica para ayudar a mejorar Boostnote", + "Crowdfunding": "Crowdfunding", + "Dear everyone,": "Hola a todos,", + "Thank you for using Boostnote!": "Gracias por usar Boostnote!", + "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote es utilizado en alrededor de 200 países y regiones diferentes por una increíble comunidad de desarrolladores.", + "To continue supporting this growth, and to satisfy community expectations,": "Para continuar apoyando este crecimiento y satisfacer las expectativas de la comunidad,", + "we would like to invest more time and resources in this project.": "nos gustaría invertir más tiempo y recursos en este proyecto.", + "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Si te gusta este proyecto y ves potencial en él, ¡puedes ayudar apoyándonos en OpenCollective!", + "Thanks,": "Gracias,", + "Boostnote maintainers": "Equipo de Boostnote", + "Support via OpenCollective": "Contribuir vía OpenCollective", + "Language": "Idioma", + "English": "Inglés", + "German": "Alemán", + "French": "Francés", + "Show \"Saved to Clipboard\" notification when copying": "Mostrar la notificaión \"Guardado en Portapapeles\" al copiar", + "All Notes": "Todas las notas", + "Starred": "Destacado", + "Are you sure to ": "Estás seguro de ", + " delete": " eliminar", + "this folder?": "esta carpeta?", + "Confirm": "Confirmar", + "Cancel": "Cancelar", + "Markdown Note": "Nota Markdown", + "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "Formato para crear documentos de texto. Permite utilizar listas, bloques de código y LaTeX.", + "Snippet Note": "Nota Snippet", + "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "Formato para fragmentos de código. Múltiples fragmentos se pueden agrupar en una sola nota.", + "Tab to switch format": "Tabulador para cambiar formato", + "Updated": "Actualizado", + "Created": "Creado", + "Alphabetically": "Alfabéticamente", + "Default View": "Vista por defecto", + "Compressed View": "Vista comprimida", + "Search": "Buscar", + "Blog Type": "Tipo de blog", + "Blog Address": "Dirección del blog", + "Save": "Guardar", + "Auth": "Auth", + "Authentication Method": "Método de autentificación", + "JWT": "JWT", + "USER": "USUARIO", + "Token": "Token", + "Storage": "Almacenamiento", + "Hotkeys": "Atajos de teclado", + "Show/Hide Boostnote": "Mostrar/Ocultar Boostnote", + "Restore": "Restaurar", + "Permanent Delete": "Eliminar permanentemente", + "Confirm note deletion": "Confirmar eliminación de nota", + "This will permanently remove this note.": "La nota se eliminará permanentemente.", + "Successfully applied!": "Aplicado con éxito!", + "Albanian": "Albanés", + "Chinese (zh-CN)": "Chino - China", + "Chinese (zh-TW)": "Chino - Taiwan", + "Danish": "Danés", + "Japanese": "Japonés", + "Korean": "Coreano", + "Norwegian": "Noruego", + "Polish": "Polaco", + "Portuguese": "Portugues", + "Spanish": "Español", + "You have to save!": "Tienes que guardar!", + "Russian": "Ruso", + "Command(⌘)": "Command(⌘)", + "Editor Rulers": "Reglas del editor", + "Enable": "Activar", + "Disable": "Desactivar", + "Sanitization": "Saneamiento", + "Only allow secure html tags (recommended)": "Solo permitir etiquetas html seguras (recomendado)", + "Allow styles": "Permitir estilos", + "Allow dangerous html tags": "Permitir etiques html peligrosas" +} diff --git a/locales/es.json b/locales/es.json deleted file mode 100644 index 51f975d9..00000000 --- a/locales/es.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "Notes": "Notes", - "Tags": "Tags", - "Preferences": "Preferences", - "Make a note": "Make a note", - "Ctrl": "Ctrl", - "Ctrl(^)": "Ctrl", - "to create a new note": "to create a new note", - "Toggle Mode": "Toggle Mode", - "Trash": "Trash", - "MODIFICATION DATE": "MODIFICATION DATE", - "Words": "Words", - "Letters": "Letters", - "STORAGE": "STORAGE", - "FOLDER": "FOLDER", - "CREATION DATE": "CREATION DATE", - "NOTE LINK": "NOTE LINK", - ".md": ".md", - ".txt": ".txt", - ".html": ".html", - "Print": "Print", - "Your preferences for Boostnote": "Your preferences for Boostnote", - "Storages": "Storages", - "Add Storage Location": "Add Storage Location", - "Add Folder": "Add Folder", - "Open Storage folder": "Open Storage folder", - "Unlink": "Unlink", - "Edit": "Edit", - "Delete": "Delete", - "Interface": "Interface", - "Interface Theme": "Interface Theme", - "Default": "Default", - "White": "White", - "Solarized Dark": "Solarized Dark", - "Dark": "Dark", - "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes", - "Editor Theme": "Editor Theme", - "Editor Font Size": "Editor Font Size", - "Editor Font Family": "Editor Font Family", - "Editor Indent Style": "Editor Indent Style", - "Spaces": "Spaces", - "Tabs": "Tabs", - "Switch to Preview": "Switch to Preview", - "When Editor Blurred": "When Editor Blurred", - "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click", - "On Right Click": "On Right Click", - "Editor Keymap": "Editor Keymap", - "default": "default", - "vim": "vim", - "emacs": "emacs", - "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap", - "Show line numbers in the editor": "Show line numbers in the editor", - "Allow editor to scroll past the last line": "Allow editor to scroll past the last line", - "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor", - "Preview": "Preview", - "Preview Font Size": "Preview Font Size", - "Preview Font Family": "Preview Font Family", - "Code block Theme": "Code block Theme", - "Allow preview to scroll past the last line": "Allow preview to scroll past the last line", - "Show line numbers for preview code blocks": "Show line numbers for preview code blocks", - "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter", - "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter", - "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter", - "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter", - "Community": "Community", - "Subscribe to Newsletter": "Subscribe to Newsletter", - "GitHub": "GitHub", - "Blog": "Blog", - "Facebook Group": "Facebook Group", - "Twitter": "Twitter", - "About": "About", - "Boostnote": "Boostnote", - "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.", - "Website": "Website", - "Development": "Development", - " : Development configurations for Boostnote.": " : Development configurations for Boostnote.", - "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO", - "License: GPL v3": "License: GPL v3", - "Analytics": "Analytics", - "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.", - "You can see how it works on ": "You can see how it works on ", - "You can choose to enable or disable this option.": "You can choose to enable or disable this option.", - "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote", - "Crowdfunding": "Crowdfunding", - "Dear everyone,": "Dear everyone,", - "Thank you for using Boostnote!": "Thank you for using Boostnote!", - "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.", - "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,", - "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.", - "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!", - "Thanks,": "Thanks,", - "Boostnote maintainers": "Boostnote maintainers", - "Support via OpenCollective": "Support via OpenCollective", - "Language": "Language", - "English": "English", - "German": "German", - "French": "French", - "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", - "All Notes": "All Notes", - "Starred": "Starred", - "Are you sure to ": "Are you sure to ", - " delete": " delete", - "this folder?": "this folder?", - "Confirm": "Confirm", - "Cancel": "Cancel", - "Markdown Note": "Markdown Note", - "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.", - "Snippet Note": "Snippet Note", - "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.", - "Tab to switch format": "Tab to switch format", - "Updated": "Updated", - "Created": "Created", - "Alphabetically": "Alphabetically", - "Default View": "Default View", - "Compressed View": "Compressed View", - "Search": "Search", - "Blog Type": "Blog Type", - "Blog Address": "Blog Address", - "Save": "Save", - "Auth": "Auth", - "Authentication Method": "Authentication Method", - "JWT": "JWT", - "USER": "USER", - "Token": "Token", - "Storage": "Storage", - "Hotkeys": "Hotkeys", - "Show/Hide Boostnote": "Show/Hide Boostnote", - "Restore": "Restore", - "Permanent Delete": "Permanent Delete", - "Confirm note deletion": "Confirm note deletion", - "This will permanently remove this note.": "This will permanently remove this note.", - "Successfully applied!": "Successfully applied!", - "Albanian": "Albanian", - "Chinese (zh-CN)": "Chinese (zh-CN)", - "Chinese (zh-TW)": "Chinese (zh-TW)", - "Danish": "Danish", - "Japanese": "Japanese", - "Korean": "Korean", - "Norwegian": "Norwegian", - "Polish": "Polish", - "Portuguese": "Portuguese", - "Spanish": "Spanish", - "You have to save!": "You have to save!", - "Russian": "Russian", - "Command(⌘)": "Command(⌘)", - "Editor Rulers": "Editor Rulers", - "Enable": "Enable", - "Disable": "Disable", - "Sanitization": "Sanitization", - "Only allow secure html tags (recommended)": "Only allow secure html tags (recommended)", - "Allow styles": "Allow styles", - "Allow dangerous html tags": "Allow dangerous html tags" -} From 6d57712fca8f15c4f9d2edf0d3c02f0776daae92 Mon Sep 17 00:00:00 2001 From: Gediminas Petrikas Date: Sun, 25 Mar 2018 14:13:19 +0300 Subject: [PATCH 14/36] Add fold gutters --- browser/components/CodeEditor.js | 5 +++++ browser/main/global.styl | 16 ++++++++++++++++ lib/main.html | 5 +++++ 3 files changed, 26 insertions(+) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index eeb1a930..2b653eb6 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -109,8 +109,13 @@ export default class CodeEditor extends React.Component { scrollPastEnd: this.props.scrollPastEnd, inputStyle: 'textarea', dragDrop: false, + foldGutter: true, + gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'], autoCloseBrackets: true, extraKeys: { + 'Ctrl-G': function (cm) { + cm.foldCode(cm.getCursor()) + }, Tab: function (cm) { const cursor = cm.getCursor() const line = cm.getLine(cursor.line) diff --git a/browser/main/global.styl b/browser/main/global.styl index 1b40587c..8d0e3e37 100644 --- a/browser/main/global.styl +++ b/browser/main/global.styl @@ -108,6 +108,22 @@ body[data-theme="dark"] background #B1D7FE ::selection background #B1D7FE +.CodeMirror-foldmarker + font-family: arial + +.CodeMirror-foldgutter + width: .7em + +//.CodeMirror-foldgutter-open, +//.CodeMirror-foldgutter-folded +// color: #555 +// cursor: pointer + +.CodeMirror-foldgutter-open:after + content: "\25BE" + +.CodeMirror-foldgutter-folded:after + content: "\25B8" .sortableItemHelper z-index modalZIndex + 5 diff --git a/lib/main.html b/lib/main.html index 830d3b48..538fd8ec 100644 --- a/lib/main.html +++ b/lib/main.html @@ -92,6 +92,11 @@ + + + + + From 9d6dbc1a6f1c9bb804c8f01aef44a96ba5622485 Mon Sep 17 00:00:00 2001 From: Gediminas Petrikas Date: Sun, 25 Mar 2018 14:55:06 +0300 Subject: [PATCH 15/36] Remove folding keyboard shortcut --- browser/components/CodeEditor.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 2b653eb6..8b729f24 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -113,9 +113,6 @@ export default class CodeEditor extends React.Component { gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'], autoCloseBrackets: true, extraKeys: { - 'Ctrl-G': function (cm) { - cm.foldCode(cm.getCursor()) - }, Tab: function (cm) { const cursor = cm.getCursor() const line = cm.getLine(cursor.line) From cd405d1df9a0be4c0c622b40a2cdb804065d1f9a Mon Sep 17 00:00:00 2001 From: Gediminas Petrikas Date: Sun, 25 Mar 2018 14:55:33 +0300 Subject: [PATCH 16/36] Add cursor pointer when hovering fold gutter --- browser/main/global.styl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/browser/main/global.styl b/browser/main/global.styl index 8d0e3e37..613c7611 100644 --- a/browser/main/global.styl +++ b/browser/main/global.styl @@ -114,10 +114,9 @@ body[data-theme="dark"] .CodeMirror-foldgutter width: .7em -//.CodeMirror-foldgutter-open, -//.CodeMirror-foldgutter-folded -// color: #555 -// cursor: pointer +.CodeMirror-foldgutter-open, +.CodeMirror-foldgutter-folded + cursor: pointer .CodeMirror-foldgutter-open:after content: "\25BE" From b098a15e9cee2e87bf536679065b49f4a0b19fe0 Mon Sep 17 00:00:00 2001 From: Nikolay Lopin Date: Sun, 25 Mar 2018 20:02:06 +0300 Subject: [PATCH 17/36] Add jest and simple test --- .babelrc | 2 +- __mocks__/electron.js | 7 + package.json | 14 +- tests/components/TagListItem.snapshot.test.js | 9 + .../TagListItem.snapshot.test.js.snap | 19 + yarn.lock | 1516 +++++++++++++++-- 6 files changed, 1458 insertions(+), 109 deletions(-) create mode 100644 __mocks__/electron.js create mode 100644 tests/components/TagListItem.snapshot.test.js create mode 100644 tests/components/__snapshots__/TagListItem.snapshot.test.js.snap diff --git a/.babelrc b/.babelrc index 92bb81ed..270349d2 100644 --- a/.babelrc +++ b/.babelrc @@ -5,7 +5,7 @@ "presets": ["react-hmre"] }, "test": { - "presets": ["react", "es2015"], + "presets": ["env" ,"react", "es2015"], "plugins": [ [ "babel-plugin-webpack-alias", { "config": "${PWD}/webpack.config.js" } ] ] diff --git a/__mocks__/electron.js b/__mocks__/electron.js new file mode 100644 index 00000000..2176fbac --- /dev/null +++ b/__mocks__/electron.js @@ -0,0 +1,7 @@ +module.exports = { + require: jest.genMockFunction(), + match: jest.genMockFunction(), + app: jest.genMockFunction(), + remote: jest.genMockFunction(), + dialog: jest.genMockFunction() +} diff --git a/package.json b/package.json index 1b889869..7c6c2a98 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "webpack": "webpack-dev-server --hot --inline --config webpack.config.js", "compile": "grunt compile", "test": "PWD=$(pwd) NODE_ENV=test ava --serial", + "jest": "jest", "fix": "npm run lint --fix", "lint": "eslint .", "dev-start": "concurrently --kill-others \"npm run webpack\" \"npm run hot\"" @@ -96,11 +97,13 @@ "devDependencies": { "ava": "^0.25.0", "babel-core": "^6.14.0", + "babel-jest": "^22.4.3", "babel-loader": "^6.2.0", "babel-plugin-react-transform": "^2.0.0", "babel-plugin-webpack-alias": "^2.1.1", + "babel-preset-env": "^1.6.1", "babel-preset-es2015": "^6.3.13", - "babel-preset-react": "^6.3.13", + "babel-preset-react": "^6.24.1", "babel-preset-react-hmre": "^1.0.1", "babel-register": "^6.11.6", "browser-env": "^3.2.5", @@ -120,6 +123,8 @@ "grunt": "^0.4.5", "grunt-electron-installer": "2.1.0", "history": "^1.17.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^22.4.3", "jsdom": "^9.4.2", "json-loader": "^0.5.4", "merge-stream": "^1.0.0", @@ -130,6 +135,7 @@ "react-input-autosize": "^1.1.0", "react-router": "^2.4.0", "react-router-redux": "^4.0.4", + "react-test-renderer": "^15.6.2", "standard": "^8.4.0", "style-loader": "^0.12.4", "stylus": "^0.52.4", @@ -152,5 +158,11 @@ "./tests/helpers/setup-electron-mock.js" ], "babel": "inherit" + }, + "jest": { + "moduleNameMapper": { + "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js", + "\\.(css|less|styl)$": "identity-obj-proxy" + } } } diff --git a/tests/components/TagListItem.snapshot.test.js b/tests/components/TagListItem.snapshot.test.js new file mode 100644 index 00000000..8bea2ccb --- /dev/null +++ b/tests/components/TagListItem.snapshot.test.js @@ -0,0 +1,9 @@ +import React from 'react' +import renderer from 'react-test-renderer' +import TagListItem from 'browser/components/TagListItem' + +it('TagListItem renders correctly', () => { + const tagListItem = renderer.create() + + expect(tagListItem.toJSON()).toMatchSnapshot() +}) diff --git a/tests/components/__snapshots__/TagListItem.snapshot.test.js.snap b/tests/components/__snapshots__/TagListItem.snapshot.test.js.snap new file mode 100644 index 00000000..0805edcd --- /dev/null +++ b/tests/components/__snapshots__/TagListItem.snapshot.test.js.snap @@ -0,0 +1,19 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`TagListItem renders correctly 1`] = ` + +`; diff --git a/yarn.lock b/yarn.lock index defb4563..d276e242 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,6 +38,20 @@ imurmurhash "^0.1.4" slide "^1.1.5" +"@babel/code-frame@^7.0.0-beta.35": + version "7.0.0-beta.42" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.42.tgz#a9c83233fa7cd06b39dc77adbb908616ff4f1962" + dependencies: + "@babel/highlight" "7.0.0-beta.42" + +"@babel/highlight@7.0.0-beta.42": + version "7.0.0-beta.42" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.42.tgz#a502a1c0d6f99b2b0e81d468a1b0c0e81e3f3623" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@concordance/react@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@concordance/react/-/react-1.0.0.tgz#fcf3cad020e5121bfd1c61d05bc3516aac25f734" @@ -196,7 +210,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.1: +ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: @@ -213,6 +227,19 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + aproba@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" @@ -243,6 +270,10 @@ arr-diff@^2.0.0: dependencies: arr-flatten "^1.0.1" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + arr-exclude@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" @@ -251,6 +282,14 @@ arr-flatten@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -288,6 +327,10 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -359,6 +402,14 @@ assert@^1.1.1: dependencies: util "0.10.3" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -375,7 +426,7 @@ async@^1.3.0, async@^1.4.0, async@^1.4.2, async@^1.5.1, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.0: +async@^2.0.0, async@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -393,6 +444,10 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" + auto-bind@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.2.0.tgz#8b7e318aad53d43ba8a8ecaf0066d85d5f798cd6" @@ -558,6 +613,30 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-core@^6.0.0, babel-core@^6.17.0, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + babel-core@^6.14.0, babel-core@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" @@ -582,30 +661,6 @@ babel-core@^6.14.0, babel-core@^6.24.1: slash "^1.0.0" source-map "^0.5.0" -babel-core@^6.17.0, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - babel-generator@^6.1.0, babel-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" @@ -619,7 +674,7 @@ babel-generator@^6.1.0, babel-generator@^6.24.1: source-map "^0.5.0" trim-right "^1.0.1" -babel-generator@^6.26.0: +babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" dependencies: @@ -741,6 +796,13 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.3.tgz#4b7a0b6041691bbd422ab49b3b73654a49a6627a" + dependencies: + babel-plugin-istanbul "^4.1.5" + babel-preset-jest "^22.4.3" + babel-loader@^6.2.0: version "6.4.1" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca" @@ -774,6 +836,18 @@ babel-plugin-espower@^2.3.2: espurify "^1.6.0" estraverse "^4.1.1" +babel-plugin-istanbul@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.5" + test-exclude "^4.1.1" + +babel-plugin-jest-hoist@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz#7d8bcccadc2667f96a0dcc6afe1891875ee6c14a" + babel-plugin-react-transform@^2.0.0, babel-plugin-react-transform@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz#515bbfa996893981142d90b1f9b1635de2995109" @@ -800,11 +874,11 @@ babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" -babel-plugin-syntax-trailing-function-commas@^6.20.0: +babel-plugin-syntax-trailing-function-commas@^6.20.0, babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" -babel-plugin-transform-async-to-generator@^6.16.0: +babel-plugin-transform-async-to-generator@^6.16.0, babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" dependencies: @@ -824,6 +898,16 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + babel-plugin-transform-es2015-block-scoping@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" @@ -834,7 +918,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-types "^6.24.1" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.24.1: +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -848,33 +932,33 @@ babel-plugin-transform-es2015-classes@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.24.1: +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.19.0, babel-plugin-transform-es2015-destructuring@^6.22.0: +babel-plugin-transform-es2015-destructuring@^6.19.0, babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0: +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es2015-function-name@^6.9.0: +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es2015-function-name@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: @@ -888,7 +972,7 @@ babel-plugin-transform-es2015-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.24.1: +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" dependencies: @@ -896,7 +980,7 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.18.0: +babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.23.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" dependencies: @@ -914,7 +998,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1: babel-template "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" dependencies: @@ -922,7 +1006,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.24.1: +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" dependencies: @@ -930,14 +1014,14 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.24.1: +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.21.0, babel-plugin-transform-es2015-parameters@^6.24.1: +babel-plugin-transform-es2015-parameters@^6.21.0, babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: @@ -948,7 +1032,7 @@ babel-plugin-transform-es2015-parameters@^6.21.0, babel-plugin-transform-es2015- babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: @@ -961,7 +1045,7 @@ babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spre dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.24.1, babel-plugin-transform-es2015-sticky-regex@^6.8.0: +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1, babel-plugin-transform-es2015-sticky-regex@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: @@ -975,13 +1059,13 @@ babel-plugin-transform-es2015-template-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.11.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: +babel-plugin-transform-es2015-unicode-regex@^6.11.0, babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: @@ -989,7 +1073,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.11.0, babel-plugin-transform-es20 babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.8.0: +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" dependencies: @@ -1032,6 +1116,12 @@ babel-plugin-transform-react-jsx@^6.24.1: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + babel-plugin-transform-regenerator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" @@ -1054,6 +1144,41 @@ babel-plugin-webpack-alias@^2.1.1: lodash.some "^4.5.1" lodash.template "^4.3.0" +babel-preset-env@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + babel-preset-es2015@^6.3.13: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" @@ -1089,6 +1214,13 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" +babel-preset-jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz#e92eef9813b7026ab4ca675799f37419b5a44156" + dependencies: + babel-plugin-jest-hoist "^22.4.3" + babel-plugin-syntax-object-rest-spread "^6.13.0" + babel-preset-react-hmre@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/babel-preset-react-hmre/-/babel-preset-react-hmre-1.1.1.tgz#d216e60cb5b8d4c873e19ed0f54eaff1437bc492" @@ -1098,7 +1230,7 @@ babel-preset-react-hmre@^1.0.1: react-transform-hmr "^1.0.3" redbox-react "^1.2.2" -babel-preset-react@^6.3.13: +babel-preset-react@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" dependencies: @@ -1140,6 +1272,16 @@ babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runti core-js "^2.4.0" regenerator-runtime "^0.11.0" +babel-template@^6.16.0, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + babel-template@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" @@ -1150,14 +1292,18 @@ babel-template@^6.24.1: babylon "^6.11.0" lodash "^4.2.0" -babel-template@^6.26.0: +babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" babel-runtime "^6.26.0" - babel-traverse "^6.26.0" babel-types "^6.26.0" babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" lodash "^4.17.4" babel-traverse@^6.24.1: @@ -1174,20 +1320,6 @@ babel-traverse@^6.24.1: invariant "^2.2.0" lodash "^4.2.0" -babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - babel-types@^6.14.0, babel-types@^6.19.0, babel-types@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" @@ -1197,7 +1329,7 @@ babel-types@^6.14.0, babel-types@^6.19.0, babel-types@^6.24.1: lodash "^4.2.0" to-fast-properties "^1.0.1" -babel-types@^6.26.0: +babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -1226,6 +1358,18 @@ base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -1320,6 +1464,23 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + kind-of "^6.0.2" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + browser-env@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/browser-env/-/browser-env-3.2.5.tgz#4345b8094413552e1e32c0c7b048b85d90965cc1" @@ -1330,6 +1491,12 @@ browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" +browser-resolve@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + browserify-aes@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c" @@ -1349,6 +1516,19 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" +browserslist@^2.1.2: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + dependencies: + node-int64 "^0.4.0" + buf-compare@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" @@ -1381,6 +1561,20 @@ bytes@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -1412,6 +1606,10 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1431,7 +1629,7 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" -camelcase@^4.0.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1448,6 +1646,10 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000671" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000671.tgz#9f071bbc7b96994638ccbaf47829d58a1577a8ed" +caniuse-lite@^1.0.30000792: + version "1.0.30000817" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000817.tgz#e993c380eb4bfe76a2aed4223f841c02d6e0d832" + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -1501,7 +1703,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: @@ -1550,6 +1752,15 @@ clap@^1.0.9: dependencies: chalk "^1.1.3" +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + classnames@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" @@ -1609,6 +1820,14 @@ cliui@^3.0.3, cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" @@ -1661,6 +1880,13 @@ coffee-script@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.3.3.tgz#150d6b4cb522894369efed6a2101c20bc7f4a4f4" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.3.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" @@ -1747,7 +1973,11 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" -component-emitter@~1.2.0: +compare-versions@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.1.0.tgz#43310256a5c555aaed4193c04d8f154cf9c6efd5" + +component-emitter@^1.2.1, component-emitter@~1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1867,7 +2097,7 @@ convert-source-map@^1.1.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" -convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -1887,6 +2117,10 @@ cookiejar@2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.0.6.tgz#0abf356ad00d1c5a219d88d44518046dd026acfe" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + copy-to-clipboard@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.0.6.tgz#13c09bfea0408a5dc5bb987fee3b3986518c9d69" @@ -2137,7 +2371,7 @@ debug@2.6.7: dependencies: ms "2.0.0" -debug@^2.6.8: +debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -2153,6 +2387,10 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + decompress-zip@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.1.0.tgz#bce60c11664f2d660fca4bcf634af6de5d6c14c7" @@ -2189,6 +2427,12 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -2196,6 +2440,25 @@ define-properties@^1.1.2: foreach "^2.0.5" object-keys "^1.0.8" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -2253,6 +2516,14 @@ detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + devtron@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/devtron/-/devtron-1.4.0.tgz#b5e748bd6e95bbe70bfcc68aae6fe696119441e1" @@ -2261,6 +2532,10 @@ devtron@^1.1.0: highlight.js "^9.3.0" humanize-plus "^1.8.1" +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + doctrine@^1.2.2: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -2459,6 +2734,10 @@ electron-to-chromium@^1.2.7: version "1.3.11" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.11.tgz#744761df1d67b492b322ce9aa0aba5393260eb61" +electron-to-chromium@^1.3.30: + version "1.3.40" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.40.tgz#1fbd6d97befd72b8a6f921dc38d22413d2f6fddf" + electron-winstaller@^2.2.0: version "2.6.3" resolved "https://registry.yarnpkg.com/electron-winstaller/-/electron-winstaller-2.6.3.tgz#d54f77c0cececc4fc55eeb5968d345cf69645ea4" @@ -2537,6 +2816,16 @@ error-stack-parser@^1.3.6: dependencies: stackframe "^0.3.1" +es-abstract@^1.5.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + es-abstract@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.0.tgz#3b00385e85729932beffa9163bbea1234e932914" @@ -2884,6 +3173,12 @@ eventsource@0.1.6: dependencies: original ">=0.0.5" +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + dependencies: + merge "^1.1.3" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -2900,7 +3195,7 @@ exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" -exit@~0.1.1: +exit@^0.1.2, exit@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2910,12 +3205,35 @@ expand-brackets@^0.1.4: dependencies: is-posix-bracket "^0.1.0" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" dependencies: fill-range "^2.1.0" +expect@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^22.4.3" + jest-get-type "^22.4.3" + jest-matcher-utils "^22.4.3" + jest-message-util "^22.4.3" + jest-regex-util "^22.4.3" + express@^4.13.3: version "4.15.3" resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662" @@ -2949,6 +3267,19 @@ express@^4.13.3: utils-merge "1.0.0" vary "~1.1.1" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + extend@3.0.0, extend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -2963,6 +3294,19 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extract-zip@^1.0.3: version "1.6.5" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" @@ -3012,6 +3356,12 @@ faye-websocket@~0.11.0: dependencies: websocket-driver ">=0.5.1" +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + dependencies: + bser "^2.0.0" + fbjs@^0.8.16: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" @@ -3078,6 +3428,13 @@ filenamify@^2.0.0: strip-outer "^1.0.0" trim-repeated "^1.0.0" +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -3088,6 +3445,15 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + finalhandler@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" @@ -3167,7 +3533,7 @@ font-awesome@^4.3.0: version "4.7.0" resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" -for-in@^1.0.1: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3225,6 +3591,12 @@ forwarded@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" @@ -3285,6 +3657,13 @@ fsevents@^1.0.0: nan "^2.3.0" node-pre-gyp "^0.6.29" +fsevents@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + fstream-ignore@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" @@ -3306,6 +3685,10 @@ function-bind@^1.0.2, function-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + function-name-support@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/function-name-support/-/function-name-support-0.2.0.tgz#55d3bfaa6eafd505a50f9bc81fdf57564a0bb071" @@ -3368,6 +3751,10 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + getobject@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" @@ -3429,7 +3816,7 @@ glob@^6.0.1, glob@^6.0.3, glob@^6.0.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -3544,6 +3931,10 @@ graceful-fs@~1.2.0: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + grunt-electron-installer-debian@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/grunt-electron-installer-debian/-/grunt-electron-installer-debian-0.2.0.tgz#2849f7c2df6b8adf835d58f09c6aa01550254be0" @@ -3617,6 +4008,16 @@ grunt@^0.4.5: underscore.string "~2.2.1" which "~1.0.5" +handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" @@ -3648,6 +4049,10 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" +harmony-reflect@^1.4.6: + version "1.6.0" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.0.tgz#9c28a77386ec225f7b5d370f9861ba09c4eea58f" + has-ansi@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" @@ -3680,6 +4085,33 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has-yarn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" @@ -3690,18 +4122,18 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hawk@~2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-2.3.1.tgz#1e731ce39447fa1d0f6d707f7bceebec0fd1ec1f" +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" dependencies: boom "2.x.x" cryptiles "2.x.x" hoek "2.x.x" sntp "1.x.x" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" +hawk@~2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-2.3.1.tgz#1e731ce39447fa1d0f6d707f7bceebec0fd1ec1f" dependencies: boom "2.x.x" cryptiles "2.x.x" @@ -3892,6 +4324,12 @@ iconv-lite@~0.2.11: version "0.2.11" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8" +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + dependencies: + harmony-reflect "^1.4.6" + ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" @@ -3919,6 +4357,13 @@ import-local@^0.1.1: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -4022,6 +4467,18 @@ is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -4046,16 +4503,50 @@ is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" +is-ci@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" + dependencies: + ci-info "^1.0.0" + is-ci@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" dependencies: ci-info "^1.0.0" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + is-dotfile@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" @@ -4070,10 +4561,16 @@ is-error@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" -is-extendable@^0.1.1: +is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" @@ -4140,6 +4637,16 @@ is-number@^2.0.2, is-number@^2.1.0: dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4156,6 +4663,12 @@ is-observable@^1.0.0: dependencies: symbol-observable "^1.1.0" +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -4176,6 +4689,12 @@ is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -4238,6 +4757,10 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -4256,6 +4779,10 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + isomorphic-fetch@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -4267,6 +4794,339 @@ isstream@~0.1.1, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istanbul-api@^1.1.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" + dependencies: + async "^2.1.4" + compare-versions "^3.1.0" + fileset "^2.0.2" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-hook "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-report "^1.1.4" + istanbul-lib-source-maps "^1.2.4" + istanbul-reports "^1.3.0" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.1.1, istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" + +istanbul-lib-hook@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.0" + semver "^5.3.0" + +istanbul-lib-report@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" + dependencies: + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.1.2" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-lib-source-maps@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" + dependencies: + handlebars "^4.0.3" + +jest-changed-files@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" + dependencies: + throat "^4.0.0" + +jest-cli@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.3.tgz#bf16c4a5fb7edc3fa5b9bb7819e34139e88a72c7" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.11" + import-local "^1.0.0" + is-ci "^1.0.10" + istanbul-api "^1.1.14" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-instrument "^1.8.0" + istanbul-lib-source-maps "^1.2.1" + jest-changed-files "^22.4.3" + jest-config "^22.4.3" + jest-environment-jsdom "^22.4.3" + jest-get-type "^22.4.3" + jest-haste-map "^22.4.3" + jest-message-util "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve-dependencies "^22.4.3" + jest-runner "^22.4.3" + jest-runtime "^22.4.3" + jest-snapshot "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" + jest-worker "^22.4.3" + micromatch "^2.3.11" + node-notifier "^5.2.1" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + yargs "^10.0.3" + +jest-config@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403" + dependencies: + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^22.4.3" + jest-environment-node "^22.4.3" + jest-get-type "^22.4.3" + jest-jasmine2 "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" + pretty-format "^22.4.3" + +jest-diff@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" + +jest-docblock@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" + dependencies: + detect-newline "^2.1.0" + +jest-environment-jsdom@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" + dependencies: + jest-mock "^22.4.3" + jest-util "^22.4.3" + jsdom "^11.5.1" + +jest-environment-node@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" + dependencies: + jest-mock "^22.4.3" + jest-util "^22.4.3" + +jest-get-type@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + +jest-haste-map@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^22.4.3" + jest-serializer "^22.4.3" + jest-worker "^22.4.3" + micromatch "^2.3.11" + sane "^2.0.0" + +jest-jasmine2@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965" + dependencies: + chalk "^2.0.1" + co "^4.6.0" + expect "^22.4.3" + graceful-fs "^4.1.11" + is-generator-fn "^1.0.0" + jest-diff "^22.4.3" + jest-matcher-utils "^22.4.3" + jest-message-util "^22.4.3" + jest-snapshot "^22.4.3" + jest-util "^22.4.3" + source-map-support "^0.5.0" + +jest-leak-detector@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35" + dependencies: + pretty-format "^22.4.3" + +jest-matcher-utils@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" + +jest-message-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + +jest-mock@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" + +jest-regex-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" + +jest-resolve-dependencies@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e" + dependencies: + jest-regex-util "^22.4.3" + +jest-resolve@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" + dependencies: + browser-resolve "^1.11.2" + chalk "^2.0.1" + +jest-runner@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.3.tgz#298ddd6a22b992c64401b4667702b325e50610c3" + dependencies: + exit "^0.1.2" + jest-config "^22.4.3" + jest-docblock "^22.4.3" + jest-haste-map "^22.4.3" + jest-jasmine2 "^22.4.3" + jest-leak-detector "^22.4.3" + jest-message-util "^22.4.3" + jest-runtime "^22.4.3" + jest-util "^22.4.3" + jest-worker "^22.4.3" + throat "^4.0.0" + +jest-runtime@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.3.tgz#b69926c34b851b920f666c93e86ba2912087e3d0" + dependencies: + babel-core "^6.0.0" + babel-jest "^22.4.3" + babel-plugin-istanbul "^4.1.5" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^22.4.3" + jest-haste-map "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" + json-stable-stringify "^1.0.1" + micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^10.0.3" + +jest-serializer@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436" + +jest-snapshot@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" + dependencies: + chalk "^2.0.1" + jest-diff "^22.4.3" + jest-matcher-utils "^22.4.3" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^22.4.3" + +jest-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^22.4.3" + mkdirp "^0.5.1" + source-map "^0.6.0" + +jest-validate@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" + dependencies: + chalk "^2.0.1" + jest-config "^22.4.3" + jest-get-type "^22.4.3" + leven "^2.1.0" + pretty-format "^22.4.3" + +jest-worker@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b" + dependencies: + merge-stream "^1.0.1" + +jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.3.tgz#2261f4b117dc46d9a4a1a673d2150958dee92f16" + dependencies: + import-local "^1.0.0" + jest-cli "^22.4.3" + jmespath@0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" @@ -4310,7 +5170,7 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.10.0: +js-yaml@^3.10.0, js-yaml@^3.7.0: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: @@ -4342,7 +5202,7 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@11.6.2: +jsdom@11.6.2, jsdom@^11.5.1: version "11.6.2" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.2.tgz#25d1ef332d48adf77fc5221fe2619967923f16bb" dependencies: @@ -4478,12 +5338,26 @@ katex@^0.9.0: dependencies: match-at "^0.1.1" -kind-of@^3.0.2: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: is-buffer "^1.1.5" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -4516,6 +5390,10 @@ left-pad@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4730,10 +5608,26 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + markdown-it-checkbox@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/markdown-it-checkbox/-/markdown-it-checkbox-1.1.0.tgz#20cff97f33d77d172f9dcf1bcfc92cecc5330fac" @@ -4842,6 +5736,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + memory-fs@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" @@ -4879,12 +5779,16 @@ merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" -merge-stream@^1.0.0: +merge-stream@^1.0.0, merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" dependencies: readable-stream "^2.0.1" +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + methods@~1.1.1, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -4907,6 +5811,24 @@ micromatch@^2.1.5, micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" +micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + "mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" @@ -4985,6 +5907,13 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" @@ -5064,6 +5993,23 @@ nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" @@ -5093,6 +6039,10 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + node-ipc@^8.1.0: version "8.10.3" resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-8.10.3.tgz#223bd431ad7fb2e40c5434f8a5e4558be2568fbd" @@ -5130,6 +6080,15 @@ node-libs-browser@^0.7.0: util "^0.10.3" vm-browserify "0.0.4" +node-notifier@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + dependencies: + growly "^1.3.0" + semver "^5.4.1" + shellwords "^0.1.1" + which "^1.3.0" + node-pre-gyp@^0.6.29: version "0.6.34" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" @@ -5144,6 +6103,22 @@ node-pre-gyp@^0.6.29: tar "^2.2.1" tar-pack "^3.4.0" +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" @@ -5180,7 +6155,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -5266,6 +6241,14 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -5278,6 +6261,19 @@ object-unfreeze@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/object-unfreeze/-/object-unfreeze-1.1.0.tgz#69628bea1f3c9d29f4eb0ba63b38002d70ea3ce9" +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -5285,6 +6281,12 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + observable-to-promise@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f" @@ -5302,7 +6304,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.3: +once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -5322,19 +6324,19 @@ open@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" -optimist@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.4.0.tgz#cb8ec37f2fe3aa9864cb67a275250e7e19620a25" - dependencies: - wordwrap "~0.0.2" - -optimist@~0.6.0, optimist@~0.6.1: +optimist@^0.6.1, optimist@~0.6.0, optimist@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: minimist "~0.0.1" wordwrap "~0.0.2" +optimist@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.4.0.tgz#cb8ec37f2fe3aa9864cb67a275250e7e19620a25" + dependencies: + wordwrap "~0.0.2" + option-chain@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-1.0.0.tgz#938d73bd4e1783f948d34023644ada23669e30f2" @@ -5370,6 +6372,14 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5465,6 +6475,10 @@ parseurl@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -5617,6 +6631,10 @@ pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + postcss-calc@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" @@ -5875,6 +6893,13 @@ pretty-bytes@^1.0.2: get-stdin "^4.0.1" meow "^3.1.0" +pretty-format@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + pretty-ms@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" @@ -6139,6 +7164,13 @@ react-sortable-hoc@^0.6.7: lodash "^4.12.0" prop-types "^15.5.7" +react-test-renderer@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.6.2.tgz#d0333434fc2c438092696ca770da5ed48037efa8" + dependencies: + fbjs "^0.8.9" + object-assign "^4.1.0" + react-transform-catch-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/react-transform-catch-errors/-/react-transform-catch-errors-1.0.2.tgz#1b4d4a76e97271896fc16fe3086c793ec88a9eeb" @@ -6259,6 +7291,12 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" +realpath-native@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + dependencies: + util.promisify "^1.0.0" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -6323,6 +7361,14 @@ regenerator-transform@0.9.11: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -6330,6 +7376,13 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -6375,7 +7428,7 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -6422,7 +7475,7 @@ request@2.55.0: tough-cookie ">=0.12.0" tunnel-agent "~0.4.0" -request@^2.45.0, request@^2.79.0, request@^2.81.0: +request@2.81.0, request@^2.45.0, request@^2.79.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -6513,6 +7566,14 @@ resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + resolve@^1.1.6: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" @@ -6533,6 +7594,10 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -6545,6 +7610,12 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2. dependencies: glob "^7.0.5" +rimraf@^2.5.4: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + rimraf@~2.2.6, rimraf@~2.2.8: version "2.2.8" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" @@ -6589,6 +7660,12 @@ safe-buffer@^5.1.1, safe-buffer@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + sander@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" @@ -6598,6 +7675,20 @@ sander@^0.5.1: mkdirp "^0.5.1" rimraf "^2.5.2" +sane@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.0.tgz#6359cd676f5efd9988b264d8ce3b827dd6b27bec" + dependencies: + anymatch "^2.0.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.1.1" + sanitize-html@^1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.18.2.tgz#61877ba5a910327e42880a28803c2fbafa8e4642" @@ -6690,6 +7781,24 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -6720,6 +7829,10 @@ shelljs@^0.7.5: interpret "^1.0.0" rechoir "^0.6.2" +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" @@ -6756,6 +7869,33 @@ slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" @@ -6802,6 +7942,16 @@ source-list-map@^0.1.4, source-list-map@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -6820,12 +7970,22 @@ source-map-support@^0.5.0: dependencies: source-map "^0.6.0" +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + source-map@0.1.x: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" dependencies: amdefine ">=0.0.4" +source-map@^0.4.4, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -6844,12 +8004,6 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -source-map@~0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - spawn-command@^0.0.2-1: version "0.0.2" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" @@ -6872,6 +8026,12 @@ speedometer@~0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -6933,6 +8093,13 @@ standard@^8.4.0: eslint-plugin-standard "~2.0.1" standard-engine "~5.2.0" +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + "statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -6966,6 +8133,13 @@ strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7034,16 +8208,16 @@ strip-bom-buf@^1.0.0: dependencies: is-utf8 "^0.2.1" +strip-bom@3.0.0, strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -7153,7 +8327,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3: +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -7242,10 +8416,24 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" +test-exclude@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" + dependencies: + arrify "^1.0.1" + micromatch "^3.1.8" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + throttleit@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" @@ -7296,6 +8484,10 @@ tmp@0.0.28: dependencies: os-tmpdir "~1.0.1" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -7304,6 +8496,28 @@ to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + toggle-selection@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.5.tgz#726c703de607193a73c32c7df49cd24950fc574f" @@ -7409,6 +8623,15 @@ uc.micro@^1.0.0, uc.micro@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" +uglify-js@^2.6: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + uglify-js@~2.7.3: version "2.7.5" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" @@ -7464,6 +8687,15 @@ underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -7496,6 +8728,13 @@ unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + unzip-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" @@ -7518,6 +8757,10 @@ update-notifier@^2.3.0: semver-diff "^2.0.0" xdg-basedir "^3.0.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -7552,6 +8795,12 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" @@ -7562,6 +8811,13 @@ util-deprecate@1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -7617,6 +8873,12 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + warning@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/warning/-/warning-2.1.0.tgz#21220d9c63afc77a8c92111e011af705ce0c6901" @@ -7629,6 +8891,13 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + watchpack@^0.2.1: version "0.2.9" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b" @@ -7760,6 +9029,16 @@ which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.12, which@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + which@^1.2.9: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" @@ -7831,7 +9110,7 @@ write-file-atomic@^1.1.4: imurmurhash "^0.1.4" slide "^1.1.5" -write-file-atomic@^2.0.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -7929,6 +9208,29 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" +yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + dependencies: + camelcase "^4.1.0" + +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.1.0" + yargs@^3.32.0: version "3.32.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" From 646ebe592e0febe2124facc0ff1071d855be4171 Mon Sep 17 00:00:00 2001 From: Nikolay Lopin Date: Sun, 25 Mar 2018 21:02:35 +0300 Subject: [PATCH 18/36] Add setup files and localstorage mock --- package.json | 6 +++++- tests/jest.js | 12 ++++++++++++ yarn.lock | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/jest.js diff --git a/package.json b/package.json index 7c6c2a98..18f93450 100644 --- a/package.json +++ b/package.json @@ -163,6 +163,10 @@ "moduleNameMapper": { "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js", "\\.(css|less|styl)$": "identity-obj-proxy" - } + }, + "setupFiles": [ + "/tests/jest.js", + "jest-localstorage-mock" + ] } } diff --git a/tests/jest.js b/tests/jest.js new file mode 100644 index 00000000..6f830c67 --- /dev/null +++ b/tests/jest.js @@ -0,0 +1,12 @@ +// Here you can mock the libraries connected through direct insertion + From 254c8816f1cfb88a052b7b2a3aec004bcd12a8f4 Mon Sep 17 00:00:00 2001 From: bimlas Date: Tue, 27 Mar 2018 22:09:20 +0200 Subject: [PATCH 22/36] Fix highlighting of active tag The currently selected tag was not highlighted in the list. Before: ![screencast](https://i.imgur.com/6JsjYk7.gif) After: ![screencast](https://i.imgur.com/xD6fc0c.gif) --- browser/main/SideNav/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/main/SideNav/index.js b/browser/main/SideNav/index.js index c3ad11ce..2298a555 100644 --- a/browser/main/SideNav/index.js +++ b/browser/main/SideNav/index.js @@ -139,7 +139,7 @@ class SideNav extends React.Component { From 27a9def88c4d56cb3f6633c7dce133eb4f729d4b Mon Sep 17 00:00:00 2001 From: Frank Kanis Date: Wed, 28 Mar 2018 21:55:22 +0200 Subject: [PATCH 23/36] Fixed change language in production --- browser/lib/i18n.js | 7 +++++++ browser/main/lib/ConfigManager.js | 32 +------------------------------ 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index fe339072..7731eb9d 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -1,8 +1,15 @@ +const path = require('path') +const { remote } = require('electron') +const { app } = remote + // load package for localization const i18n = new (require('i18n-2'))({ // setup some locales - other locales default to the first locale locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'hu', 'ja', 'ko', 'no', 'pl', 'pt', 'es-ES'], extension: '.json', + directory: process.env.NODE_ENV === 'production' + ? path.join(app.getAppPath(),'./locales') + : path.resolve('./locales'), devMode: false }) diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 157973ea..9f1a2ee9 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -138,37 +138,7 @@ function set (updates) { document.body.setAttribute('data-theme', 'default') } - if (newConfig.ui.language === 'sq') { - i18n.setLocale('sq') - } else if (newConfig.ui.language === 'zh-CN') { - i18n.setLocale('zh-CN') - } else if (newConfig.ui.language === 'zh-TW') { - i18n.setLocale('zh-TW') - } else if (newConfig.ui.language === 'da') { - i18n.setLocale('da') - } else if (newConfig.ui.language === 'fr') { - i18n.setLocale('fr') - } else if (newConfig.ui.language === 'de') { - i18n.setLocale('de') - } else if (newConfig.ui.language === 'hu') { - i18n.setLocale('hu') - } else if (newConfig.ui.language === 'ja') { - i18n.setLocale('ja') - } else if (newConfig.ui.language === 'ko') { - i18n.setLocale('ko') - } else if (newConfig.ui.language === 'no') { - i18n.setLocale('no') - } else if (newConfig.ui.language === 'pl') { - i18n.setLocale('pl') - } else if (newConfig.ui.language === 'pt') { - i18n.setLocale('pt') - } else if (newConfig.ui.language === 'ru') { - i18n.setLocale('ru') - } else if (newConfig.ui.language === 'es-ES') { - i18n.setLocale('es-ES') - } else { - i18n.setLocale('en') - } + i18n.setLocale(newConfig.ui.language) let editorTheme = document.getElementById('editorTheme') if (editorTheme == null) { From 6943b06a884b2b726f5dc30060690fb2873322a8 Mon Sep 17 00:00:00 2001 From: Frank Kanis Date: Wed, 28 Mar 2018 22:06:50 +0200 Subject: [PATCH 24/36] Added missing space --- browser/lib/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index 7731eb9d..0da1dd25 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -8,7 +8,7 @@ const i18n = new (require('i18n-2'))({ locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'hu', 'ja', 'ko', 'no', 'pl', 'pt', 'es-ES'], extension: '.json', directory: process.env.NODE_ENV === 'production' - ? path.join(app.getAppPath(),'./locales') + ? path.join(app.getAppPath(), './locales') : path.resolve('./locales'), devMode: false }) From bbf6c60888b391afb8b2097c3f21a8ea5b6e897a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cli1xu1bin=E2=80=9D?= Date: Sat, 31 Mar 2018 18:58:21 +0800 Subject: [PATCH 25/36] Chinesization --- locales/zh-CN.json | 232 ++++++++++++++++++++++----------------------- locales/zh-TW.json | 232 ++++++++++++++++++++++----------------------- 2 files changed, 232 insertions(+), 232 deletions(-) mode change 100644 => 100755 locales/zh-CN.json mode change 100644 => 100755 locales/zh-TW.json diff --git a/locales/zh-CN.json b/locales/zh-CN.json old mode 100644 new mode 100755 index 01a6fe0b..b736520d --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -1,138 +1,138 @@ { - "Notes": "Notes", - "Tags": "Tags", - "Preferences": "Preferences", - "Make a note": "Make a note", + "Notes": "笔记", + "Tags": "标签", + "Preferences": "首选项", + "Make a note": "新建笔记", "Ctrl": "Ctrl", "Ctrl(^)": "Ctrl", - "to create a new note": "to create a new note", - "Toggle Mode": "Toggle Mode", - "Trash": "Trash", - "MODIFICATION DATE": "MODIFICATION DATE", - "Words": "Words", - "Letters": "Letters", - "STORAGE": "STORAGE", - "FOLDER": "FOLDER", - "CREATION DATE": "CREATION DATE", - "NOTE LINK": "NOTE LINK", + "to create a new note": "新建笔记", + "Toggle Mode": "切换模式", + "Trash": "废纸篓", + "MODIFICATION DATE": "更改时间", + "Words": "单词", + "Letters": "字数", + "STORAGE": "本地存储", + "FOLDER": "文件夹", + "CREATION DATE": "创建时间", + "NOTE LINK": "笔记链接", ".md": ".md", ".txt": ".txt", ".html": ".html", - "Print": "Print", - "Your preferences for Boostnote": "Your preferences for Boostnote", - "Storages": "Storages", - "Add Storage Location": "Add Storage Location", - "Add Folder": "Add Folder", - "Open Storage folder": "Open Storage folder", - "Unlink": "Unlink", - "Edit": "Edit", - "Delete": "Delete", - "Interface": "Interface", - "Interface Theme": "Interface Theme", - "Default": "Default", + "Print": "打印", + "Your preferences for Boostnote": "个性设置", + "Storages": "本地存储", + "Add Storage Location": "添加一个本地存储位置", + "Add Folder": "新建文件夹", + "Open Storage folder": "打开本地存储位置", + "Unlink": "取消链接", + "Edit": "编辑", + "Delete": "删除", + "Interface": "界面", + "Interface Theme": "主题", + "Default": "默认", "White": "White", "Solarized Dark": "Solarized Dark", "Dark": "Dark", - "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes", - "Editor Theme": "Editor Theme", - "Editor Font Size": "Editor Font Size", - "Editor Font Family": "Editor Font Family", - "Editor Indent Style": "Editor Indent Style", - "Spaces": "Spaces", + "Show a confirmation dialog when deleting notes": "删除笔记的时候,显示确认框", + "Editor Theme": "编辑器主题", + "Editor Font Size": "编辑器字号", + "Editor Font Family": "编辑器字体", + "Editor Indent Style": "缩进风格", + "Spaces": "空格", "Tabs": "Tabs", - "Switch to Preview": "Switch to Preview", - "When Editor Blurred": "When Editor Blurred", - "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click", - "On Right Click": "On Right Click", - "Editor Keymap": "Editor Keymap", - "default": "default", + "Switch to Preview": "快速切换到预览界面", + "When Editor Blurred": "当编辑器失去焦点的时候,切换到预览界面", + "When Editor Blurred, Edit On Double Click": "当编辑器失去焦点的时候预览,双击切换到编辑界面", + "On Right Click": "右键点击切换两个界面", + "Editor Keymap": "编辑器 Keymap", + "default": "默认", "vim": "vim", "emacs": "emacs", - "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap", - "Show line numbers in the editor": "Show line numbers in the editor", - "Allow editor to scroll past the last line": "Allow editor to scroll past the last line", - "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor", - "Preview": "Preview", - "Preview Font Size": "Preview Font Size", - "Preview Font Family": "Preview Font Family", - "Code block Theme": "Code block Theme", - "Allow preview to scroll past the last line": "Allow preview to scroll past the last line", - "Show line numbers for preview code blocks": "Show line numbers for preview code blocks", - "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter", - "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter", - "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter", - "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter", - "Community": "Community", - "Subscribe to Newsletter": "Subscribe to Newsletter", + "⚠️ Please restart boostnote after you change the keymap": "⚠️ 设置好快捷键后,记得重启boostnote", + "Show line numbers in the editor": "在编辑器中显示行号", + "Allow editor to scroll past the last line": "允许编辑器滚动到最后一行", + "Bring in web page title when pasting URL on editor": "粘贴网页链接的时候,显示为网页标题", + "Preview": "预览器", + "Preview Font Size": "预览器字号", + "Preview Font Family": "预览器字体", + "Code block Theme": "代码块主题", + "Allow preview to scroll past the last line": "允许预览器滚动到最后一行", + "Show line numbers for preview code blocks": "在预览器中显示行号", + "LaTeX Inline Open Delimiter": "LaTeX 单行开头分隔符", + "LaTeX Inline Close Delimiter": "LaTeX 单行结尾分隔符", + "LaTeX Block Open Delimiter": "LaTeX 多行开头分隔符", + "LaTeX Block Close Delimiter": "LaTeX 多行结尾分隔符", + "Community": "社区", + "Subscribe to Newsletter": "订阅邮件", "GitHub": "GitHub", - "Blog": "Blog", + "Blog": "博客", "Facebook Group": "Facebook Group", "Twitter": "Twitter", - "About": "About", + "About": "关于", "Boostnote": "Boostnote", - "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.", - "Website": "Website", - "Development": "Development", - " : Development configurations for Boostnote.": " : Development configurations for Boostnote.", + "An open source note-taking app made for programmers just like you.": "一款专门为程序员朋友量身打造的开源笔记", + "Website": "官网", + "Development": "开发", + " : Development configurations for Boostnote.": " : Boostnote的开发配置", "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO", "License: GPL v3": "License: GPL v3", - "Analytics": "Analytics", - "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.", - "You can see how it works on ": "You can see how it works on ", - "You can choose to enable or disable this option.": "You can choose to enable or disable this option.", - "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote", - "Crowdfunding": "Crowdfunding", - "Dear everyone,": "Dear everyone,", - "Thank you for using Boostnote!": "Thank you for using Boostnote!", - "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.", - "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,", - "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.", - "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!", - "Thanks,": "Thanks,", - "Boostnote maintainers": "Boostnote maintainers", - "Support via OpenCollective": "Support via OpenCollective", - "Language": "Language", + "Analytics": "分析", + "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote 收集匿名数据只为了提升软件使用体验,绝对不收集任何个人信息(包括笔记内容)", + "You can see how it works on ": "你可以看看它的源码是如何运作的 ", + "You can choose to enable or disable this option.": "你可以选择开启或不开启这个功能", + "Enable analytics to help improve Boostnote": "允许对数据进行分析,帮助我们改进Boostnote", + "Crowdfunding": "众筹", + "Dear everyone,": "亲爱的用户:", + "Thank you for using Boostnote!": "谢谢你使用Boostnote!", + "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "大约有200个不同的国家和地区的优秀开发者们都在使用Boostnote!", + "To continue supporting this growth, and to satisfy community expectations,": "为了继续支持这种发展,和满足社区的期待,", + "we would like to invest more time and resources in this project.": "我们非常愿意投入更多的时间和资源到这个项目中。", + "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "如果你喜欢这款软件并且看好它的潜力, 请在OpenCollective上支持我们!", + "Thanks,": "十分感谢!", + "Boostnote maintainers": "Boostnote的维护人员", + "Support via OpenCollective": "在OpenCollective上支持我们", + "Language": "语言", "English": "English", "German": "German", "French": "French", - "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", - "All Notes": "All Notes", - "Starred": "Starred", - "Are you sure to ": "Are you sure to ", - " delete": " delete", - "this folder?": "this folder?", - "Confirm": "Confirm", - "Cancel": "Cancel", - "Markdown Note": "Markdown Note", - "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.", - "Snippet Note": "Snippet Note", - "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.", - "Tab to switch format": "Tab to switch format", - "Updated": "Updated", - "Created": "Created", - "Alphabetically": "Alphabetically", - "Default View": "Default View", - "Compressed View": "Compressed View", - "Search": "Search", - "Blog Type": "Blog Type", - "Blog Address": "Blog Address", - "Save": "Save", + "Show \"Saved to Clipboard\" notification when copying": "复制的时候,显示 \"已复制\" 提示", + "All Notes": "所有笔记", + "Starred": "星标收藏", + "Are you sure to ": "你确定要", + " delete": " 删除", + "this folder?": "这个文件夹?", + "Confirm": "确认", + "Cancel": "取消", + "Markdown Note": "Markdown笔记", + "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "创建文档,清单,代码块甚至是Latex格式文档", + "Snippet Note": "代码笔记", + "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "创建代码片段,支持多种语法代码片段", + "Tab to switch format": "使用Tab键切换格式", + "Updated": "更新时间", + "Created": "创建时间", + "Alphabetically": "A~Z排序", + "Default View": "默认视图", + "Compressed View": "列表视图", + "Search": "搜索", + "Blog Type": "博客类型", + "Blog Address": "博客地址", + "Save": "保存", "Auth": "Auth", - "Authentication Method": "Authentication Method", + "Authentication Method": "认证方法", "JWT": "JWT", "USER": "USER", "Token": "Token", - "Storage": "Storage", - "Hotkeys": "Hotkeys", - "Show/Hide Boostnote": "Show/Hide Boostnote", - "Restore": "Restore", - "Permanent Delete": "Permanent Delete", - "Confirm note deletion": "Confirm note deletion", - "This will permanently remove this note.": "This will permanently remove this note.", - "Successfully applied!": "Successfully applied!", + "Storage": "本地存储", + "Hotkeys": "快捷键", + "Show/Hide Boostnote": "显示/隐藏 Boostnote", + "Restore": "恢复", + "Permanent Delete": "永久删除", + "Confirm note deletion": "确认删除笔记", + "This will permanently remove this note.": "永久地删除这条笔记", + "Successfully applied!": "设置成功", "Albanian": "Albanian", - "Chinese (zh-CN)": "Chinese (zh-CN)", - "Chinese (zh-TW)": "Chinese (zh-TW)", + "Chinese (zh-CN)": "简体中文", + "Chinese (zh-TW)": "繁體中文", "Danish": "Danish", "Japanese": "Japanese", "Korean": "Korean", @@ -140,13 +140,13 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!", + "You have to save!": "你必须保存一下!", "Russian": "Russian", "Editor Rulers": "Editor Rulers", - "Enable": "Enable", - "Disable": "Disable", - "Sanitization": "Sanitization", - "Only allow secure html tags (recommended)": "Only allow secure html tags (recommended)", - "Allow styles": "Allow styles", - "Allow dangerous html tags": "Allow dangerous html tags" + "Enable": "开启", + "Disable": "关闭", + "Sanitization": "代码处理", + "Only allow secure html tags (recommended)": "只允许安全的html标签(推荐)", + "Allow styles": "允许样式", + "Allow dangerous html tags": "允许危险的html标签" } diff --git a/locales/zh-TW.json b/locales/zh-TW.json old mode 100644 new mode 100755 index 01a6fe0b..06f40608 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -1,138 +1,138 @@ { - "Notes": "Notes", - "Tags": "Tags", - "Preferences": "Preferences", - "Make a note": "Make a note", + "Notes": "筆記", + "Tags": "標籤", + "Preferences": "首選項", + "Make a note": "新建筆記", "Ctrl": "Ctrl", "Ctrl(^)": "Ctrl", - "to create a new note": "to create a new note", - "Toggle Mode": "Toggle Mode", - "Trash": "Trash", - "MODIFICATION DATE": "MODIFICATION DATE", - "Words": "Words", - "Letters": "Letters", - "STORAGE": "STORAGE", - "FOLDER": "FOLDER", - "CREATION DATE": "CREATION DATE", - "NOTE LINK": "NOTE LINK", + "to create a new note": "新建筆記", + "Toggle Mode": "切換模式", + "Trash": "廢紙簍", + "MODIFICATION DATE": "更改時間", + "Words": "單詞", + "Letters": "字數", + "STORAGE": "本地儲存", + "FOLDER": "資料夾", + "CREATION DATE": "創建時間", + "NOTE LINK": "筆記鏈接", ".md": ".md", ".txt": ".txt", ".html": ".html", - "Print": "Print", - "Your preferences for Boostnote": "Your preferences for Boostnote", - "Storages": "Storages", - "Add Storage Location": "Add Storage Location", - "Add Folder": "Add Folder", - "Open Storage folder": "Open Storage folder", - "Unlink": "Unlink", - "Edit": "Edit", - "Delete": "Delete", - "Interface": "Interface", - "Interface Theme": "Interface Theme", - "Default": "Default", + "Print": "列印", + "Your preferences for Boostnote": "個性設置", + "Storages": "本地儲存", + "Add Storage Location": "添加一個本地儲存位置", + "Add Folder": "新建資料夾", + "Open Storage folder": "打開一個本地儲存位置", + "Unlink": "取消鏈接", + "Edit": "編輯", + "Delete": "刪除", + "Interface": "界面", + "Interface Theme": "主題", + "Default": "默認", "White": "White", "Solarized Dark": "Solarized Dark", "Dark": "Dark", - "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes", - "Editor Theme": "Editor Theme", - "Editor Font Size": "Editor Font Size", - "Editor Font Family": "Editor Font Family", - "Editor Indent Style": "Editor Indent Style", - "Spaces": "Spaces", + "Show a confirmation dialog when deleting notes": "刪除筆記的時候,顯示確認框", + "Editor Theme": "編輯器主題", + "Editor Font Size": "編輯器字型大小", + "Editor Font Family": "編輯器字體", + "Editor Indent Style": "縮進風格", + "Spaces": "空格", "Tabs": "Tabs", - "Switch to Preview": "Switch to Preview", - "When Editor Blurred": "When Editor Blurred", - "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click", - "On Right Click": "On Right Click", - "Editor Keymap": "Editor Keymap", - "default": "default", + "Switch to Preview": "快速切換到預覽界面", + "When Editor Blurred": "當編輯器失去焦點的時候,切換到預覽界面", + "When Editor Blurred, Edit On Double Click": "當編輯器失去焦點的時候預覽,雙擊切換到編輯界面", + "On Right Click": "右鍵點擊切換兩個界面", + "Editor Keymap": "編輯器 Keymap", + "default": "默認", "vim": "vim", "emacs": "emacs", - "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap", - "Show line numbers in the editor": "Show line numbers in the editor", - "Allow editor to scroll past the last line": "Allow editor to scroll past the last line", - "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor", - "Preview": "Preview", - "Preview Font Size": "Preview Font Size", - "Preview Font Family": "Preview Font Family", - "Code block Theme": "Code block Theme", - "Allow preview to scroll past the last line": "Allow preview to scroll past the last line", - "Show line numbers for preview code blocks": "Show line numbers for preview code blocks", - "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter", - "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter", - "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter", - "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter", - "Community": "Community", - "Subscribe to Newsletter": "Subscribe to Newsletter", + "⚠️ Please restart boostnote after you change the keymap": "⚠️ 設置好快捷鍵後,記得重啟设置好快捷键后,记得重启boostnote", + "Show line numbers in the editor": "在編輯器中顯示行號", + "Allow editor to scroll past the last line": "允許編輯器滾動到最後一行", + "Bring in web page title when pasting URL on editor": "粘貼網頁鏈接的時候,顯示為網頁標題", + "Preview": "預覽器", + "Preview Font Size": "預覽器字型大小", + "Preview Font Family": "預覽器字體", + "Code block Theme": "代碼塊主題", + "Allow preview to scroll past the last line": "允許預覽器滾動到最後一行", + "Show line numbers for preview code blocks": "在預覽器中顯示行號", + "LaTeX Inline Open Delimiter": "LaTeX 單行開頭分隔符", + "LaTeX Inline Close Delimiter": "LaTeX 單行結尾分隔符", + "LaTeX Block Open Delimiter": "LaTeX 多行開頭分隔符", + "LaTeX Block Close Delimiter": "LaTeX 多行結尾分隔符", + "Community": "社區", + "Subscribe to Newsletter": "訂閱郵件", "GitHub": "GitHub", - "Blog": "Blog", + "Blog": "部落格", "Facebook Group": "Facebook Group", "Twitter": "Twitter", - "About": "About", + "About": "關於", "Boostnote": "Boostnote", - "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.", - "Website": "Website", - "Development": "Development", - " : Development configurations for Boostnote.": " : Development configurations for Boostnote.", + "An open source note-taking app made for programmers just like you.": "一款專門為程式員朋友量身打造的開源筆記", + "Website": "官網", + "Development": "開發", + " : Development configurations for Boostnote.": " : Boostnote的開發配置", "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO", "License: GPL v3": "License: GPL v3", - "Analytics": "Analytics", - "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.", - "You can see how it works on ": "You can see how it works on ", - "You can choose to enable or disable this option.": "You can choose to enable or disable this option.", - "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote", - "Crowdfunding": "Crowdfunding", - "Dear everyone,": "Dear everyone,", - "Thank you for using Boostnote!": "Thank you for using Boostnote!", - "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.", - "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,", - "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.", - "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!", - "Thanks,": "Thanks,", - "Boostnote maintainers": "Boostnote maintainers", - "Support via OpenCollective": "Support via OpenCollective", - "Language": "Language", + "Analytics": "分析", + "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote 收集匿名數據只為了提升軟體使用體驗,絕對不收集任何個人信息(包括筆記內容)", + "You can see how it works on ": "你可以看看它的源碼是如何運作的 ", + "You can choose to enable or disable this option.": "你可以選擇開啟或不開啟這個功能", + "Enable analytics to help improve Boostnote": "允許對數據進行分析,幫助我們改進Boostnote", + "Crowdfunding": "眾籌", + "Dear everyone,": "親愛的用戶:", + "Thank you for using Boostnote!": "謝謝你使用Boostnote!", + "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "大約有200個不同的國家和地區的優秀開發者們都在使用Boostnote!", + "To continue supporting this growth, and to satisfy community expectations,": "為了繼續支持這種發展,和滿足社區的期待,", + "we would like to invest more time and resources in this project.": "我們非常願意投入更多的時間和資源到這個專案中。", + "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "如果你喜歡這款軟體並且看好它的潛力, 請在OpenCollective上支持我們!", + "Thanks,": "十分感謝!", + "Boostnote maintainers": "Boostnote的維護人員", + "Support via OpenCollective": "在OpenCollective上支持我們", + "Language": "語言", "English": "English", "German": "German", "French": "French", - "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", - "All Notes": "All Notes", - "Starred": "Starred", - "Are you sure to ": "Are you sure to ", - " delete": " delete", - "this folder?": "this folder?", - "Confirm": "Confirm", - "Cancel": "Cancel", - "Markdown Note": "Markdown Note", - "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.", - "Snippet Note": "Snippet Note", - "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.", - "Tab to switch format": "Tab to switch format", - "Updated": "Updated", - "Created": "Created", - "Alphabetically": "Alphabetically", - "Default View": "Default View", - "Compressed View": "Compressed View", - "Search": "Search", - "Blog Type": "Blog Type", - "Blog Address": "Blog Address", - "Save": "Save", + "Show \"Saved to Clipboard\" notification when copying": "複製的時候,顯示 \"已複製\" 提示", + "All Notes": "所有筆記", + "Starred": "星標收藏", + "Are you sure to ": "你確定要 ", + " delete": " 刪除", + "this folder?": "這個資料夾嗎?", + "Confirm": "確認", + "Cancel": "取消", + "Markdown Note": "Markdown筆記", + "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "創建文檔,清單,代碼塊甚至是Latex格式文檔", + "Snippet Note": "代碼筆記", + "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "創建代碼片段,支持多種語法代碼片段", + "Tab to switch format": "使用Tab鍵切換格式", + "Updated": "更新時間", + "Created": "創建時間", + "Alphabetically": "A~Z排序", + "Default View": "默認視圖", + "Compressed View": "列表視圖", + "Search": "搜索", + "Blog Type": "部落格類型", + "Blog Address": "部落格地址", + "Save": "保存", "Auth": "Auth", - "Authentication Method": "Authentication Method", + "Authentication Method": "認證方法", "JWT": "JWT", "USER": "USER", "Token": "Token", - "Storage": "Storage", - "Hotkeys": "Hotkeys", - "Show/Hide Boostnote": "Show/Hide Boostnote", - "Restore": "Restore", - "Permanent Delete": "Permanent Delete", - "Confirm note deletion": "Confirm note deletion", - "This will permanently remove this note.": "This will permanently remove this note.", - "Successfully applied!": "Successfully applied!", + "Storage": "本地儲存", + "Hotkeys": "快捷鍵", + "Show/Hide Boostnote": "顯示/隱藏 Boostnote", + "Restore": "恢復", + "Permanent Delete": "永久刪除", + "Confirm note deletion": "確認刪除筆記", + "This will permanently remove this note.": "永久地刪除這條筆記", + "Successfully applied!": "設置成功", "Albanian": "Albanian", - "Chinese (zh-CN)": "Chinese (zh-CN)", - "Chinese (zh-TW)": "Chinese (zh-TW)", + "Chinese (zh-CN)": "简体中文", + "Chinese (zh-TW)": "繁體中文", "Danish": "Danish", "Japanese": "Japanese", "Korean": "Korean", @@ -140,13 +140,13 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!", + "You have to save!": "你必須儲存一下!", "Russian": "Russian", "Editor Rulers": "Editor Rulers", - "Enable": "Enable", - "Disable": "Disable", - "Sanitization": "Sanitization", - "Only allow secure html tags (recommended)": "Only allow secure html tags (recommended)", - "Allow styles": "Allow styles", - "Allow dangerous html tags": "Allow dangerous html tags" + "Enable": "開啟", + "Disable": "關閉", + "Sanitization": "代碼處理", + "Only allow secure html tags (recommended)": "只允許安全的html標籤(推薦)", + "Allow styles": "允許樣式", + "Allow dangerous html tags": "允許危險的html標籤" } From c151049cc21d545e434f1188aa7cfc744c0671ce Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Wed, 4 Apr 2018 21:17:07 +0900 Subject: [PATCH 26/36] fix folded storagelist width --- browser/components/StorageList.js | 4 ++-- browser/components/StorageList.styl | 4 ++++ browser/main/SideNav/index.js | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/browser/components/StorageList.js b/browser/components/StorageList.js index 33557eb3..739a5f9a 100644 --- a/browser/components/StorageList.js +++ b/browser/components/StorageList.js @@ -10,8 +10,8 @@ import CSSModules from 'browser/lib/CSSModules' * @param {Array} storgaeList */ -const StorageList = ({storageList}) => ( -
+const StorageList = ({storageList, isFolded}) => ( +
{storageList.length > 0 ? storageList : (
No storage mount.
)} diff --git a/browser/components/StorageList.styl b/browser/components/StorageList.styl index dfb06b45..474f896b 100644 --- a/browser/components/StorageList.styl +++ b/browser/components/StorageList.styl @@ -4,6 +4,10 @@ top 180px overflow-y auto +.storageList-folded + @extend .storageList + width 44px + .storageList-empty padding 0 10px margin-top 15px diff --git a/browser/main/SideNav/index.js b/browser/main/SideNav/index.js index 2298a555..149b64f9 100644 --- a/browser/main/SideNav/index.js +++ b/browser/main/SideNav/index.js @@ -108,7 +108,7 @@ class SideNav extends React.Component { handleFilterButtonContextMenu={this.handleFilterButtonContextMenu.bind(this)} /> - +
) From 4fcc9af933ee77c69ddd18dc9bcd0d95f4872559 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Tue, 10 Apr 2018 15:47:58 +0900 Subject: [PATCH 27/36] add jest-localstorage-mock --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 18f93450..db413bed 100644 --- a/package.json +++ b/package.json @@ -125,6 +125,7 @@ "history": "^1.17.0", "identity-obj-proxy": "^3.0.0", "jest": "^22.4.3", + "jest-localstorage-mock": "^2.2.0", "jsdom": "^9.4.2", "json-loader": "^0.5.4", "merge-stream": "^1.0.0", From 2c8f3b56aea4208d8b68850ee97795d3336a8329 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Tue, 10 Apr 2018 17:14:25 +0900 Subject: [PATCH 28/36] use arrow functions --- browser/main/SideNav/index.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/browser/main/SideNav/index.js b/browser/main/SideNav/index.js index a20fe665..af9ab925 100644 --- a/browser/main/SideNav/index.js +++ b/browser/main/SideNav/index.js @@ -145,13 +145,12 @@ class SideNav extends React.Component { tagListComponent () { const { data, location, config } = this.props - let tagList = _.sortBy(data.tagNoteMap.map((tag, name) => { - return { name, size: tag.size } - }), ['name']) + let tagList = _.sortBy(data.tagNoteMap.map( + (tag, name) => ({name, size: tag.size})), + ['name'] + ) if (config.sortTagsBy === 'COUNTER') { - tagList = _.sortBy(tagList, function (item) { - return 0 - item.size - }) + tagList = _.sortBy(tagList, item => (0 - item.size)) } return ( tagList.map(tag => { From 0d53f799b759ddb293a6e1d44c2752ed96bc0331 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Tue, 10 Apr 2018 18:40:57 +0900 Subject: [PATCH 29/36] to short an arrow function --- browser/lib/search.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/browser/lib/search.js b/browser/lib/search.js index 46d47677..b42fd389 100644 --- a/browser/lib/search.js +++ b/browser/lib/search.js @@ -19,9 +19,7 @@ function findByWordOrTag (notes, block) { const tagRegExp = new RegExp(_.escapeRegExp(tag), 'i') const wordRegExp = new RegExp(_.escapeRegExp(block), 'i') return notes.filter((note) => { - if (_.isArray(note.tags) && note.tags.some((_tag) => { - return _tag.match(tagRegExp) - })) { + if (_.isArray(note.tags) && note.tags.some((_tag) => _tag.match(tagRegExp))) { return true } if (note.type === 'SNIPPET_NOTE') { From 4b9cf775ff47010ff71b5ab3d0577bed385bebf8 Mon Sep 17 00:00:00 2001 From: Junyoung Choi Date: Wed, 11 Apr 2018 08:16:20 +0900 Subject: [PATCH 30/36] v0.11.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 67a45b72..038d4c00 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "boost", "productName": "Boostnote", - "version": "0.11.3", + "version": "0.11.4", "main": "index.js", "description": "Boostnote", "license": "GPL-3.0", From 4147399cdaa22784a0ec76d96a377206c28f047d Mon Sep 17 00:00:00 2001 From: Romain Le Quellec Date: Thu, 12 Apr 2018 13:25:37 +0200 Subject: [PATCH 31/36] add issue template --- ISSUE_TEMPLATE.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index be4b7e4f..4549ded9 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,10 +1,30 @@ +I want to report a : + +- [] bug +- [] feature + +# Current behavior + +# Expected behavior + +# Steps to reproduce + +1. +2. +3. + +# Environment + +- Version : +- OS Version and name : + +--> \ No newline at end of file From 0dbfaf0e797acd0bcacd5f4142d1cab800a20ae6 Mon Sep 17 00:00:00 2001 From: Romain Le Quellec Date: Thu, 12 Apr 2018 13:34:26 +0200 Subject: [PATCH 32/36] fix checkbox --- ISSUE_TEMPLATE.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 4549ded9..9ad8c6ef 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,7 +1,9 @@ I want to report a : -- [] bug -- [] feature + + +- [ ] bug +- [ ] feature # Current behavior From 0be1c2f46481cf0088aaffbfd335f6a423f326b9 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 12 Apr 2018 19:47:02 +0200 Subject: [PATCH 33/36] remove unnecessary lines --- ISSUE_TEMPLATE.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 9ad8c6ef..f185492a 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,10 +1,3 @@ -I want to report a : - - - -- [ ] bug -- [ ] feature - # Current behavior