diff --git a/.eslintrc b/.eslintrc index c041fd7..b1b0b6e 100644 --- a/.eslintrc +++ b/.eslintrc @@ -10,6 +10,7 @@ }, "rules": { "semi": ["error", "never"], + "no-use-before-define": ["error", { "functions": false }], "comma-dangle": ["error", "always-multiline"], "no-console": 0 } diff --git a/.gitignore b/.gitignore index ad46b30..ba8c0db 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,5 @@ typings/ # next.js build output .next + +CHANGELOG.json diff --git a/CHANGELOG.json b/CHANGELOG.json deleted file mode 100644 index df01bc4..0000000 --- a/CHANGELOG.json +++ /dev/null @@ -1 +0,0 @@ -[{"hash":"0e650182544bd4e16cccbdd42e6f1e36b320095c","date":"2018-08-30T10:35:17+02:00","subject":"Merge branch 'master' into refactor/remove-babel","body":""},{"hash":"802c0f7dc29508876c6b4d178bbcc8274ee308b5","date":"2018-08-29T14:42:42+02:00","subject":":green_heart: Ignore node_modules in linter","body":""},{"hash":"32e0d943c2b4d06b610b17748486d3cc1e4f3a5a","date":"2018-08-28T20:59:50+02:00","subject":":wrench: missing package.json to update","body":""},{"hash":"4df1b8c92e04902698e13041664642ae16c4c3b4","date":"2018-08-28T19:49:30+02:00","subject":":sparkles: add 'use strict'","body":""},{"hash":"dfe9aa9ebaca0003f2a403fee8bdd8d612512dee","date":"2018-08-28T19:48:51+02:00","subject":":fire: remove bad property in package.json","body":""},{"hash":"e93603e071062aac50a126f85121e5ee6ff427aa","date":"2018-08-28T19:37:41+02:00","subject":":wrench: add engines attribute to node 10 in package.json","body":""},{"hash":"1213a06adf517cf57867a1d7c380c5c2e1936b67","date":"2018-08-28T19:36:31+02:00","subject":":recycle: refactor code to native node 10","body":""},{"hash":"379d1854991d4d974a50179f6b72a7e83fa674f9","date":"2018-08-28T19:32:56+02:00","subject":":wrench: remove .babelrc and change eslint to remove babel parser","body":""},{"hash":"f3a2a5cff11d4e0835ae74e70b74acdd8379347b","date":"2018-08-28T19:31:20+02:00","subject":":heavy_minus_sign: remove babel dependencies","body":""},{"hash":"b165f695f4c1a49ff16a5f03918545bfb36cf367","date":"2018-08-28T16:54:26+02:00","subject":":sparkles: Convert changelog to markdown","body":""},{"hash":"10c6d3e20b82f5a0f6ce5cd372899e6519bc2412","date":"2018-08-28T16:09:52+02:00","subject":":sparkles: Generate markdown first draft function","body":""},{"hash":"a4a12bb4f7133e7e5e40436da4c884f135abf03d","date":"2018-08-28T15:51:52+02:00","subject":":tada: Intialize markdown project","body":""},{"hash":"86ca3eaefb18fd9c9b6bb4256ed2f6fa711aef59","date":"2018-08-28T15:45:31+02:00","subject":":sparkles: Generate changelog JSON file","body":""},{"hash":"c912efd73b9b286711d468ccb73bf1a03bd6f848","date":"2018-08-28T15:28:30+02:00","subject":":sparkles: Handle when no repository found","body":""},{"hash":"a1526b38e164b8471954e3dd0c658e10595ee966","date":"2018-08-28T15:07:19+02:00","subject":":package: Fix build","body":""},{"hash":"acba6f776196d8312c470ccefce8be81bafd8d52","date":"2018-08-28T14:57:33+02:00","subject":":package: Build dist file","body":""},{"hash":"73207b70d85ad2371def0ec9045e5a6ea46fee8c","date":"2018-08-28T14:56:10+02:00","subject":":fire: remove parsing multiple commit","body":""},{"hash":"0b4f39408e675f368c9562bd7645ac74abcd2293","date":"2018-08-28T14:33:10+02:00","subject":":tada: intialize cli project","body":""},{"hash":"44e401db08cc828fcc8c19b027350ac9d310773e","date":"2018-08-28T14:24:08+02:00","subject":":sparkles: implements changelog generation to json","body":""},{"hash":"e29f239dee8dc393caee9d320371e54a37eb90ae","date":"2018-08-28T11:17:18+02:00","subject":":truck: move parse functions into parser.js","body":""},{"hash":"cb35644a640cfe3cb2c246345fe25202d814c436","date":"2018-08-28T11:14:04+02:00","subject":":sparkles: add edge cases for commit parsing","body":""},{"hash":"195b59431dde83a4cff26be5c3ab362d97a9604e","date":"2018-08-28T10:48:18+02:00","subject":":sparkles: Implements parse commit function","body":""},{"hash":"7f091a3900605ee9bc44e793ddbb10a7272112fa","date":"2018-08-21T17:05:39+02:00","subject":":wrench: Fix main script in core module","body":""},{"hash":"efbc04d902ac201b128a8e02692b778eff109b12","date":"2018-08-21T17:01:31+02:00","subject":":wrench: Add build script","body":""},{"hash":"9faf008d457d777afe0fa3443c34af510c1098fa","date":"2018-08-21T16:21:56+02:00","subject":":wrench: Add lint","body":""},{"hash":"dda9b287989c1ca2e9513c4a5a4a3d1b6749e816","date":"2018-08-21T15:28:38+02:00","subject":":green_heart: Set up travis configuration","body":""},{"hash":"656c8bbb506fc8f9064df1fc7aa64e2f1869751e","date":"2018-08-21T15:21:01+02:00","subject":":wrench: Set up tests","body":""},{"hash":"34c8f53a58487a6368016de09989465cd2a96786","date":"2018-08-21T11:41:57+02:00","subject":":wrench: Add package.json","body":""},{"hash":"a60d98def5bcbbef74a19db9e8f43af7a6ff6865","date":"2018-08-21T11:37:12+02:00","subject":"Initial commit","body":""}] \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d3e94a..2c66494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,31 +1,47 @@ # Changelog -- Merge branch 'master' into refactor/remove-babel (0e650182544bd4e16cccbdd42e6f1e36b320095c) -- :green_heart: Ignore node_modules in linter (802c0f7dc29508876c6b4d178bbcc8274ee308b5) -- :wrench: missing package.json to update (32e0d943c2b4d06b610b17748486d3cc1e4f3a5a) -- :sparkles: add 'use strict' (4df1b8c92e04902698e13041664642ae16c4c3b4) -- :fire: remove bad property in package.json (dfe9aa9ebaca0003f2a403fee8bdd8d612512dee) -- :wrench: add engines attribute to node 10 in package.json (e93603e071062aac50a126f85121e5ee6ff427aa) -- :recycle: refactor code to native node 10 (1213a06adf517cf57867a1d7c380c5c2e1936b67) -- :wrench: remove .babelrc and change eslint to remove babel parser (379d1854991d4d974a50179f6b72a7e83fa674f9) -- :heavy_minus_sign: remove babel dependencies (f3a2a5cff11d4e0835ae74e70b74acdd8379347b) +## next + +### Added + +- :sparkles: Add group to commit object (fafbf3635b75ee3f1d0e580976569017025f05b6) +- :sparkles: Use handlebars templating to generate markdown (#10) (141d1601fd1fa3b278db05acbc8f47e2bb239bbf) +- :sparkles: Generate changelog for the next release (#8) (2d783e44e7d4b84a993237e27b95a5d27532426b) +- :sparkles: Implement format option (#5) (9b7287d167637b7a02387cea135d1d7d44a90695) - :sparkles: Convert changelog to markdown (b165f695f4c1a49ff16a5f03918545bfb36cf367) - :sparkles: Generate markdown first draft function (10c6d3e20b82f5a0f6ce5cd372899e6519bc2412) - :tada: Intialize markdown project (a4a12bb4f7133e7e5e40436da4c884f135abf03d) - :sparkles: Generate changelog JSON file (86ca3eaefb18fd9c9b6bb4256ed2f6fa711aef59) - :sparkles: Handle when no repository found (c912efd73b9b286711d468ccb73bf1a03bd6f848) -- :package: Fix build (a1526b38e164b8471954e3dd0c658e10595ee966) -- :package: Build dist file (acba6f776196d8312c470ccefce8be81bafd8d52) -- :fire: remove parsing multiple commit (73207b70d85ad2371def0ec9045e5a6ea46fee8c) - :tada: intialize cli project (0b4f39408e675f368c9562bd7645ac74abcd2293) - :sparkles: implements changelog generation to json (44e401db08cc828fcc8c19b027350ac9d310773e) -- :truck: move parse functions into parser.js (e29f239dee8dc393caee9d320371e54a37eb90ae) - :sparkles: add edge cases for commit parsing (cb35644a640cfe3cb2c246345fe25202d814c436) - :sparkles: Implements parse commit function (195b59431dde83a4cff26be5c3ab362d97a9604e) + +### Changed + +- :recycle: remove babel to use native node 10 (#3) (6edd0c48591e935f3bcd7e73d48733e623f779d9) +- :truck: move parse functions into parser.js (e29f239dee8dc393caee9d320371e54a37eb90ae) - :wrench: Fix main script in core module (7f091a3900605ee9bc44e793ddbb10a7272112fa) - :wrench: Add build script (efbc04d902ac201b128a8e02692b778eff109b12) - :wrench: Add lint (9faf008d457d777afe0fa3443c34af510c1098fa) -- :green_heart: Set up travis configuration (dda9b287989c1ca2e9513c4a5a4a3d1b6749e816) - :wrench: Set up tests (656c8bbb506fc8f9064df1fc7aa64e2f1869751e) - :wrench: Add package.json (34c8f53a58487a6368016de09989465cd2a96786) + +### Removed + +- :fire: remove parsing multiple commit (73207b70d85ad2371def0ec9045e5a6ea46fee8c) + +### Fixed + +- :green_heart: Ignore node_modules in linter (802c0f7dc29508876c6b4d178bbcc8274ee308b5) +- :green_heart: Set up travis configuration (dda9b287989c1ca2e9513c4a5a4a3d1b6749e816) + +### Miscellaneous + +- :memo: Add README.md (c177349386dfd87ab41c58f8a317b0962a511207) +- :package: Fix build (a1526b38e164b8471954e3dd0c658e10595ee966) +- :package: Build dist file (acba6f776196d8312c470ccefce8be81bafd8d52) - Initial commit (a60d98def5bcbbef74a19db9e8f43af7a6ff6865) + + diff --git a/packages/gitmoji-changelog-core/src/index.js b/packages/gitmoji-changelog-core/src/index.js index cd12122..6eb112a 100644 --- a/packages/gitmoji-changelog-core/src/index.js +++ b/packages/gitmoji-changelog-core/src/index.js @@ -5,6 +5,7 @@ const concat = require('concat-stream') const { promisify } = require('util') const { parseCommit } = require('./parser') +const mapping = require('./mapping') const gitSemverTagsAsync = promisify(gitSemverTags) @@ -24,22 +25,34 @@ function getCommits(from, to) { }) } +function makeGroups(commits) { + return mapping + .map(({ group, label }) => ({ + group, + label, + commits: commits.filter(commit => commit.group === group), + })) + .filter(group => group.commits.length) +} + async function generateChangelog() { let previousTag = '' const tags = await gitSemverTagsAsync() const result = await Promise.all(tags.map(async tag => { const commits = await getCommits(previousTag, tag) + previousTag = tag return { version: tag, - commits, + groups: makeGroups(commits), } })) + const commits = await getCommits(previousTag) result.push({ version: 'next', - commits: await getCommits(previousTag), + groups: makeGroups(commits), }) return result diff --git a/packages/gitmoji-changelog-core/src/index.spec.js b/packages/gitmoji-changelog-core/src/index.spec.js index aed6a3a..fb9a0d4 100644 --- a/packages/gitmoji-changelog-core/src/index.spec.js +++ b/packages/gitmoji-changelog-core/src/index.spec.js @@ -4,34 +4,23 @@ const gitSemverTags = require('git-semver-tags') const { generateChangelog } = require('./index') +const sparklesCommit = { + hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', + date: '2018-08-28T10:06:00+02:00', + subject: ':sparkles: Upgrade brand new feature', + body: 'Waouh this is awesome 2', +} + +const recycleCommit = { + hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c', + date: '2018-08-28T10:07:00+02:00', + subject: ':recycle: Upgrade brand new feature', + body: 'Waouh this is awesome 3', +} + describe('changelog', () => { beforeEach(() => { - gitRawCommits.mockImplementationOnce(() => { - const stream = require('stream') - const readable = new stream.Readable() - readable.push(` -c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c -2018-08-28T10:07:00+02:00 -:sparkles: Upgrade brand new feature -Waouh this is awesome 3 -`) - readable.push(null) - readable.emit('close') - return readable - }) - gitRawCommits.mockImplementationOnce(() => { - const stream = require('stream') - const readable = new stream.Readable() - readable.push(` -c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f -2018-08-28T10:06:00+02:00 -:sparkles: Upgrade brand new feature -Waouh this is awesome 2 -`) - readable.push(null) - readable.emit('close') - return readable - }) + mockCommits() }) it('should generate changelog in json format for next release', async () => { @@ -42,12 +31,13 @@ Waouh this is awesome 2 expect(result).toEqual([ { version: 'next', - commits: [ + groups: [ { - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c', - date: '2018-08-28T10:07:00+02:00', - subject: ':sparkles: Upgrade brand new feature', - body: 'Waouh this is awesome 3', + group: 'changed', + label: 'Changed', + commits: [ + expect.objectContaining(recycleCommit), + ], }, ], }, @@ -62,23 +52,25 @@ Waouh this is awesome 2 expect(result).toEqual([ { version: 'v1.0.0', - commits: [ + groups: [ { - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', - date: '2018-08-28T10:06:00+02:00', - subject: ':sparkles: Upgrade brand new feature', - body: 'Waouh this is awesome 2', + group: 'added', + label: 'Added', + commits: [ + expect.objectContaining(sparklesCommit), + ], }, ], }, { version: 'next', - commits: [ + groups: [ { - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c', - date: '2018-08-28T10:07:00+02:00', - subject: ':sparkles: Upgrade brand new feature', - body: 'Waouh this is awesome 3', + group: 'changed', + label: 'Changed', + commits: [ + expect.objectContaining(recycleCommit), + ], }, ], }, @@ -88,3 +80,34 @@ Waouh this is awesome 2 jest.mock('git-raw-commits') jest.mock('git-semver-tags') + +function mockCommits() { + gitRawCommits.mockImplementationOnce(() => { + const stream = require('stream') + const readable = new stream.Readable() + const { + hash, + date, + subject, + body, + } = recycleCommit + readable.push(`\n${hash}\n${date}\n${subject}\n${body}\n`) + readable.push(null) + readable.emit('close') + return readable + }) + gitRawCommits.mockImplementationOnce(() => { + const stream = require('stream') + const readable = new stream.Readable() + const { + hash, + date, + subject, + body, + } = sparklesCommit + readable.push(`\n${hash}\n${date}\n${subject}\n${body}\n`) + readable.push(null) + readable.emit('close') + return readable + }) +} diff --git a/packages/gitmoji-changelog-core/src/mapping.js b/packages/gitmoji-changelog-core/src/mapping.js new file mode 100644 index 0000000..a8d999f --- /dev/null +++ b/packages/gitmoji-changelog-core/src/mapping.js @@ -0,0 +1,77 @@ +module.exports = [ + { + group: 'added', + label: 'Added', + emojis: [ + 'sparkles', + 'tada', + 'white_check_mark', + 'bookmark', + 'construction_worker', + 'charts_with_upwards_trend', + 'heavy_plus_sign', + 'loud_sound', + ], + }, + { + group: 'changed', + label: 'Changed', + emojis: [ + 'art', + 'zap', + 'lipstick', + 'rotating_light', + 'arrow_down', + 'arrow_up', + 'pushpin', + 'recycle', + 'wrench', + 'rewind', + 'alien', + 'truck', + 'boom', + 'bento', + 'wheelchair', + 'speech_ballon', + 'card_file_box', + 'children_crossing', + 'building_construction', + 'iphone', + ], + }, + { + group: 'deprecated', + label: 'Deprecated', + emojis: [], + }, + { + group: 'removed', + label: 'Removed', + emojis: ['fire', 'heavy_minus_sign', 'mute'], + }, + { + group: 'fixed', + label: 'Fixed', + emojis: [ + 'bug', + 'ambulance', + 'apple', + 'penguin', + 'checkered_flag', + 'robot', + 'green_apple', + 'green_heart', + 'pencil2', + ], + }, + { + group: 'security', + label: 'Security', + emojis: ['lock'], + }, + { + group: 'misc', + label: 'Miscellaneous', + emojis: [], + }, +] diff --git a/packages/gitmoji-changelog-core/src/parser.js b/packages/gitmoji-changelog-core/src/parser.js index b9beca1..8630693 100644 --- a/packages/gitmoji-changelog-core/src/parser.js +++ b/packages/gitmoji-changelog-core/src/parser.js @@ -1,17 +1,48 @@ const splitLines = require('split-lines') +const mapping = require('./mapping') + +function parseSubject(subject) { + if (!subject) return {} + const matches = subject.match(/:(\w*):(.*)/) + if (!matches) return {} + const [, emoji, message] = matches + + return { + emoji, + message: message.trim(), + } +} + +function getCommitGroup(emoji) { + let group = 'misc' + + mapping.forEach(type => { + if (type.emojis.includes(emoji)) { + group = type.group + } + }) + + return group +} function parseCommit(commit) { const lines = splitLines(commit) const [hash, date, subject, ...body] = lines.splice(1, lines.length - 2) + const { emoji, message } = parseSubject(subject) + const group = getCommitGroup(emoji) return { hash, date, subject, + emoji, + message, + group, body: body.join('\n'), } } module.exports = { parseCommit, + getCommitGroup, } diff --git a/packages/gitmoji-changelog-core/src/parser.spec.js b/packages/gitmoji-changelog-core/src/parser.spec.js index 5a59331..789706d 100644 --- a/packages/gitmoji-changelog-core/src/parser.spec.js +++ b/packages/gitmoji-changelog-core/src/parser.spec.js @@ -1,49 +1,63 @@ const { parseCommit } = require('./parser.js') +const sparklesCommit = { + hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', + date: '2018-08-28T10:06:00+02:00', + subject: ':sparkles: Upgrade brand new feature', + body: 'Waouh this is awesome 2', +} + + describe('commits parser', () => { it('should parse a single commit', () => { - const commit = ` -c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f -2018-08-28T10:06:00+02:00 -:sparkles: Implements brand new feature -Waouh this is awesome - -` - expect(parseCommit(commit)).toEqual({ - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', - date: '2018-08-28T10:06:00+02:00', - subject: ':sparkles: Implements brand new feature', - body: 'Waouh this is awesome\n', - }) + const { + hash, + date, + subject, + body, + } = sparklesCommit + const commit = `\n${hash}\n${date}\n${subject}\n${body}\n` + + expect(parseCommit(commit)).toEqual(expect.objectContaining(sparklesCommit)) }) it('should parse a single commit without a body', () => { - const commit = ` -c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f -2018-08-28T10:06:00+02:00 -:sparkles: Implements brand new feature - -` - expect(parseCommit(commit)).toEqual({ - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', - date: '2018-08-28T10:06:00+02:00', - subject: ':sparkles: Implements brand new feature', + const { + hash, + date, + subject, + } = sparklesCommit + const commit = `\n${hash}\n${date}\n${subject}\n\n` + + expect(parseCommit(commit)).toEqual(expect.objectContaining({ + ...sparklesCommit, body: '', - }) + })) }) it('should parse a single commit without a subject', () => { - const commit = ` -c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f -2018-08-28T10:06:00+02:00 + const { + hash, + date, + } = sparklesCommit + const commit = `\n${hash}\n${date}\n\n` - -` - expect(parseCommit(commit)).toEqual({ - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', - date: '2018-08-28T10:06:00+02:00', + expect(parseCommit(commit)).toEqual(expect.objectContaining({ + ...sparklesCommit, subject: '', body: '', - }) + })) + }) + + it('should add the group to a commit', () => { + const { + hash, + date, + subject, + body, + } = sparklesCommit + const commit = `\n${hash}\n${date}\n${subject}\n${body}\n` + + expect(parseCommit(commit)).toEqual(expect.objectContaining({ group: 'added' })) }) }) diff --git a/packages/gitmoji-changelog-markdown/package.json b/packages/gitmoji-changelog-markdown/package.json index 9d93013..f8e33f9 100644 --- a/packages/gitmoji-changelog-markdown/package.json +++ b/packages/gitmoji-changelog-markdown/package.json @@ -20,6 +20,7 @@ }, "homepage": "https://github.com/frinyvonnick/gitmoji-changelog#readme", "dependencies": { - "handlebars": "^4.0.12" + "handlebars": "^4.0.12", + "lodash": "^4.17.11" } } diff --git a/packages/gitmoji-changelog-markdown/src/index.spec.js b/packages/gitmoji-changelog-markdown/src/index.spec.js index 853d97f..57576aa 100644 --- a/packages/gitmoji-changelog-markdown/src/index.spec.js +++ b/packages/gitmoji-changelog-markdown/src/index.spec.js @@ -5,23 +5,35 @@ describe('Markdown converter', () => { const changelog = [ { version: 'v1.0.0', - commits: [ + groups: [ { - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', - date: '2018-08-28T10:06:00+02:00', - subject: ':sparkles: Upgrade brand new feature', - body: 'Waouh this is awesome 2', + group: 'added', + label: 'Added', + commits: [ + { + hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f', + date: '2018-08-28T10:06:00+02:00', + subject: ':sparkles: Upgrade brand new feature', + body: 'Waouh this is awesome 2', + }, + ], }, ], }, { version: 'next', - commits: [ + groups: [ { - hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c', - date: '2018-08-28T10:07:00+02:00', - subject: ':sparkles: Upgrade brand new feature', - body: 'Waouh this is awesome 3', + group: 'changed', + label: 'Changed', + commits: [ + { + hash: 'c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c', + date: '2018-08-28T10:07:00+02:00', + subject: ':recycle: Upgrade brand new feature', + body: 'Waouh this is awesome 3', + }, + ], }, ], }, @@ -31,11 +43,17 @@ describe('Markdown converter', () => { ## v1.0.0 +### Added + - :sparkles: Upgrade brand new feature (c40ee8669ba7ea5151adc2942fa8a7fc98d9e23f) + ## next -- :sparkles: Upgrade brand new feature (c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c) +### Changed + +- :recycle: Upgrade brand new feature (c40ee8669ba7ea5151adc2942fa8a7fc98d9e23c) + `) }) diff --git a/packages/gitmoji-changelog-markdown/src/template.md b/packages/gitmoji-changelog-markdown/src/template.md index 936e056..a07acdd 100644 --- a/packages/gitmoji-changelog-markdown/src/template.md +++ b/packages/gitmoji-changelog-markdown/src/template.md @@ -3,8 +3,13 @@ {{#each changelog}} ## {{version}} +{{#each groups}} +### {{label}} + {{#each commits}} - {{subject}} ({{hash}}) {{/each}} -{{/each}} \ No newline at end of file +{{/each}} + +{{/each}} diff --git a/yarn.lock b/yarn.lock index 2ec4b86..98aba00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2771,6 +2771,10 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@^4.17.11: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"