diff --git a/.eslintignore b/.eslintignore index fb79ea98d..4dfb13b84 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,4 +2,3 @@ **/locales/index.js cli/config/init.entrypoint.js cli/config/init.App.test.js - diff --git a/.github/workflows/comment-and-close.yml b/.github/workflows/comment-and-close.yml new file mode 100644 index 000000000..6aa782a08 --- /dev/null +++ b/.github/workflows/comment-and-close.yml @@ -0,0 +1,13 @@ +on: + issues: + types: [opened] + +jobs: + comment-and-close: + runs-on: ubuntu-latest + steps: + - uses: vardevs/candc@v1 + with: + close-comment: 'If you would like to file a bug report or feature request, please refer to our issue tracker: https://jira.dhis2.org' + exempt-users: dhis2-bot,dependabot,kodiakhq + github-token: ${{secrets.DHIS2_BOT_GITHUB_TOKEN}} diff --git a/.github/workflows/dhis2-verify-lib.yml b/.github/workflows/dhis2-verify-lib.yml index fb3f70cda..167940f21 100644 --- a/.github/workflows/dhis2-verify-lib.yml +++ b/.github/workflows/dhis2-verify-lib.yml @@ -1,8 +1,6 @@ name: 'dhis2: verify (lib)' -on: - push: - branches: +on: push env: GIT_AUTHOR_NAME: '@dhis2-bot' @@ -12,6 +10,7 @@ env: NPM_TOKEN: ${{secrets.DHIS2_BOT_NPM_TOKEN}} GH_TOKEN: ${{secrets.DHIS2_BOT_GITHUB_TOKEN}} CI: true + D2_VERBOSE: true jobs: install: diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c7350c5..6b9ece036 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,17 @@ -# [5.5.0](https://github.com/dhis2/app-platform/compare/v5.4.2...v5.5.0) (2020-11-16) +## [5.5.1](https://github.com/dhis2/app-platform/compare/v5.5.0...v5.5.1) (2021-01-13) ### Bug Fixes -* **alerts:** make Alerts a sibling of AuthBoundary ([2b607b8](https://github.com/dhis2/app-platform/commit/2b607b8695693f9ffb7edc419b8ece57d931db08)) +* disable eslint for all installed shell files, lint in dev ([1933eca](https://github.com/dhis2/app-platform/commit/1933eca6dc9235c757e54e891b4dc0a649e146a4)) +* disable eslint for all installed shell files, lint in dev ([81b2a61](https://github.com/dhis2/app-platform/commit/81b2a617fa68237115ece358df4eb6a8e426e455)) +* prevent automatic find-up of eslint, use local config in dev ([6fab73a](https://github.com/dhis2/app-platform/commit/6fab73a1513088f1587410555b61aa10efafb8c5)) + +# [5.5.0](https://github.com/dhis2/app-platform/compare/v5.4.2...v5.5.0) (2020-11-16) ### Features -* introduce alerts component to show alerts as alert-bars in a stack ([9aea659](https://github.com/dhis2/app-platform/commit/9aea659cde05400b96bc0afca18c55ca6c0e886e)) * introduce alerts component to show alerts as alert-bars in a stack ([#486](https://github.com/dhis2/app-platform/issues/486)) ([fd22504](https://github.com/dhis2/app-platform/commit/fd22504c2528fd1bab2034d019b480e1c290f063)) ## [5.4.2](https://github.com/dhis2/app-platform/compare/v5.4.1...v5.4.2) (2020-11-11) @@ -21,13 +24,6 @@ ## [5.4.1](https://github.com/dhis2/app-platform/compare/v5.4.0...v5.4.1) (2020-10-30) -### Bug Fixes - -* update react-scripts and cli-style at same time to use eslint 7 ([#475](https://github.com/dhis2/app-platform/issues/475)) ([8fd9225](https://github.com/dhis2/app-platform/commit/8fd9225624ab02565ea72a3f9a1170a1bb4655ba)) - -## [5.4.1-alpha.1](https://github.com/dhis2/app-platform/compare/v5.4.0...v5.4.1-alpha.1) (2020-10-30) - - ### Bug Fixes * update react-scripts and cli-style at same time to use eslint 7 ([#475](https://github.com/dhis2/app-platform/issues/475)) ([8fd9225](https://github.com/dhis2/app-platform/commit/8fd9225624ab02565ea72a3f9a1170a1bb4655ba)) diff --git a/README.md b/README.md index 30c365778..8a7571961 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Unified application architecture and build pipeline to simplify and standardize application development within the DHIS2 ecosystem. -See the [JIRA epic](https://jira.dhis2.org/browse/TECH-179) for project status and [platform.dhis2.nu](https://platform.dhis2.nu) for documentation. +See [platform.dhis2.nu](https://platform.dhis2.nu) for documentation. ## Report an issue @@ -17,6 +17,5 @@ under the [LIBS](https://jira.dhis2.org/projects/LIBS) project. Deep links: - [Bug](https://jira.dhis2.org/secure/CreateIssueDetails!init.jspa?pid=10700&issuetype=10006&components=11025) -- [New Feature](https://jira.dhis2.org/secure/CreateIssueDetails!init.jspa?pid=10700&issuetype=10005&components=11025) -- [Improvement](https://jira.dhis2.org/secure/CreateIssueDetails!init.jspa?pid=10700&issuetype=10002&components=11025) +- [Feature](https://jira.dhis2.org/secure/CreateIssueDetails!init.jspa?pid=10700&issuetype=10300&components=11025) - [Task](https://jira.dhis2.org/secure/CreateIssueDetails!init.jspa?pid=10700&issuetype=10003&components=11025) diff --git a/adapter/package.json b/adapter/package.json index 0e9ead4a6..0dac1c609 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-adapter", - "version": "5.5.0", + "version": "5.5.1", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -20,7 +20,7 @@ "moment": "^2.24.0" }, "devDependencies": { - "@dhis2/cli-app-scripts": "5.5.0", + "@dhis2/cli-app-scripts": "5.5.1", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5" }, diff --git a/adapter/src/components/Alerts.js b/adapter/src/components/Alerts.js index de23e2f55..c676e02a0 100644 --- a/adapter/src/components/Alerts.js +++ b/adapter/src/components/Alerts.js @@ -1,6 +1,6 @@ -import React from 'react' import { useAlerts } from '@dhis2/app-runtime' import { AlertBar, AlertStack } from '@dhis2/ui' +import React from 'react' export const Alerts = () => { const alerts = useAlerts() diff --git a/adapter/src/components/AuthBoundary.js b/adapter/src/components/AuthBoundary.js index 7d4a5e82c..26243e387 100644 --- a/adapter/src/components/AuthBoundary.js +++ b/adapter/src/components/AuthBoundary.js @@ -1,10 +1,9 @@ -import React from 'react' -import PropTypes from 'prop-types' import { useDataQuery } from '@dhis2/app-runtime' - -import { LoginModal } from './LoginModal' +import PropTypes from 'prop-types' +import React from 'react' import { useLocale } from '../utils/useLocale' import { LoadingMask } from './LoadingMask' +import { LoginModal } from './LoginModal' const settingsQuery = { userSettings: { diff --git a/adapter/src/components/FatalErrorBoundary.js b/adapter/src/components/FatalErrorBoundary.js index 9577c65af..3397816e9 100644 --- a/adapter/src/components/FatalErrorBoundary.js +++ b/adapter/src/components/FatalErrorBoundary.js @@ -1,6 +1,6 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' import i18n from '@dhis2/d2-i18n' +import PropTypes from 'prop-types' +import React, { Component } from 'react' import styles from './styles/FatalErrorBoundary.style' const translatedErrorHeading = i18n.t( diff --git a/adapter/src/components/LoadingMask.js b/adapter/src/components/LoadingMask.js index f84c7b8d7..6be864056 100644 --- a/adapter/src/components/LoadingMask.js +++ b/adapter/src/components/LoadingMask.js @@ -1,5 +1,5 @@ -import React from 'react' import { Layer, CenteredContent, CircularLoader, layers } from '@dhis2/ui' +import React from 'react' export const LoadingMask = () => ( diff --git a/adapter/src/components/LoginModal.js b/adapter/src/components/LoginModal.js index 72145348a..cf6e7ee6c 100644 --- a/adapter/src/components/LoginModal.js +++ b/adapter/src/components/LoginModal.js @@ -1,5 +1,3 @@ -import React, { useState } from 'react' -import i18n from '../locales' import { Modal, ModalTitle, @@ -8,6 +6,8 @@ import { Button, InputField, } from '@dhis2/ui' +import React, { useState } from 'react' +import i18n from '../locales' import { post } from '../utils/api' const staticUrl = process.env.REACT_APP_DHIS2_BASE_URL diff --git a/adapter/src/components/ServerVersionProvider.js b/adapter/src/components/ServerVersionProvider.js index cd3101c6d..cd3133ef6 100644 --- a/adapter/src/components/ServerVersionProvider.js +++ b/adapter/src/components/ServerVersionProvider.js @@ -1,9 +1,9 @@ -import React, { useEffect, useState } from 'react' -import PropTypes from 'prop-types' import { Provider } from '@dhis2/app-runtime' +import PropTypes from 'prop-types' +import React, { useEffect, useState } from 'react' +import { get } from '../utils/api' import { parseServerVersion } from '../utils/parseServerVersion' import { LoadingMask } from './LoadingMask' -import { get } from '../utils/api' export const ServerVersionProvider = ({ url, apiVersion, children }) => { const [{ loading, error, systemInfo }, setState] = useState({ diff --git a/adapter/src/components/__tests__/FatalErrorBoundary.test.js b/adapter/src/components/__tests__/FatalErrorBoundary.test.js index 1d6c11728..73fe7aed4 100644 --- a/adapter/src/components/__tests__/FatalErrorBoundary.test.js +++ b/adapter/src/components/__tests__/FatalErrorBoundary.test.js @@ -1,6 +1,6 @@ +import { shallow } from 'enzyme' import React from 'react' import { FatalErrorBoundary } from '../FatalErrorBoundary' -import { shallow } from 'enzyme' const Something = () => { // Placeholder diff --git a/adapter/src/index.js b/adapter/src/index.js index 82fc487d6..1508ad259 100644 --- a/adapter/src/index.js +++ b/adapter/src/index.js @@ -1,11 +1,10 @@ -import React from 'react' -import PropTypes from 'prop-types' import { HeaderBar } from '@dhis2/ui' +import PropTypes from 'prop-types' +import React from 'react' import { Alerts } from './components/Alerts' import { AuthBoundary } from './components/AuthBoundary' import { FatalErrorBoundary } from './components/FatalErrorBoundary' import { ServerVersionProvider } from './components/ServerVersionProvider' - import { styles } from './styles.js' const App = ({ url, apiVersion, appName, children }) => ( diff --git a/adapter/src/utils/useLocale.js b/adapter/src/utils/useLocale.js index d8458e384..6b89aa3c8 100644 --- a/adapter/src/utils/useLocale.js +++ b/adapter/src/utils/useLocale.js @@ -1,6 +1,6 @@ -import { useEffect } from 'react' import i18n from '@dhis2/d2-i18n' import moment from 'moment' +import { useEffect } from 'react' i18n.setDefaultNamespace('default') diff --git a/cli/config/babel.config.js b/cli/config/babel.config.js index 16421a1bf..2e58a9aa2 100644 --- a/cli/config/babel.config.js +++ b/cli/config/babel.config.js @@ -1,5 +1,4 @@ const path = require('path') - const browserTargets = require('./.browserlistrc') const jestTargets = { node: 'current' } diff --git a/cli/config/rollup.config.js b/cli/config/rollup.config.js index 7d9020439..873ebf536 100644 --- a/cli/config/rollup.config.js +++ b/cli/config/rollup.config.js @@ -1,19 +1,17 @@ // rollup.config.js const path = require('path') - -const resolve = require('rollup-plugin-node-resolve') +const standardLibs = require('@dhis2/app-shell/package.json').dependencies +const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const babel = require('rollup-plugin-babel') const commonjs = require('rollup-plugin-commonjs') const json = require('rollup-plugin-json') +const resolve = require('rollup-plugin-node-resolve') const postcss = require('rollup-plugin-postcss') const replace = require('rollup-plugin-replace') const visualize = require('rollup-plugin-visualizer') -const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const extensions = ['.js', '.jsx', '.ts', '.tsx'] -const standardLibs = require('@dhis2/app-shell/package.json').dependencies - // Exclude local app-shell dependencies Object.entries(standardLibs).forEach(([dep, version]) => { if (version.startsWith('file:') || version.startsWith('link:')) { diff --git a/cli/package.json b/cli/package.json index 088484b65..f59a0e7b3 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/cli-app-scripts", - "version": "5.5.0", + "version": "5.5.1", "engines": { "node": ">=10" }, @@ -32,7 +32,7 @@ "@babel/preset-env": "^7.9.0", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", - "@dhis2/app-shell": "5.5.0", + "@dhis2/app-shell": "5.5.1", "@dhis2/cli-helpers-engine": "^1.5.0", "archiver": "^3.1.1", "axios": "^0.20.0", diff --git a/cli/src/commands/build.js b/cli/src/commands/build.js index 07e047e6f..7722a86e3 100644 --- a/cli/src/commands/build.js +++ b/cli/src/commands/build.js @@ -1,17 +1,15 @@ +const path = require('path') const { reporter, chalk } = require('@dhis2/cli-helpers-engine') - const fs = require('fs-extra') -const path = require('path') - -const i18n = require('../lib/i18n') +const bundleApp = require('../lib/bundleApp') const { compile } = require('../lib/compiler') -const makePaths = require('../lib/paths') -const makeShell = require('../lib/shell') -const parseConfig = require('../lib/parseConfig') const exitOnCatch = require('../lib/exitOnCatch') const generateManifest = require('../lib/generateManifest') -const bundleApp = require('../lib/bundleApp') +const i18n = require('../lib/i18n') const loadEnvFiles = require('../lib/loadEnvFiles') +const parseConfig = require('../lib/parseConfig') +const makePaths = require('../lib/paths') +const makeShell = require('../lib/shell') const buildModes = ['development', 'production'] diff --git a/cli/src/commands/clean.js b/cli/src/commands/clean.js index 698f68fa6..04289deee 100644 --- a/cli/src/commands/clean.js +++ b/cli/src/commands/clean.js @@ -1,6 +1,5 @@ const { reporter } = require('@dhis2/cli-helpers-engine') const fs = require('fs-extra') - const makePaths = require('../lib/paths') const handler = async ({ cwd }) => { diff --git a/cli/src/commands/deploy.js b/cli/src/commands/deploy.js index b22fb680d..f5f7c8dae 100644 --- a/cli/src/commands/deploy.js +++ b/cli/src/commands/deploy.js @@ -1,13 +1,12 @@ -const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const path = require('path') -const fs = require('fs-extra') +const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const FormData = require('form-data') +const fs = require('fs-extra') const inquirer = require('inquirer') - -const makePaths = require('../lib/paths') -const parseConfig = require('../lib/parseConfig') -const { createClient } = require('../lib/httpClient') const { constructAppUrl } = require('../lib/constructAppUrl') +const { createClient } = require('../lib/httpClient') +const parseConfig = require('../lib/parseConfig') +const makePaths = require('../lib/paths') const dumpHttpError = (message, response) => { if (!response) { diff --git a/cli/src/commands/init.js b/cli/src/commands/init.js index f4192c819..6a6623416 100644 --- a/cli/src/commands/init.js +++ b/cli/src/commands/init.js @@ -1,8 +1,7 @@ -const { reporter, chalk, exec } = require('@dhis2/cli-helpers-engine') const path = require('path') +const { reporter, chalk, exec } = require('@dhis2/cli-helpers-engine') const fs = require('fs-extra') const gitignore = require('parse-gitignore') - const makePaths = require('../lib/paths') const ignorePatterns = ['node_modules', '.d2', 'src/locales', 'build'] diff --git a/cli/src/commands/start.js b/cli/src/commands/start.js index bc59712a4..451a2807a 100644 --- a/cli/src/commands/start.js +++ b/cli/src/commands/start.js @@ -1,13 +1,12 @@ const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const detectPort = require('detect-port') - -const i18n = require('../lib/i18n') const { compile } = require('../lib/compiler') -const makePaths = require('../lib/paths') -const makeShell = require('../lib/shell') -const parseConfig = require('../lib/parseConfig') const exitOnCatch = require('../lib/exitOnCatch') +const i18n = require('../lib/i18n') const loadEnvFiles = require('../lib/loadEnvFiles') +const parseConfig = require('../lib/parseConfig') +const makePaths = require('../lib/paths') +const makeShell = require('../lib/shell') const defaultPort = 3000 diff --git a/cli/src/commands/test.js b/cli/src/commands/test.js index b202db711..8197a0a65 100644 --- a/cli/src/commands/test.js +++ b/cli/src/commands/test.js @@ -1,12 +1,9 @@ const { reporter } = require('@dhis2/cli-helpers-engine') - const fs = require('fs-extra') - -const makePaths = require('../lib/paths') +const { runCLI } = require('jest-cli') const exitOnCatch = require('../lib/exitOnCatch') const loadEnvFiles = require('../lib/loadEnvFiles') - -const { runCLI } = require('jest-cli') +const makePaths = require('../lib/paths') const handler = async ({ verbose, diff --git a/cli/src/lib/bundleApp.js b/cli/src/lib/bundleApp.js index 20679dbb9..1dfffcbb6 100644 --- a/cli/src/lib/bundleApp.js +++ b/cli/src/lib/bundleApp.js @@ -1,7 +1,7 @@ -const fs = require('fs-extra') const path = require('path') -const archiver = require('archiver') const { reporter, chalk } = require('@dhis2/cli-helpers-engine') +const archiver = require('archiver') +const fs = require('fs-extra') module.exports = (inDir, outFile) => { return new Promise((resolve, reject) => { diff --git a/cli/src/lib/compiler/compile.js b/cli/src/lib/compiler/compile.js index 82bf31e7c..9873d73e3 100644 --- a/cli/src/lib/compiler/compile.js +++ b/cli/src/lib/compiler/compile.js @@ -1,5 +1,5 @@ -const compileLibrary = require('./compileLibrary') const compileApp = require('./compileApp') +const compileLibrary = require('./compileLibrary') const compile = async ({ config, diff --git a/cli/src/lib/compiler/compileApp.js b/cli/src/lib/compiler/compileApp.js index 87ff357be..86a4bef8f 100644 --- a/cli/src/lib/compiler/compileApp.js +++ b/cli/src/lib/compiler/compileApp.js @@ -1,10 +1,8 @@ -const { reporter, chalk } = require('@dhis2/cli-helpers-engine') - const path = require('path') -const fs = require('fs-extra') -const chokidar = require('chokidar') const babel = require('@babel/core') - +const { reporter, chalk } = require('@dhis2/cli-helpers-engine') +const chokidar = require('chokidar') +const fs = require('fs-extra') const babelOptions = require('../../../config/app.babel.config') const overwriteEntrypoint = async ({ config, paths }) => { diff --git a/cli/src/lib/compiler/compileLibrary.js b/cli/src/lib/compiler/compileLibrary.js index a024507c7..4f37cf81f 100644 --- a/cli/src/lib/compiler/compileLibrary.js +++ b/cli/src/lib/compiler/compileLibrary.js @@ -1,8 +1,7 @@ -const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const path = require('path') -const rollup = require('rollup') +const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const fs = require('fs-extra') - +const rollup = require('rollup') const rollupConfigBuilder = require('../../../config/rollup.config') const printRollupError = error => { diff --git a/cli/src/lib/i18n/extract.js b/cli/src/lib/i18n/extract.js index 0f40d5f05..ac7076988 100644 --- a/cli/src/lib/i18n/extract.js +++ b/cli/src/lib/i18n/extract.js @@ -1,9 +1,9 @@ -const fs = require('fs-extra') const path = require('path') -const { checkDirectoryExists, walkDirectory, arrayEqual } = require('./helpers') const { reporter, chalk } = require('@dhis2/cli-helpers-engine') -const scanner = require('i18next-scanner') +const fs = require('fs-extra') const { i18nextToPot, gettextToI18next } = require('i18next-conv') +const scanner = require('i18next-scanner') +const { checkDirectoryExists, walkDirectory, arrayEqual } = require('./helpers') const extract = async ({ input, output }) => { const relativeInput = './' + path.relative(process.cwd(), input) diff --git a/cli/src/lib/i18n/generate.js b/cli/src/lib/i18n/generate.js index eff03a724..7f129c098 100644 --- a/cli/src/lib/i18n/generate.js +++ b/cli/src/lib/i18n/generate.js @@ -1,9 +1,8 @@ -const fs = require('fs-extra') const path = require('path') const { reporter, chalk } = require('@dhis2/cli-helpers-engine') -const { gettextToI18next } = require('i18next-conv') +const fs = require('fs-extra') const handlebars = require('handlebars') - +const { gettextToI18next } = require('i18next-conv') const { checkDirectoryExists } = require('./helpers') const { langToLocale } = require('./locales') diff --git a/cli/src/lib/i18n/helpers.js b/cli/src/lib/i18n/helpers.js index a543eba24..17c30e5db 100644 --- a/cli/src/lib/i18n/helpers.js +++ b/cli/src/lib/i18n/helpers.js @@ -1,6 +1,6 @@ +const path = require('path') const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const fs = require('fs-extra') -const path = require('path') const supportedExtensions = ['.js', '.jsx', '.ts', '.tsx'] diff --git a/cli/src/lib/loadEnvFiles.js b/cli/src/lib/loadEnvFiles.js index 20ca12824..fa3092686 100644 --- a/cli/src/lib/loadEnvFiles.js +++ b/cli/src/lib/loadEnvFiles.js @@ -1,8 +1,7 @@ const fs = require('fs') -const dotenvExpand = require('dotenv-expand') -const dotenv = require('dotenv') - const { reporter } = require('@dhis2/cli-helpers-engine') +const dotenv = require('dotenv') +const dotenvExpand = require('dotenv-expand') module.exports = (paths, NODE_ENV) => { /* diff --git a/cli/src/lib/parseConfig.js b/cli/src/lib/parseConfig.js index ee70b52f0..044dcde84 100644 --- a/cli/src/lib/parseConfig.js +++ b/cli/src/lib/parseConfig.js @@ -1,6 +1,6 @@ const { reporter, chalk } = require('@dhis2/cli-helpers-engine') -const { defaultsDeep, has, isPlainObject } = require('lodash') const fs = require('fs-extra') +const { defaultsDeep, has, isPlainObject } = require('lodash') const parseAuthorString = require('parse-author') const requiredConfigFields = { diff --git a/cli/src/lib/shell/bootstrap.js b/cli/src/lib/shell/bootstrap.js index fa330d0e1..bb9bbb687 100644 --- a/cli/src/lib/shell/bootstrap.js +++ b/cli/src/lib/shell/bootstrap.js @@ -1,8 +1,7 @@ -const fs = require('fs-extra') const path = require('path') -const { reporter, chalk } = require('@dhis2/cli-helpers-engine') - const currentShellVersion = require('@dhis2/app-shell/package.json').version +const { reporter, chalk } = require('@dhis2/cli-helpers-engine') +const fs = require('fs-extra') const getShellVersion = shellDir => { const shellPkg = path.join(shellDir, 'package.json') diff --git a/cli/src/lib/shell/index.js b/cli/src/lib/shell/index.js index 680eb4723..9d0af89d1 100644 --- a/cli/src/lib/shell/index.js +++ b/cli/src/lib/shell/index.js @@ -1,5 +1,4 @@ const { exec } = require('@dhis2/cli-helpers-engine') - const bootstrap = require('./bootstrap') const getEnv = require('./env') diff --git a/docs/usage/dependencies.md b/docs/usage/dependencies.md index 4ddd25e7b..55a257ba7 100644 --- a/docs/usage/dependencies.md +++ b/docs/usage/dependencies.md @@ -2,7 +2,7 @@ ## DHIS2 Standard Libraries -The following NPM packages are automatically provided by the platform. You can reference these libraries from your source code without specifying them as explicit dependencies, though it is recommended that you also include them as dependencies in your application's `package.json`. +The following `npm` packages are automatically provided by the platform. You can reference these libraries from your source code without specifying them as explicit dependencies, though it is recommended that you also include them as dependencies in your application's `package.json`. - `@dhis2/app-runtime` - `@dhis2/ui` diff --git a/examples/simple-app/package.json b/examples/simple-app/package.json index 22f12302a..f32f3596a 100644 --- a/examples/simple-app/package.json +++ b/examples/simple-app/package.json @@ -1,12 +1,12 @@ { "name": "simple-app", - "version": "5.5.0", + "version": "5.5.1", "repository": "https://github.com/amcgee/dhis2-app-platform", "author": "Austin McGee ", "license": "BSD-3-Clause", "private": true, "devDependencies": { - "@dhis2/cli-app-scripts": "5.5.0" + "@dhis2/cli-app-scripts": "5.5.1" }, "scripts": { "start": "d2-app-scripts start", diff --git a/examples/simple-app/src/Alerter.js b/examples/simple-app/src/Alerter.js index 383d4480f..eeee26c09 100644 --- a/examples/simple-app/src/Alerter.js +++ b/examples/simple-app/src/Alerter.js @@ -1,6 +1,6 @@ -import React, { useState } from 'react' import { useAlert } from '@dhis2/app-runtime' import { InputField, Button } from '@dhis2/ui' +import React, { useState } from 'react' export const Alerter = () => { const [message, setMessage] = useState('') diff --git a/examples/simple-app/src/App.js b/examples/simple-app/src/App.js index 65cfc89f4..021fa9e70 100644 --- a/examples/simple-app/src/App.js +++ b/examples/simple-app/src/App.js @@ -1,9 +1,9 @@ -import React from 'react' -import i18n from './locales' -import moment from 'moment' import { useDataQuery } from '@dhis2/app-runtime' +import moment from 'moment' +import React from 'react' import { Alerter } from './Alerter.js' import style from './App.style' +import i18n from './locales' const query = { me: { diff --git a/netlify.toml b/netlify.toml index fb634a9d9..add1e3749 100644 --- a/netlify.toml +++ b/netlify.toml @@ -3,4 +3,4 @@ # Default build command. command = "yarn docs:build" - ignore = "git diff --quiet HEAD^ HEAD docs/" + ignore = "git diff --quiet HEAD^ HEAD docs/ CHANGELOG.md netlify.toml package.json" diff --git a/package.json b/package.json index f5a27e6a9..5317f05b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "5.5.0", + "version": "5.5.1", "private": true, "repository": { "type": "git", @@ -15,7 +15,7 @@ ] }, "devDependencies": { - "@dhis2/cli-style": "^7.2.1", + "@dhis2/cli-style": "^7.3.0", "@dhis2/cli-utils-docsite": "^2.0.2", "concurrently": "^5.0.0" }, diff --git a/shell/.eslintignore b/shell/.eslintignore deleted file mode 100644 index 679130ee7..000000000 --- a/shell/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -src/D2App/* diff --git a/shell/.eslintrc.js b/shell/.eslintrc.js index fde7c43c4..6f09e82dd 100644 --- a/shell/.eslintrc.js +++ b/shell/.eslintrc.js @@ -1,11 +1,16 @@ -const fs = require('fs'), - path = require('path') +const fs = require('fs') +const path = require('path') -const customConfigFile = path.resolve('../../.eslintrc.js') -const hasCustomConfig = fs.existsSync(customConfigFile) +const eslintRunningLocally = process.cwd() === __dirname -const extendsArray = hasCustomConfig ? [customConfigFile] : ['react-app'] +const delegateEslintConfig = path.resolve(__dirname, '../.eslintrc.js') // This should only exist when in development! +const shouldDelegate = + !eslintRunningLocally && fs.existsSync(delegateEslintConfig) +const extendsList = shouldDelegate + ? [delegateEslintConfig, 'react-app'] + : 'react-app' module.exports = { - extends: extendsArray, + ignorePatterns: shouldDelegate ? [] : ['src/D2App/*'], + extends: extendsList, } diff --git a/shell/package.json b/shell/package.json index cdb31bd28..650af2bff 100644 --- a/shell/package.json +++ b/shell/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-shell", - "version": "5.5.0", + "version": "5.5.1", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -12,7 +12,7 @@ "access": "public" }, "dependencies": { - "@dhis2/app-adapter": "5.5.0", + "@dhis2/app-adapter": "5.5.1", "@dhis2/app-runtime": "^2.6.1", "@dhis2/d2-i18n": "^1.0.5", "@dhis2/ui": "^5.7.2", diff --git a/shell/src/App.js b/shell/src/App.js index ddad9eb72..7ff768f06 100644 --- a/shell/src/App.js +++ b/shell/src/App.js @@ -1,6 +1,6 @@ -import React from 'react' import AppAdapter from '@dhis2/app-adapter' import { Layer, layers, CenteredContent, CircularLoader } from '@dhis2/ui' +import React from 'react' const D2App = React.lazy(() => import(/*webpackChunkName: 'app'*/ './D2App/app') diff --git a/shell/src/D2App/app.js b/shell/src/D2App/app.js index d5574bfd9..8a287b014 100644 --- a/shell/src/D2App/app.js +++ b/shell/src/D2App/app.js @@ -1,3 +1,5 @@ import React from 'react' -export default () =>

