diff --git a/packages/desktop-client/package.json b/packages/desktop-client/package.json index 77220ed8ba5038f959c56bf2e74cbd537e2ecaf4..977e91ab5ca760ab33670535a90bf0b75430382a 100644 --- a/packages/desktop-client/package.json +++ b/packages/desktop-client/package.json @@ -16,7 +16,6 @@ "@react-stately/list": "^3.5.3", "@reactions/component": "^2.0.2", "chalk": "2.4.1", - "codemirror": "^5.37.0", "cross-env": "^7.0.3", "customize-cra": "^1.0.0", "date-fns": "2.0.0-alpha.27", @@ -28,7 +27,6 @@ "inter-ui": "^3.19.3", "jest-watch-typeahead": "^2.2.2", "mitt": "^3.0.0", - "perf-deets": "^1.0.15", "prop-types": "15.6.0", "react": "16.13.1", "react-app-rewired": "^2.2.1", diff --git a/packages/desktop-client/src/browser-preload.browser.js b/packages/desktop-client/src/browser-preload.browser.js index 294235cf9f2941b32e7683166241ff258b8aed60..dd24ff5aa24b3ee78cf41cd244d38ef346f3d23c 100644 --- a/packages/desktop-client/src/browser-preload.browser.js +++ b/packages/desktop-client/src/browser-preload.browser.js @@ -8,7 +8,6 @@ const backendWorkerUrl = new URL('./browser-server.js', import.meta.url); // everything else. let IS_DEV = process.env.NODE_ENV === 'development'; -let IS_PERF_BUILD = process.env.PERF_BUILD != null; let ACTUAL_VERSION = process.env.REACT_APP_ACTUAL_VERSION; // *** Start the backend *** @@ -32,46 +31,10 @@ function createBackendWorker() { 'SharedArrayBufferOverride', ), }); - - if (IS_DEV || IS_PERF_BUILD) { - worker.onmessage = e => { - if (e.data.type === '__actual:backend-running') { - let activity = document.querySelector('.debugger .activity'); - if (activity) { - let original = window.getComputedStyle(activity)['background-color']; - activity.style.transition = 'none'; - activity.style.backgroundColor = '#3EBD93'; - setTimeout(() => { - activity.style.transition = 'background-color 1s'; - activity.style.backgroundColor = original; - }, 100); - } - } - }; - - import('perf-deets/frontend').then(({ listenForPerfData }) => { - listenForPerfData(worker); - }); - } } createBackendWorker(); -if (IS_DEV || IS_PERF_BUILD) { - import('perf-deets/frontend').then(({ listenForPerfData }) => { - listenForPerfData(window); - - global.__startProfile = () => { - window.postMessage({ type: '__perf-deets:start-profile' }); - worker.postMessage({ type: '__perf-deets:start-profile' }); - }; - global.__stopProfile = () => { - window.postMessage({ type: '__perf-deets:stop-profile' }); - worker.postMessage({ type: '__perf-deets:stop-profile' }); - }; - }); -} - global.Actual = { IS_DEV, ACTUAL_VERSION, @@ -153,13 +116,6 @@ global.Actual = { }, }; -if (IS_DEV) { - global.Actual.reloadBackend = () => { - worker.postMessage({ type: '__actual:shutdown' }); - createBackendWorker(); - }; -} - document.addEventListener('keydown', e => { if (e.metaKey || e.ctrlKey) { // Cmd/Ctrl+o diff --git a/packages/desktop-client/src/browser-server.js b/packages/desktop-client/src/browser-server.js index c90c764e251195185a77ebf620e10f9c79b0d07b..8ccee8c3402769551ef5c93da51aa5733a5cb8ff 100644 --- a/packages/desktop-client/src/browser-server.js +++ b/packages/desktop-client/src/browser-server.js @@ -21,24 +21,16 @@ self.addEventListener('message', e => { importScripts(`${msg.publicUrl}/kcab/kcab.worker.${hash}.js`); - backend.initApp(version, isDev, self).then( - () => { - if (isDev) { - console.log('Backend running!'); - self.postMessage({ type: '__actual:backend-running' }); - } - }, - err => { - console.log(err); - let msg = { - type: 'app-init-failure', - IDBFailure: err.message.includes('indexeddb-failure'), - }; - self.postMessage(msg); + backend.initApp(version, isDev, self).catch(err => { + console.log(err); + let msg = { + type: 'app-init-failure', + IDBFailure: err.message.includes('indexeddb-failure'), + }; + self.postMessage(msg); - throw err; - }, - ); + throw err; + }); } } }); diff --git a/packages/desktop-client/src/components/Debugger.js b/packages/desktop-client/src/components/Debugger.js deleted file mode 100644 index 413db67e39af4324aa678dfe83d97b0052f660b5..0000000000000000000000000000000000000000 --- a/packages/desktop-client/src/components/Debugger.js +++ /dev/null @@ -1,314 +0,0 @@ -import React from 'react'; - -import CodeMirror from 'codemirror'; - -import * as spreadsheet from 'loot-core/src/client/sheetql/spreadsheet'; -import { - send, - init as initConnection, -} from 'loot-core/src/platform/client/fetch'; -import { - View, - Button, - Input, - InlineField, -} from 'loot-design/src/components/common'; -import { colors } from 'loot-design/src/style'; - -require('codemirror/lib/codemirror.css'); -require('codemirror/theme/monokai.css'); - -class Debugger extends React.Component { - state = { - recording: false, - selecting: false, - name: '__global!tmp', - collapsed: true, - node: null, - }; - - toggleRecord = () => { - if (this.state.recording) { - window.__stopProfile(); - this.setState({ recording: false }); - } else { - window.__startProfile(); - this.setState({ recording: true }); - } - }; - - reloadBackend = async () => { - window.Actual.reloadBackend(); - initConnection(await global.Actual.getServerSocket()); - }; - - init() { - this.mirror = CodeMirror(this.node, { - theme: 'monokai', - }); - - this.mirror.setSize('100%', '100%'); - - // this.mirror.on('change', () => { - // const val = this.mirror.getValue(); - // const [sheetName, name] = this.state.name.split('!'); - - // spreadsheet.set(sheetName, name, this.mirror.getValue()); - // }); - - const mouseoverHandler = e => { - let node = e.target; - let cellname = null; - - while (!cellname && node) { - cellname = node.dataset && node.dataset.cellname; - node = node.parentNode; - } - - if (this.state.selecting && cellname) { - this.bind(cellname); - } - }; - document.body.addEventListener('mouseover', mouseoverHandler, false); - - const clickHandler = e => { - if (this.state.selecting) { - this.setState({ selecting: false }); - } - }; - document.body.addEventListener('click', clickHandler, false); - - this.removeListeners = () => { - document.body.removeEventListener('mouseover', mouseoverHandler); - document.body.removeEventListener('click', clickHandler); - }; - - this.bind(this.state.name); - } - - deinit() { - if (this.unbind) { - this.unbind(); - } - - this.removeListeners(); - this.mirror = null; - } - - bind(resolvedName) { - if (this.unbind) { - this.unbind(); - } - const [sheetName, name] = resolvedName.split('!'); - let currentReq = Math.random(); - this.currentReq = currentReq; - - send('debugCell', { sheetName, name }).then(node => { - if (currentReq === this.currentReq) { - if (node._run) { - this.mirror.setValue(node._run); - } - this.setState({ name: node.name, node }); - - this.unbind = spreadsheet.bind(sheetName, { name }, null, node => { - if (currentReq !== this.currentReq) { - return; - } - - this.setState({ node: { ...this.state.node, value: node.value } }); - - this.valueNode.style.transition = 'none'; - this.valueNode.style.backgroundColor = colors.y9; - setTimeout(() => { - this.valueNode.style.transition = 'background-color .8s'; - this.valueNode.style.backgroundColor = 'rgba(0, 0, 0, 0)'; - }, 50); - }); - } - }); - } - - componentWillUnmount() { - if (this.unbind) { - this.unbind(); - this.unbind = null; - } - } - - onShow = () => { - this.setState({ collapsed: false }, () => { - this.init(); - }); - }; - - onClose = () => { - this.setState({ collapsed: true }, () => { - this.deinit(); - }); - }; - - onSelect = () => { - this.setState({ selecting: true }); - }; - - onNameChange = e => { - const name = e.target.value; - this.bind(name); - this.setState({ name }); - }; - - unselect() { - if (this.unbind) { - this.unbind(); - this.unbind = null; - this.setState({ sheetName: null, name: null, node: null }); - } - } - - render() { - const { children } = this.props; - const { name, node, selecting, collapsed, recording } = this.state; - - return ( - <View - style={{ - height: '100%', - '& .CodeMirror': { border: '1px solid ' + colors.b4 }, - }} - > - <div style={{ flex: 1, overflow: 'hidden' }}>{children}</div> - <View - className="debugger" - style={[ - { - position: 'fixed', - right: 0, - bottom: 0, - margin: 15, - padding: 10, - backgroundColor: 'rgba(50, 50, 50, .85)', - color: 'white', - zIndex: 1000, - flexDirection: 'row', - alignItems: 'center', - }, - !collapsed && { - width: 700, - height: 200, - }, - ]} - > - {collapsed ? ( - <React.Fragment> - <div - className="activity" - style={{ - width: 10, - height: 10, - backgroundColor: '#303030', - marginRight: 10, - borderRadius: 10, - }} - /> - <Button onClick={this.toggleRecord} style={{ marginRight: 10 }}> - {recording ? 'Stop' : 'Start'} Profile - </Button> - <Button onClick={this.reloadBackend} style={{ marginRight: 10 }}> - Reload backend - </Button> - <Button onClick={this.onShow}>^</Button> - </React.Fragment> - ) : ( - <View style={{ flex: 1 }}> - <View - style={{ - flexDirection: 'row', - justifyContent: 'flex-start', - marginBottom: 5, - flexShrink: 0, - }} - > - <Button - style={{ - backgroundColor: '#303030', - color: 'white', - padding: '2px 5px', - marginRight: 5, - }} - onClick={this.onClose} - > - v - </Button> - <Button - style={[ - { - backgroundColor: '#303030', - color: 'white', - padding: '2px 5px', - }, - selecting && { - backgroundColor: colors.p7, - }, - ]} - onClick={this.onSelect} - > - Inspect Cell - </Button> - </View> - <InlineField label="Name" style={{ flex: '0 0 auto' }}> - <Input - value={name} - onChange={this.onNameChange} - style={{ - backgroundColor: '#303030', - color: 'white', - flex: 1, - }} - /> - </InlineField> - <InlineField - label="Expr" - style={{ flex: 1, alignItems: 'stretch', overflow: 'hidden' }} - > - <div - style={{ flex: 1, overflow: 'hidden' }} - ref={n => (this.node = n)} - /> - </InlineField> - <InlineField - label="Dependencies" - labelWidth={100} - style={{ flex: '0 0 auto' }} - > - <pre - style={{ - backgroundColor: 'rgba(0, 0, 0, 0)', - height: 30, - overflow: 'scroll', - }} - > - {node && JSON.stringify(node._dependencies, null, 2)} - </pre> - </InlineField> - <InlineField label="Value" style={{ flex: '0 0 auto' }}> - <div - style={{ - backgroundColor: 'rgba(0, 0, 0, 0)', - transition: 'background-color .5s', - height: 30, - overflow: 'scroll', - }} - ref={n => (this.valueNode = n)} - > - {node && JSON.stringify(node.value)} - </div> - </InlineField> - </View> - )} - </View> - </View> - ); - } -} - -export default Debugger; diff --git a/packages/desktop-client/src/components/FinancesApp.js b/packages/desktop-client/src/components/FinancesApp.js index 1a59f5c6c9de76d9eb6d0f04f1fd7ad83700ec4e..76efc5cf2f19398ac8c1cd44bd8092275bf90a3a 100644 --- a/packages/desktop-client/src/components/FinancesApp.js +++ b/packages/desktop-client/src/components/FinancesApp.js @@ -56,7 +56,6 @@ import LinkSchedule from './schedules/LinkSchedule'; import PostsOfflineNotification from './schedules/PostsOfflineNotification'; import Settings from './settings'; import Titlebar, { TitlebarProvider } from './Titlebar'; -// import Debugger from './Debugger'; function PageRoute({ path, component: Component }) { return ( @@ -336,7 +335,6 @@ class FinancesApp extends React.Component { <Notifications /> <BankSyncStatus /> <StackedRoutes isMobile={this.state.isMobile} /> - {/*window.Actual.IS_DEV && <Debugger />*/} <Modals history={this.history} /> </div> {this.state.isMobile && ( diff --git a/packages/loot-core/jest.web.config.js b/packages/loot-core/jest.web.config.js index b3fe4bcb20bfc10508b134199b9e5153e9c585e8..659966ffc71a93af38f646d8c635bef9e947a377 100644 --- a/packages/loot-core/jest.web.config.js +++ b/packages/loot-core/jest.web.config.js @@ -4,10 +4,7 @@ module.exports = { testEnvironment: 'jsdom', testPathIgnorePatterns: ['/node_modules/', '/lib/'].filter(Boolean), testMatch: ['**/*.web.test.js'], - transformIgnorePatterns: [ - '__mocks__', - '/node_modules/(?!perf-deets|absurd-sql)', - ], + transformIgnorePatterns: ['__mocks__', '/node_modules/(?!absurd-sql)'], transform: { '\\.pegjs$': 'pegjs-jest-transformer', }, diff --git a/packages/loot-core/package.json b/packages/loot-core/package.json index 301f0aa69fd9ff435bfa12d9c626f80b17b5962b..ea95b414751daa1206d9bff24330115596c6a0d8 100644 --- a/packages/loot-core/package.json +++ b/packages/loot-core/package.json @@ -61,7 +61,6 @@ "pegjs": "^0.10.0", "pegjs-jest-transformer": "^1.2.3", "pegjs-loader": "^0.5.6", - "perf-deets": "^1.0.15", "snapshot-diff": "^0.10.0", "source-map": "^0.7.3", "throttleit": "^1.0.0", diff --git a/packages/loot-core/src/platform/server/asyncStorage/index.web.js b/packages/loot-core/src/platform/server/asyncStorage/index.web.js index c0b790a25048d8679e712864bd1456a2489067ff..09835319bb88d84ea6decd65a584749cb08d4250 100644 --- a/packages/loot-core/src/platform/server/asyncStorage/index.web.js +++ b/packages/loot-core/src/platform/server/asyncStorage/index.web.js @@ -1,11 +1,7 @@ -let { getDatabase, closeDatabase } = require('../indexeddb'); +let { getDatabase } = require('../indexeddb'); function init() {} -function shutdown() { - closeDatabase(); -} - function commit(trans) { if (trans.commit) { trans.commit(); @@ -116,7 +112,6 @@ async function multiRemove(keys) { module.exports = { init, - shutdown, getItem, setItem, removeItem, diff --git a/packages/loot-core/src/platform/server/fs/index.web.js b/packages/loot-core/src/platform/server/fs/index.web.js index 85db86b4a95426e31268738afe5ed325634a2495..2596e9569d84661718375477efe214859b39c090 100644 --- a/packages/loot-core/src/platform/server/fs/index.web.js +++ b/packages/loot-core/src/platform/server/fs/index.web.js @@ -243,10 +243,6 @@ async function init() { await populateFileHeirarchy(); } -function shutdown() { - BFS.backend.shutdown(); -} - function basename(filepath) { let parts = filepath.split('/'); return parts.slice(0, -1).join('/'); @@ -321,7 +317,6 @@ module.exports = { pathToId, populateFileHeirarchy, init, - shutdown, bundledDatabasePath: '/default-db.sqlite', migrationsPath: '/migrations', demoBudgetPath: '/demo-budget', diff --git a/packages/loot-core/src/platform/server/indexeddb/index.web.js b/packages/loot-core/src/platform/server/indexeddb/index.web.js index bb09f4ddc65ef3d852ef5f0d6d97fe6ccdbeac57..633f49d907983e0c301e90ab9d5f4f9e66d14055 100644 --- a/packages/loot-core/src/platform/server/indexeddb/index.web.js +++ b/packages/loot-core/src/platform/server/indexeddb/index.web.js @@ -138,14 +138,6 @@ function closeDatabase() { } } -if (process.env.NODE_ENV === 'development') { - self.addEventListener('message', e => { - if (e.data.type === '__actual:shutdown') { - closeDatabase(); - } - }); -} - module.exports = { getDatabase, openDatabase, diff --git a/packages/loot-core/src/platform/server/sqlite/index.web.js b/packages/loot-core/src/platform/server/sqlite/index.web.js index a4586235eb7a942df8149447c6f38c30617d1619..d8439a3a0ef5de19e7789f4e6ce1d429ee23f4cb 100644 --- a/packages/loot-core/src/platform/server/sqlite/index.web.js +++ b/packages/loot-core/src/platform/server/sqlite/index.web.js @@ -1,5 +1,4 @@ import initSqlJS from '@jlongster/sql.js'; -import * as perf from 'perf-deets'; let SQL = null; @@ -41,7 +40,6 @@ export function prepare(db, sql) { } export function runQuery(db, sql, params = [], fetchAll) { - perf.count('runQuery'); if (params) { verifyParamTypes(sql, params); } diff --git a/packages/loot-core/src/server/budget/goaltemplates.js b/packages/loot-core/src/server/budget/goaltemplates.js index afd9173219839948a3b15180246754b06e5efa48..7a81dc72ebeafc9025bcec30071f4730688fbe61 100644 --- a/packages/loot-core/src/server/budget/goaltemplates.js +++ b/packages/loot-core/src/server/budget/goaltemplates.js @@ -133,8 +133,6 @@ async function applyCategoryTemplate(category, template_lines, month, force) { // remove lines for past dates, calculate repeating dates let got_by = false; template_lines = template_lines.filter(template => { - //debugger; - switch (template.type) { case 'by': case 'spend': diff --git a/packages/loot-core/src/server/main.js b/packages/loot-core/src/server/main.js index 752b75e9793cae1ca069e7ed384158891ab4501a..38f87ab22db54d730b240fb02ff9cbb2342c34f1 100644 --- a/packages/loot-core/src/server/main.js +++ b/packages/loot-core/src/server/main.js @@ -2507,21 +2507,3 @@ export const lib = { }, SyncProtoBuf: SyncPb, }; - -if (process.env.NODE_ENV === 'development' && Platform.isWeb) { - // Support reloading the backend - self.addEventListener('message', async e => { - if (e.data.type === '__actual:shutdown') { - await sheet.waitOnSpreadsheet(); - await app.stopServices(); - await db.closeDatabase(); - asyncStorage.shutdown(); - fs.shutdown(); - - setTimeout(() => { - // Give everything else some time to process shutdown events - self.close(); - }, 100); - } - }); -} diff --git a/packages/loot-core/webpack/webpack.browser.config.js b/packages/loot-core/webpack/webpack.browser.config.js index 57f5b657c006efcfca0c363b547fda9ff9c813ae..d9cb170cef508f0b864bc54219c14f69c8673572 100644 --- a/packages/loot-core/webpack/webpack.browser.config.js +++ b/packages/loot-core/webpack/webpack.browser.config.js @@ -18,11 +18,6 @@ module.exports = { alias: { fs: 'memfs', path: 'path-browserify', - - 'perf-deets': - process.env.NODE_ENV === 'development' || process.env.PERF_BUILD - ? 'perf-deets' - : require.resolve('perf-deets/noop'), }, }, resolveLoader: { diff --git a/packages/loot-core/webpack/webpack.desktop.config.js b/packages/loot-core/webpack/webpack.desktop.config.js index 433df753c71886823e4d07694cc55684216fe91b..72ccdab09951999297e4695751e17531743a856f 100644 --- a/packages/loot-core/webpack/webpack.desktop.config.js +++ b/packages/loot-core/webpack/webpack.desktop.config.js @@ -17,9 +17,6 @@ module.exports = { }, resolve: { extensions: ['.electron.js', '.js', '.json'], - alias: { - 'perf-deets': require.resolve('perf-deets/noop'), - }, }, externals: [ 'better-sqlite3', diff --git a/upcoming-release-notes/755.md b/upcoming-release-notes/755.md new file mode 100644 index 0000000000000000000000000000000000000000..2746f78b32191f440a328c38b8aa1134aac25a17 --- /dev/null +++ b/upcoming-release-notes/755.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +Removing unused `Debugger` component and its dependencies: perf-deets, codemirror diff --git a/yarn.lock b/yarn.lock index 2a485d05e48297b232f3f963615055698233c2c6..19585b2b39ecad3cec740c83544d439adcc3a7ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -62,7 +62,6 @@ __metadata: "@react-stately/list": ^3.5.3 "@reactions/component": ^2.0.2 chalk: 2.4.1 - codemirror: ^5.37.0 cross-env: ^7.0.3 customize-cra: ^1.0.0 date-fns: 2.0.0-alpha.27 @@ -74,7 +73,6 @@ __metadata: inter-ui: ^3.19.3 jest-watch-typeahead: ^2.2.2 mitt: ^3.0.0 - perf-deets: ^1.0.15 prop-types: 15.6.0 react: 16.13.1 react-app-rewired: ^2.2.1 @@ -2555,16 +2553,6 @@ __metadata: languageName: node linkType: hard -"@observablehq/plot@npm:^0.1.0": - version: 0.1.0 - resolution: "@observablehq/plot@npm:0.1.0" - dependencies: - d3: ^6.7.0 - isoformat: ^0.1.0 - checksum: 02935dc844a488ef291a26ca1b4c14d29941ad5b2225710052699ca5a9c56cf31764e32ca39f4b20208ed4c2ff027e08a36c295bc1e66d054766926f4e069a80 - languageName: node - linkType: hard - "@playwright/test@npm:^1.29.1": version: 1.29.1 resolution: "@playwright/test@npm:1.29.1" @@ -6719,13 +6707,6 @@ __metadata: languageName: node linkType: hard -"codemirror@npm:^5.37.0": - version: 5.65.2 - resolution: "codemirror@npm:5.65.2" - checksum: 8e13511319aa8b4772a4406952d89ecef63f4518fa17a3893270d9835ade59d67a94bc83918d881901abb57ed68cbbe697e720a01a43e1aae43fc0f03a6591b1 - languageName: node - linkType: hard - "collect-v8-coverage@npm:^1.0.0": version: 1.0.1 resolution: "collect-v8-coverage@npm:1.0.1" @@ -6821,13 +6802,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:2, commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - "commander@npm:2.9.0": version: 2.9.0 resolution: "commander@npm:2.9.0" @@ -6837,6 +6811,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + "commander@npm:^5.0.0": version: 5.1.0 resolution: "commander@npm:5.1.0" @@ -7597,51 +7578,6 @@ __metadata: languageName: node linkType: hard -"d3-array@npm:2, d3-array@npm:^2.3.0, d3-array@npm:^2.5.0": - version: 2.12.1 - resolution: "d3-array@npm:2.12.1" - dependencies: - internmap: ^1.0.0 - checksum: 97853b7b523aded17078f37c67742f45d81e88dda2107ae9994c31b9e36c5fa5556c4c4cf39650436f247813602dfe31bf7ad067ff80f127a16903827f10c6eb - languageName: node - linkType: hard - -"d3-axis@npm:2": - version: 2.1.0 - resolution: "d3-axis@npm:2.1.0" - checksum: 43d80f68e516b315bbe86afff1552abd9518296e60f58a9a70ee9a524c109dec9d4585da5fc34a5c589e599c5ee4fe465f850c5a43f5e112c3850965bb00e9f5 - languageName: node - linkType: hard - -"d3-brush@npm:2": - version: 2.1.0 - resolution: "d3-brush@npm:2.1.0" - dependencies: - d3-dispatch: 1 - 2 - d3-drag: 2 - d3-interpolate: 1 - 2 - d3-selection: 2 - d3-transition: 2 - checksum: 35fb7e3b422626194aac1b85434e6a346de1b69f497d1f80d2f6bf881602e8826255a7c95a0c27f0de5ec2f5f7bc8481d6e1df24c80ebb28175a0830c868d218 - languageName: node - linkType: hard - -"d3-chord@npm:2": - version: 2.0.0 - resolution: "d3-chord@npm:2.0.0" - dependencies: - d3-path: 1 - 2 - checksum: 932f1e9a50a68b95f42431fe043164c671433226582cf4e5f5a8f7064da99efaca656283861bf243286c5ef7dcf87aa77811418564fba83350da48d8c50074c0 - languageName: node - linkType: hard - -"d3-color@npm:1 - 2, d3-color@npm:2": - version: 2.0.0 - resolution: "d3-color@npm:2.0.0" - checksum: b887354aa383937abd04fbffed3e26e5d6a788472cd3737fb10735930e427763e69fe93398663bccf88c0b53ee3e638ac6fcf0c02226b00ed9e4327c2dfbf3dc - languageName: node - linkType: hard - "d3-color@npm:1 - 3": version: 3.1.0 resolution: "d3-color@npm:3.1.0" @@ -7649,69 +7585,6 @@ __metadata: languageName: node linkType: hard -"d3-contour@npm:2": - version: 2.0.0 - resolution: "d3-contour@npm:2.0.0" - dependencies: - d3-array: 2 - checksum: 7d46bad378f6e329dddcc52df76077f28b563219cf5a0003385fbcb6c501d5fbb10d71c508da6a7690b527ccdbc1909b6f1f36fa36f03b43b19f8bcab0c2961d - languageName: node - linkType: hard - -"d3-delaunay@npm:5": - version: 5.3.0 - resolution: "d3-delaunay@npm:5.3.0" - dependencies: - delaunator: 4 - checksum: 3fa5ae167eb86e62ca0f9c3e8d05470b23572b4b480f05201705c0db976d403834cee1cdf264a41c97e45238e3999d48cc593f97d0da37229a42673a6bb10e95 - languageName: node - linkType: hard - -"d3-dispatch@npm:1 - 2, d3-dispatch@npm:2": - version: 2.0.0 - resolution: "d3-dispatch@npm:2.0.0" - checksum: cf473676ae0df1915d51d056d2c6734ceec480d258611d970a01847c50e8c273c185032bf9ed491abd077696bcbeeb491dc94af53e888871f3a1a0fac7365cec - languageName: node - linkType: hard - -"d3-drag@npm:2": - version: 2.0.0 - resolution: "d3-drag@npm:2.0.0" - dependencies: - d3-dispatch: 1 - 2 - d3-selection: 2 - checksum: 47f0bcdd097fd363d59da41299f276c1f6bd88bc460f53871b3d9c35982d40f59a535c6de7fa07a51120e56c99064bd9aa3551279dc09ce4204c639d54f80399 - languageName: node - linkType: hard - -"d3-dsv@npm:1 - 2, d3-dsv@npm:2": - version: 2.0.0 - resolution: "d3-dsv@npm:2.0.0" - dependencies: - commander: 2 - iconv-lite: 0.4 - rw: 1 - bin: - csv2json: bin/dsv2json - csv2tsv: bin/dsv2dsv - dsv2dsv: bin/dsv2dsv - dsv2json: bin/dsv2json - json2csv: bin/json2dsv - json2dsv: bin/json2dsv - json2tsv: bin/json2dsv - tsv2csv: bin/dsv2dsv - tsv2json: bin/dsv2json - checksum: 01b12d81e4ca3996f2e921388b1929c358a39711bf250f2c53dd0e452b80465ebe31ddb58a4064f160322dec7aaf2ceae1a249874af989404705fcfdf1e9b64d - languageName: node - linkType: hard - -"d3-ease@npm:1 - 2, d3-ease@npm:2": - version: 2.0.0 - resolution: "d3-ease@npm:2.0.0" - checksum: 1a9f6dfc836f0c66fba1ed28f0a3ad170d7c4f4812d442c6b562163e1a60283cc697e72a2cc4ba64abff9e77ad56354847986a5964e0c661af9b6d132c642e29 - languageName: node - linkType: hard - "d3-ease@npm:^3.0.1": version: 3.0.1 resolution: "d3-ease@npm:3.0.1" @@ -7719,33 +7592,6 @@ __metadata: languageName: node linkType: hard -"d3-fetch@npm:2": - version: 2.0.0 - resolution: "d3-fetch@npm:2.0.0" - dependencies: - d3-dsv: 1 - 2 - checksum: e592420726c39dbbe342504761e5c80a026fc9add4f808ed4e01ab66c3064f7251f988dd2bcb6b8b61f8866769470eabb14a8d7f18e014338d9d9637ffd51af1 - languageName: node - linkType: hard - -"d3-force@npm:2": - version: 2.1.1 - resolution: "d3-force@npm:2.1.1" - dependencies: - d3-dispatch: 1 - 2 - d3-quadtree: 1 - 2 - d3-timer: 1 - 2 - checksum: aaee5b86d753450e72dae6748765ac3e0b7b784bd420a61264b778d697b9521a343b74b5c55654be2ff7fdf9bada0953a6fcae9be69091176d0579b56df72937 - languageName: node - linkType: hard - -"d3-format@npm:1 - 2, d3-format@npm:2": - version: 2.0.0 - resolution: "d3-format@npm:2.0.0" - checksum: c4d3c8f9941d097d514d3986f54f21434e08e5876dc08d1d65226447e8e167600d5b9210235bb03fd45327225f04f32d6e365f08f76d2f4b8bff81594851aaf7 - languageName: node - linkType: hard - "d3-format@npm:1 - 3": version: 3.1.0 resolution: "d3-format@npm:3.1.0" @@ -7753,31 +7599,6 @@ __metadata: languageName: node linkType: hard -"d3-geo@npm:2": - version: 2.0.2 - resolution: "d3-geo@npm:2.0.2" - dependencies: - d3-array: ^2.5.0 - checksum: 992f667c646f8e2ea810de20e62914128e119f0458bce4090934287af3b93395632ed4af16aae7ccae095ae702a23b5d7a49888674f1aa27ab1a6e410882d86c - languageName: node - linkType: hard - -"d3-hierarchy@npm:2": - version: 2.0.0 - resolution: "d3-hierarchy@npm:2.0.0" - checksum: 594bea104d3cf947da8499f3c50c93d914c5af34195ef3848e4888ed5c8c1aa6a1adae1dd656acfd04779005255347f68a3d270d825ec94fc88b88a72dd7cb4e - languageName: node - linkType: hard - -"d3-interpolate@npm:1 - 2, d3-interpolate@npm:1.2.0 - 2, d3-interpolate@npm:2": - version: 2.0.1 - resolution: "d3-interpolate@npm:2.0.1" - dependencies: - d3-color: 1 - 2 - checksum: 4a2018ac34fbcc3e0e7241e117087ca1b2274b8b33673913658623efacc5db013b8d876586d167b23e3145bdb34ec8e441d301299b082e1a90985b2f18d4299c - languageName: node - linkType: hard - "d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": version: 3.0.1 resolution: "d3-interpolate@npm:3.0.1" @@ -7787,13 +7608,6 @@ __metadata: languageName: node linkType: hard -"d3-path@npm:1 - 2, d3-path@npm:2": - version: 2.0.0 - resolution: "d3-path@npm:2.0.0" - checksum: e39e91dfb9abf9637962caede1f4ea4877f4b9e1c914868bdfc355688e9a637ba51bed0fb6180934eb596e50a4d0d1f001b5f2e98a4a3d23cc42558acfbd1f2c - languageName: node - linkType: hard - "d3-path@npm:^3.1.0": version: 3.1.0 resolution: "d3-path@npm:3.1.0" @@ -7801,50 +7615,6 @@ __metadata: languageName: node linkType: hard -"d3-polygon@npm:2": - version: 2.0.0 - resolution: "d3-polygon@npm:2.0.0" - checksum: aeabedd8c74b0087d9b3fa9d9a95ce6535edb07c546cb070ffb1f971a3e9112124a9f63bf1377cbb6889d2cb0268363c4a864ec8c7629d990623fff73262d1ea - languageName: node - linkType: hard - -"d3-quadtree@npm:1 - 2, d3-quadtree@npm:2": - version: 2.0.0 - resolution: "d3-quadtree@npm:2.0.0" - checksum: e5f9cee19a636666e9f1614f9a9508dde9af47d80769ecb70b6b5033448a8c3ae96f39f1ffea0d1782442559412e3f98508fedf5dc39fe09a2f5995e6a0913bf - languageName: node - linkType: hard - -"d3-random@npm:2": - version: 2.2.2 - resolution: "d3-random@npm:2.2.2" - checksum: 79931d642f059c874c2be964b629ac0ce0f73306fa744e2ac8eb5ef1592ecfe8ab4a31a5273bef75db7ba2055c344af9921ef1bf55070edd826d7a7ba0b47331 - languageName: node - linkType: hard - -"d3-scale-chromatic@npm:2": - version: 2.0.0 - resolution: "d3-scale-chromatic@npm:2.0.0" - dependencies: - d3-color: 1 - 2 - d3-interpolate: 1 - 2 - checksum: 9fe5b4c1d9907abbda76e414856d9089182a0641f3bbf43d8d3008dbcccb52781e21793682e2b53663d3c6cd63e76965f961894e53ed3b01a345797412fe5b1f - languageName: node - linkType: hard - -"d3-scale@npm:3": - version: 3.3.0 - resolution: "d3-scale@npm:3.3.0" - dependencies: - d3-array: ^2.3.0 - d3-format: 1 - 2 - d3-interpolate: 1.2.0 - 2 - d3-time: ^2.1.1 - d3-time-format: 2 - 3 - checksum: f77e73f0fb422292211d0687914c30d26e29011a936ad2a535a868ae92f306c3545af1fe7ea5db1b3e67dbce7a6c6cd952e53d02d1d557543e7e5d30e30e52f2 - languageName: node - linkType: hard - "d3-scale@npm:^4.0.2": version: 4.0.2 resolution: "d3-scale@npm:4.0.2" @@ -7858,22 +7628,6 @@ __metadata: languageName: node linkType: hard -"d3-selection@npm:2": - version: 2.0.0 - resolution: "d3-selection@npm:2.0.0" - checksum: c00143f55d510e405fc51e5ef626cb6b3705181ec3d595e84e5cb977508e30228d95d7e209aff6e686ff758c562c5dd17e974325ee8c8555bb6f4f382331ec7d - languageName: node - linkType: hard - -"d3-shape@npm:2": - version: 2.1.0 - resolution: "d3-shape@npm:2.1.0" - dependencies: - d3-path: 1 - 2 - checksum: 4a82a83fbb15aadee3eb6661226a34bcd793cdbcd7aa5bf980a4724efc93eb94acc6c499f0ebedc9c3144c57c0f033867d137f41e86459acbd5d7181cb27b49c - languageName: node - linkType: hard - "d3-shape@npm:^3.1.0": version: 3.2.0 resolution: "d3-shape@npm:3.2.0" @@ -7883,15 +7637,6 @@ __metadata: languageName: node linkType: hard -"d3-time-format@npm:2 - 3, d3-time-format@npm:3": - version: 3.0.0 - resolution: "d3-time-format@npm:3.0.0" - dependencies: - d3-time: 1 - 2 - checksum: c20c1667dbea653f81d923e741f84c23e4b966002ba0d6ed94cbc70692105566e55e89d18d175404534a879383fd1123300bd12885a3c924fe924032bb0060db - languageName: node - linkType: hard - "d3-time-format@npm:2 - 4": version: 4.1.0 resolution: "d3-time-format@npm:4.1.0" @@ -7901,15 +7646,6 @@ __metadata: languageName: node linkType: hard -"d3-time@npm:1 - 2, d3-time@npm:2, d3-time@npm:^2.1.1": - version: 2.1.1 - resolution: "d3-time@npm:2.1.1" - dependencies: - d3-array: 2 - checksum: d1c7b9658c20646e46c3dd19e11c38e02dec098e8baa7d2cd868af8eb01953668f5da499fa33dc63541cf74a26e788786f8828c4381dbbf475a76b95972979a6 - languageName: node - linkType: hard - "d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.0.0": version: 3.1.0 resolution: "d3-time@npm:3.1.0" @@ -7919,13 +7655,6 @@ __metadata: languageName: node linkType: hard -"d3-timer@npm:1 - 2, d3-timer@npm:2": - version: 2.0.0 - resolution: "d3-timer@npm:2.0.0" - checksum: 70733c3baffe473155b712896f04f27dae32d6e94169827f57aebb203e190926ba37af12c5f56cbc7126e538a4b1cd083f2451b80dc2a5644d076b6b31982bd8 - languageName: node - linkType: hard - "d3-timer@npm:^3.0.1": version: 3.0.1 resolution: "d3-timer@npm:3.0.1" @@ -7933,21 +7662,6 @@ __metadata: languageName: node linkType: hard -"d3-transition@npm:2": - version: 2.0.0 - resolution: "d3-transition@npm:2.0.0" - dependencies: - d3-color: 1 - 2 - d3-dispatch: 1 - 2 - d3-ease: 1 - 2 - d3-interpolate: 1 - 2 - d3-timer: 1 - 2 - peerDependencies: - d3-selection: 2 - checksum: 8f29d195adc75e20dcffacb44e571fd64a2f60d511e6e7438019356bbc6c3ada10ae2b1393c36242ab71eb1b131f60cf71d0d76bd4cab4fce6a5ddaf1f6f6b00 - languageName: node - linkType: hard - "d3-voronoi@npm:^1.1.4": version: 1.1.4 resolution: "d3-voronoi@npm:1.1.4" @@ -7955,57 +7669,6 @@ __metadata: languageName: node linkType: hard -"d3-zoom@npm:2": - version: 2.0.0 - resolution: "d3-zoom@npm:2.0.0" - dependencies: - d3-dispatch: 1 - 2 - d3-drag: 2 - d3-interpolate: 1 - 2 - d3-selection: 2 - d3-transition: 2 - checksum: d98cc6ffa1105b0062ee312303caff9345ecd1f6df11b7da1e008c1c4731551755ac951327e8c758ffcf74e761218bc6c4f4a6b48f91551ea5d67e0dcf574a49 - languageName: node - linkType: hard - -"d3@npm:^6.7.0": - version: 6.7.0 - resolution: "d3@npm:6.7.0" - dependencies: - d3-array: 2 - d3-axis: 2 - d3-brush: 2 - d3-chord: 2 - d3-color: 2 - d3-contour: 2 - d3-delaunay: 5 - d3-dispatch: 2 - d3-drag: 2 - d3-dsv: 2 - d3-ease: 2 - d3-fetch: 2 - d3-force: 2 - d3-format: 2 - d3-geo: 2 - d3-hierarchy: 2 - d3-interpolate: 2 - d3-path: 2 - d3-polygon: 2 - d3-quadtree: 2 - d3-random: 2 - d3-scale: 3 - d3-scale-chromatic: 2 - d3-selection: 2 - d3-shape: 2 - d3-time: 2 - d3-time-format: 3 - d3-timer: 2 - d3-transition: 2 - d3-zoom: 2 - checksum: 68e37250bacbfaa677d45dbbd82395e898d628d4598b827a3682e3612e0e43c67784f2cd7ecdc23e75c48ad0abe07b65e20c5aa13fb5ebf8879db6db468032e9 - languageName: node - linkType: hard - "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8" @@ -8258,7 +7921,7 @@ __metadata: languageName: node linkType: hard -"delaunator@npm:4, delaunator@npm:^4.0.0": +"delaunator@npm:^4.0.0": version: 4.0.1 resolution: "delaunator@npm:4.0.1" checksum: a49f1c23edbcb79079a13577d32fcd46d0db30879c8484f742a0d840923085f2f3de35a9bfbb96eadd12201ffb7c3adf45b0f528d08b71cb547c5f8068b5d61b @@ -11398,7 +11061,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4, iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.4": +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.4": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -11620,13 +11283,6 @@ __metadata: languageName: node linkType: hard -"internmap@npm:^1.0.0": - version: 1.0.1 - resolution: "internmap@npm:1.0.1" - checksum: 9d00f8c0cf873a24a53a5a937120dab634c41f383105e066bb318a61864e6292d24eb9516e8e7dccfb4420ec42ca474a0f28ac9a6cc82536898fa09bbbe53813 - languageName: node - linkType: hard - "interpret@npm:^1.4.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" @@ -12240,13 +11896,6 @@ __metadata: languageName: node linkType: hard -"isoformat@npm:^0.1.0": - version: 0.1.0 - resolution: "isoformat@npm:0.1.0" - checksum: 6e184edd27f6e7fee6f13df7590d62012434547b0c15c0a96ff0d6bb58000c7c5597dcd1e7f4facc8b52fedd337fcd3c94951253537f8552aed6f6ea266df854 - languageName: node - linkType: hard - "isomorphic-fetch@npm:^2.1.1": version: 2.2.1 resolution: "isomorphic-fetch@npm:2.2.1" @@ -13783,7 +13432,6 @@ __metadata: pegjs: ^0.10.0 pegjs-jest-transformer: ^1.2.3 pegjs-loader: ^0.5.6 - perf-deets: ^1.0.15 snapshot-diff: ^0.10.0 source-map: ^0.7.3 throttleit: ^1.0.0 @@ -15745,15 +15393,6 @@ __metadata: languageName: node linkType: hard -"perf-deets@npm:^1.0.15": - version: 1.0.17 - resolution: "perf-deets@npm:1.0.17" - dependencies: - "@observablehq/plot": ^0.1.0 - checksum: fbff7219db990eb8fe6d044262bd619e3b01471be45258bcd624c3da0397ca89ddbf6d24b0ec602692cad48cc999a106a560460000f5fe2ba84ce509b85caf15 - languageName: node - linkType: hard - "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -18202,13 +17841,6 @@ __metadata: languageName: node linkType: hard -"rw@npm:1": - version: 1.3.3 - resolution: "rw@npm:1.3.3" - checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3 - languageName: node - linkType: hard - "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2"