PLACEHOLDER

+const PlaceholderApp = () =>

PLACEHOLDER

+ +export default PlaceholderApp diff --git a/shell/src/index.js b/shell/src/index.js index 4485a0633..1d5abed99 100644 --- a/shell/src/index.js +++ b/shell/src/index.js @@ -1,10 +1,9 @@ +import { CssReset } from '@dhis2/ui' import React from 'react' import ReactDOM from 'react-dom' import App from './App' -import * as serviceWorker from './serviceWorker' - import 'typeface-roboto' -import { CssReset } from '@dhis2/ui' +import * as serviceWorker from './serviceWorker' ReactDOM.render( <> diff --git a/yarn.lock b/yarn.lock index 8de847804..84968786d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2276,13 +2276,14 @@ resolved "https://registry.yarnpkg.com/@dhis2/app-service-data/-/app-service-data-2.6.1.tgz#260e3aa2e3901198b3c1adf0aa1696437544f40f" integrity sha512-J0fOxRgrxTJaIh31pi/gdg7J0UsstTzuLBCxtyLWCifGam3FehtZM9YQRkmOY7cANYVJfk3BqGVTP0nVXoQCVg== -"@dhis2/cli-helpers-engine@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@dhis2/cli-helpers-engine/-/cli-helpers-engine-2.0.1.tgz#04ecea312ced7d6a84927aa47c5cdb5e57a561ae" - integrity sha512-eEjDLC1Uc4MpFJxw3RUbC99CGiU9J26aPe5GZCdNJ2ny0so1QKtefxscQxcZOKZPM4svxBabiK2QJ7624dA2Vg== +"@dhis2/cli-helpers-engine@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@dhis2/cli-helpers-engine/-/cli-helpers-engine-2.1.1.tgz#34a15866b1bc16ae5c4997d79256ee787b40c11a" + integrity sha512-7HrpYwenDzPFUMRsIuStQRu7SzwVRq6NCy4k8CbZ4/VTFaWnpkncTAz+C8ztkEQQSYTW7mDLLenJ9qpkhXgoTA== dependencies: chalk "^3.0.0" fs-extra "^8.0.1" + inquirer "^7.3.3" request "^2.88.0" tar "^4.4.8" update-notifier "^3.0.0" @@ -2310,18 +2311,18 @@ handlebars "^4.5.3" isbinaryfile "^4.0.2" -"@dhis2/cli-style@^7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@dhis2/cli-style/-/cli-style-7.2.1.tgz#bbc2d8f8b7145ec2f7755256ec57ae52b46305e5" - integrity sha512-h7X6LGnUtR5GD8Dg8rRHtzdSgzKTZj2vFguDcF4qNQheE5v4mksyaZHTcc7CKTkp7kENK3ifMNTajG2fhkEFKQ== +"@dhis2/cli-style@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@dhis2/cli-style/-/cli-style-7.3.0.tgz#7c314616f4d42604ba63350274ed93f2fbabdddd" + integrity sha512-wnwCQeYIgx+JrPKApXr5Lrj2gW4HV03whvl3C3odG7WUF1qvlu849lyo8JldxdoWPsR47cT1f/0Dw8Z+gZqHWQ== dependencies: "@commitlint/cli" "^11.0.0" "@commitlint/config-conventional" "^11.0.0" - "@dhis2/cli-helpers-engine" "2.0.1" + "@dhis2/cli-helpers-engine" "2.1.1" babel-eslint "^10.1.0" cross-spawn "^7.0.3" - eslint "^7.12.0" - eslint-config-prettier "^6.14.0" + eslint "^7.12.1" + eslint-config-prettier "^6.15.0" eslint-plugin-import "^2.22.1" eslint-plugin-prettier "^3.1.4" eslint-plugin-react "^7.21.5" @@ -2329,7 +2330,6 @@ find-up "^5.0.0" fs-extra "^9.0.1" husky "^4.3.0" - inquirer "^7.3.3" perfy "^1.1.5" prettier "^2.1.2" semver "^7.3.2" @@ -2434,6 +2434,22 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" + integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -3603,6 +3619,11 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + acorn-logical-assignment@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/acorn-logical-assignment/-/acorn-logical-assignment-0.1.0.tgz#2705627069f1997c5d50e8bc4e34c951435788a6" @@ -3769,6 +3790,16 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -4128,6 +4159,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -6888,7 +6924,7 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.14.0: +eslint-config-prettier@^6.15.0: version "6.15.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== @@ -7069,7 +7105,7 @@ eslint-webpack-plugin@^2.1.0: micromatch "^4.0.2" schema-utils "^2.7.0" -eslint@^7.11.0, eslint@^7.12.0: +eslint@^7.11.0: version "7.12.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801" integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg== @@ -7112,6 +7148,49 @@ eslint@^7.11.0, eslint@^7.12.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^7.12.1: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" + integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + espree@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" @@ -7121,6 +7200,15 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" +espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -7500,6 +7588,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" + file-loader@6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" @@ -7649,11 +7744,24 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" + integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== + flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" @@ -10270,6 +10378,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -10708,7 +10821,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -lodash@^4.17.19: +lodash@^4.17.19, lodash@^4.17.20: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -13836,6 +13949,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -14528,6 +14646,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -15233,6 +15360,16 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + taffydb@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"