From bab10c928b054a0ee9e4d2d681deb6725f436e3f Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Sun, 29 Jan 2023 15:46:53 +0800 Subject: [PATCH] fix: inherit startup sort (#1402) --- packages/core/cli/src/commands/dev.js | 1 + .../core/database/src/inherited-collection.ts | 1 + packages/core/database/src/sync-runner.ts | 23 +- packages/core/server/src/application.ts | 2 + .../plugins/collection-manager/package.json | 3 +- .../src/repositories/collection-repository.ts | 35 +-- yarn.lock | 245 ++++++++++++++---- 7 files changed, 233 insertions(+), 77 deletions(-) diff --git a/packages/core/cli/src/commands/dev.js b/packages/core/cli/src/commands/dev.js index 1a293d477..b722f71f1 100644 --- a/packages/core/cli/src/commands/dev.js +++ b/packages/core/cli/src/commands/dev.js @@ -70,6 +70,7 @@ module.exports = (cli) => { ...process.argv.slice(3), `--port=${serverPort}`, ]; + if (opts.dbSync) { argv.push('--db-sync'); } diff --git a/packages/core/database/src/inherited-collection.ts b/packages/core/database/src/inherited-collection.ts index 16bbc1aa8..15657a840 100644 --- a/packages/core/database/src/inherited-collection.ts +++ b/packages/core/database/src/inherited-collection.ts @@ -4,6 +4,7 @@ import { Field } from '.'; export class InheritedCollection extends Collection { parents?: Collection[]; + constructor(options: CollectionOptions, context: CollectionContext) { if (!options.inherits) { throw new Error('InheritedCollection must have inherits option'); diff --git a/packages/core/database/src/sync-runner.ts b/packages/core/database/src/sync-runner.ts index 3dd0e4661..18272e324 100644 --- a/packages/core/database/src/sync-runner.ts +++ b/packages/core/database/src/sync-runner.ts @@ -1,6 +1,5 @@ import { InheritedCollection } from './inherited-collection'; import lodash from 'lodash'; -import { Sequelize } from 'sequelize'; export class SyncRunner { static async syncInheritModel(model: any, options: any) { @@ -42,8 +41,10 @@ export class SyncRunner { if (childAttributes.id && childAttributes.id.autoIncrement) { for (const parent of parentTables) { const sequenceNameResult = await queryInterface.sequelize.query( - `SELECT column_default FROM information_schema.columns WHERE - table_name='${parent}' and "column_name" = 'id';`, + `SELECT column_default + FROM information_schema.columns + WHERE table_name = '${parent}' + and "column_name" = 'id';`, { transaction, }, @@ -65,7 +66,8 @@ export class SyncRunner { const sequenceName = match[1]; const sequenceCurrentValResult = await queryInterface.sequelize.query( - `select last_value from ${sequenceName}`, + `select last_value + from ${sequenceName}`, { transaction, }, @@ -94,12 +96,12 @@ export class SyncRunner { const idColumnQuery = await queryInterface.sequelize.query( ` -SELECT true -FROM pg_attribute -WHERE attrelid = '${queryName}'::regclass -- cast to a registered class (table) + SELECT true + FROM pg_attribute + WHERE attrelid = '${queryName}'::regclass -- cast to a registered class (table) AND attname = 'id' -AND NOT attisdropped -`, +AND NOT attisdropped + `, { transaction, }, @@ -110,7 +112,8 @@ AND NOT attisdropped } await queryInterface.sequelize.query( - `alter table "${sequenceTable}" alter column id set default nextval('${maxSequenceName}')`, + `alter table "${sequenceTable}" + alter column id set default nextval('${maxSequenceName}')`, { transaction, }, diff --git a/packages/core/server/src/application.ts b/packages/core/server/src/application.ts index f962b6623..33c1fa21b 100644 --- a/packages/core/server/src/application.ts +++ b/packages/core/server/src/application.ts @@ -371,11 +371,13 @@ export class Application exten process.exit(1); } await this.dbVersionCheck({ exit: true }); + if (argv?.[2] !== 'upgrade') { await this.load({ method: argv?.[2], }); } + return this.cli.parseAsync(argv, options); } diff --git a/packages/plugins/collection-manager/package.json b/packages/plugins/collection-manager/package.json index e90ce33bb..fac0a598a 100644 --- a/packages/plugins/collection-manager/package.json +++ b/packages/plugins/collection-manager/package.json @@ -8,7 +8,8 @@ "@nocobase/database": "0.9.0-alpha.2", "@nocobase/plugin-error-handler": "0.9.0-alpha.2", "@nocobase/server": "0.9.0-alpha.2", - "sequelize": "^6.26.0" + "sequelize": "^6.26.0", + "toposort": "^2.0.2" }, "devDependencies": { "@nocobase/test": "0.9.0-alpha.2" diff --git a/packages/plugins/collection-manager/src/repositories/collection-repository.ts b/packages/plugins/collection-manager/src/repositories/collection-repository.ts index 4c9908be8..9cfeb5e02 100644 --- a/packages/plugins/collection-manager/src/repositories/collection-repository.ts +++ b/packages/plugins/collection-manager/src/repositories/collection-repository.ts @@ -1,6 +1,6 @@ -import Topo from '@hapi/topo'; -import { Model, Repository } from '@nocobase/database'; +import { Repository } from '@nocobase/database'; import { CollectionModel } from '../models/collection'; +import toposort from 'toposort'; interface LoadOptions { filter?: any; @@ -12,11 +12,14 @@ export class CollectionRepository extends Repository { const { filter, skipExist } = options; const instances = (await this.find({ filter })) as CollectionModel[]; - const sorter = new Topo.Sorter(); - + const inheritedGraph = []; const throughModels = []; + const generalModels = []; + + const nameMap = {}; for (const instance of instances) { + nameMap[instance.get('name')] = instance; // @ts-ignore const fields = await instance.getFields(); for (const field of fields) { @@ -28,29 +31,27 @@ export class CollectionRepository extends Repository { } } - const topoOptions = { - group: instance.get('name'), - }; - if (instance.get('inherits')) { - topoOptions['after'] = instance.get('inherits'); + for (const parent of instance.get('inherits')) { + inheritedGraph.push([parent, instance.get('name')]); + } + } else { + generalModels.push(instance.get('name')); } - - sorter.add(instance, topoOptions); } - const sorted = sorter.nodes; - - sorted.sort((a, b) => { - if (throughModels.includes(a.get('name'))) { + generalModels.sort((a, b) => { + if (throughModels.includes(a)) { return -1; } return 1; }); - for (const instance of sorted) { - await instance.load({ skipExist }); + const sortedNames = [...toposort(inheritedGraph), ...generalModels]; + + for (const instanceName of sortedNames) { + await nameMap[instanceName].load({ skipExist }); } } diff --git a/yarn.lock b/yarn.lock index 568a85306..e5a022c7a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3639,6 +3639,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.17.2": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/runtime@^7.18.0", "@babel/runtime@^7.20.0": version "7.20.6" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" @@ -5381,6 +5388,164 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nocobase/acl@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/acl/-/acl-0.8.1-alpha.4.tgz#2c971b5bd79c2522d9b67bb415d6c1d54d040d5d" + integrity sha512-avj/wansqBBD6dab4YZAnsXaDk50JbXpnqrMVr1qMCO+h2ZDteULLWBmXrSa6tpzOjj8GMVmq5R779SMMZXV3w== + dependencies: + "@nocobase/resourcer" "0.8.1-alpha.4" + json-templates "^4.2.0" + +"@nocobase/actions@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/actions/-/actions-0.8.1-alpha.4.tgz#4e49e706e77c496c868b9bb09d20c54d5b122d65" + integrity sha512-1pz9oANr8d3hQ5ZlcV+uL2UglC/p5Xyd+1mRTDIGEv6BfkZ2mKGV8DuWGlRHAZWyB7O5LyVn/nVs3SOqFlfZ8Q== + dependencies: + "@nocobase/cache" "0.8.1-alpha.4" + "@nocobase/database" "0.8.1-alpha.4" + "@nocobase/resourcer" "0.8.1-alpha.4" + +"@nocobase/cache@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/cache/-/cache-0.8.1-alpha.4.tgz#f5dfa214ba76e5669d4d0e26839f9656e4b1551d" + integrity sha512-TWDmnL+r86KI3AzlyiCMXeCbs+Ils5UtyWwQ+B4KlGjo3u3/V06GnxmHq/Ulpeac9fU6/83cIqJmDJczjk16jA== + dependencies: + cache-manager "^4.1.0" + +"@nocobase/client@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/client/-/client-0.8.1-alpha.4.tgz#2e4152d44529c734d7d61b6312b8a2ca6c1b31b5" + integrity sha512-Y7gOD/0UAMBL0wa8YaN4F96GBscBl+jNx9gCSt2CyUVFYmXnMRQnXTPc3nFbJL2XX1h8KenIH+vDT2UUJOc2Ag== + dependencies: + "@antv/g2plot" "^2.4.18" + "@dnd-kit/core" "^5.0.1" + "@dnd-kit/sortable" "^6.0.0" + "@emotion/css" "^11.7.1" + "@formily/antd" "2.0.20" + "@formily/core" "2.0.20" + "@formily/react" "2.0.20" + "@nocobase/sdk" "0.8.1-alpha.4" + "@nocobase/utils" "0.8.1-alpha.4" + ahooks "^3.7.2" + antd "4.22.8" + axios "^0.26.1" + classnames "^2.3.1" + cron-parser "^4.6.0" + cronstrue "^2.11.0" + file-saver "^2.0.5" + i18next "^21.6.0" + json-templates "^4.2.0" + marked "^4.0.12" + mathjs "^10.6.0" + react-beautiful-dnd "^13.1.0" + react-big-calendar "^0.38.7" + react-contenteditable "^3.3.6" + react-drag-listview "^0.1.9" + react-helmet "^6.1.0" + react-hotkeys-hook "^3.4.7" + react-i18next "^11.15.1" + react-iframe "~1.8.5" + react-image-lightbox "^5.1.4" + react-js-cron "^1.4.0" + react-quill "^1.3.5" + react-router-dom "^5.2.0" + react-to-print "^2.14.7" + solarlunar-es "^1.0.9" + use-deep-compare-effect "^1.8.1" + +"@nocobase/database@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/database/-/database-0.8.1-alpha.4.tgz#f12a900cd1559ff0a583bdeb8abe0f2a1c472103" + integrity sha512-0lRTM43XUV5QIvNc0l8RGL+aay6WTL2ft1uYSUDXHbn4p+hgfJtZq+1cF+SwSLFM3i66//uSQ9apkHSwjoqFJA== + dependencies: + "@nocobase/utils" "0.8.1-alpha.4" + async-mutex "^0.3.2" + cron-parser "4.4.0" + deepmerge "^4.2.2" + flat "^5.0.2" + glob "^7.1.6" + mathjs "^10.6.1" + moment "2.x" + semver "^7.3.7" + sequelize "^6.26.0" + umzug "^3.1.1" + +"@nocobase/logger@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/logger/-/logger-0.8.1-alpha.4.tgz#bb4597548a8b7d4ecaef670feed4c64feb607dc3" + integrity sha512-2STTXjPDq9MDl5hMWIQMnaNXFdKl8YOrMNJqwcGYpNeXW6xr4KoDwpMfHQb3DUHid0OILVNOg6cWCZuvFks4Qg== + dependencies: + lodash "^4.17.21" + winston "^3.8.2" + winston-daily-rotate-file "^4.7.1" + +"@nocobase/resourcer@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/resourcer/-/resourcer-0.8.1-alpha.4.tgz#8bbcba1e225a9a1743f940373bc2e6488700f3af" + integrity sha512-+r02gA+1V4K+lGLmcq84/bMLU6OLQ7DnSBUJpMNLteiDiLgYmsanoGkjeH/dqss8fGfEQW26+pcfDny2SoaWJA== + dependencies: + "@nocobase/utils" "0.8.1-alpha.4" + deepmerge "^4.2.2" + koa-compose "^4.1.0" + lodash "^4.17.21" + path-to-regexp "^6.1.0" + qs "^6.9.4" + +"@nocobase/sdk@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/sdk/-/sdk-0.8.1-alpha.4.tgz#d2ef03ff855b861ae1a0ccbf3daf198b74e6c2a4" + integrity sha512-ZIOyC2KmW5Sb5H49jUSbQeEIA8WWL4cGYfnqKSo0ZaQE4rq+vs3adYtqO4C1I8dVy7oEXut6wHHwCQT8/m15/A== + dependencies: + axios "^0.26.1" + qs "^6.10.1" + +"@nocobase/server@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/server/-/server-0.8.1-alpha.4.tgz#683eb80ee140e2212639534f0fc44e052d497f46" + integrity sha512-kF9G6uN9kiB87egusl2zDFR41edzQcxamakKlnPLM+xXEQLhN79za7KazJq59h0ZPqvBQsyeMI/0hbx6qICRaw== + dependencies: + "@hapi/topo" "^6.0.0" + "@koa/cors" "^3.1.0" + "@koa/router" "^9.4.0" + "@nocobase/acl" "0.8.1-alpha.4" + "@nocobase/actions" "0.8.1-alpha.4" + "@nocobase/database" "0.8.1-alpha.4" + "@nocobase/logger" "0.8.1-alpha.4" + "@nocobase/resourcer" "0.8.1-alpha.4" + chalk "^4.1.1" + commander "^9.2.0" + find-package-json "^1.2.0" + i18next "^21.6.0" + koa "^2.13.4" + koa-bodyparser "^4.3.0" + koa-static "^5.0.0" + lodash "^4.17.21" + semver "^7.3.7" + xpipe "^1.0.5" + +"@nocobase/test@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/test/-/test-0.8.1-alpha.4.tgz#9cc36f509ce3b31497c35e26ff82a416c98769db" + integrity sha512-Pj/MtqaHicRl440BrCCfKk+y21i8l+MgkwLWKoFu7fxPBA7zKf+iB7z5KIt48kFe1AbX+Mm9mIgnBR/bZUuGEw== + dependencies: + "@nocobase/server" "0.8.1-alpha.4" + "@types/supertest" "^2.0.11" + mockjs "^1.1.0" + mysql2 "^2.3.3" + pg "^8.7.3" + pg-hstore "^2.3.4" + sqlite3 "^5.0.8" + supertest "^6.1.6" + +"@nocobase/utils@0.8.1-alpha.4": + version "0.8.1-alpha.4" + resolved "https://registry.npmjs.org/@nocobase/utils/-/utils-0.8.1-alpha.4.tgz#4558cc5b914d41841d51e727fe6d9f58b3a7f04a" + integrity sha512-6YsHFTUzGCDgSRgxr7YZ1RUsSgwHXEz5j/2W8mTRYd94Psmp5XiEnxF1kMuGDSVffaQvWNvvUzwGrb3yB/uBUA== + dependencies: + "@hapi/topo" "^6.0.0" + deepmerge "^4.2.2" + flat-to-nested "^1.1.1" + "@node-saml/node-saml@^4.0.2": version "4.0.2" resolved "https://registry.npmjs.org/@node-saml/node-saml/-/node-saml-4.0.2.tgz#e12020ea635346f33fcef008fe0e6fa2f28713e5" @@ -6442,7 +6607,14 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-dom@^16.9.8", "@types/react-dom@^17.0.0": +"@types/react-dom@^16.9.8": + version "16.9.17" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.17.tgz#29100cbcc422d7b7dba7de24bb906de56680dd34" + integrity sha512-qSRyxEsrm5btPXnowDOs5jSkgT8ldAA0j6Qp+otHUh+xHzy3sXmgNfyhucZjAjkgpdAUw9rJe0QRtX/l+yaS4g== + dependencies: + "@types/react" "^16" + +"@types/react-dom@^17.0.0": version "17.0.11" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== @@ -6502,7 +6674,7 @@ "@types/history" "*" "@types/react" "*" -"@types/react@*", "@types/react@>=16.9.11", "@types/react@^16.9.43", "@types/react@^17.0.0": +"@types/react@*", "@types/react@>=16.9.11", "@types/react@^17.0.0": version "17.0.34" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.34.tgz#797b66d359b692e3f19991b6b07e4b0c706c0102" integrity sha512-46FEGrMjc2+8XhHXILr+3+/sTe3OfzSPU9YGKILLrUYbQ1CLQC9Daqo1KzENGXAWwrFwiY0l4ZbF20gRvgpWTg== @@ -6511,6 +6683,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^16", "@types/react@^16.9.43": + version "16.14.35" + resolved "https://registry.npmjs.org/@types/react/-/react-16.14.35.tgz#9d3cf047d85aca8006c4776693124a5be90ee429" + integrity sha512-NUEiwmSS1XXtmBcsm1NyRRPYjoZF2YTE89/5QiLt5mlGffYK9FQqOKuOLuXNrjPQV04oQgaZG+Yq02ZfHoFyyg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -8953,7 +9134,7 @@ chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -9787,13 +9968,6 @@ copy-to-clipboard@^3.2.0: dependencies: toggle-selection "^1.0.6" -copy-to-clipboard@^3.3.1: - version "3.3.3" - resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - copy-to@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" @@ -11090,13 +11264,6 @@ ee-first@1.1.1, ee-first@~1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.8: - version "3.1.8" - resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - electron-to-chromium@^1.3.886: version "1.3.896" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.896.tgz#4a94efe4870b1687eafd5c378198a49da06e8a1b" @@ -12122,13 +12289,6 @@ file-uri-to-path@2: resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -13530,6 +13690,13 @@ i18next-http-backend@^2.1.1: dependencies: cross-fetch "3.1.5" +i18next@^21.6.0: + version "21.10.0" + resolved "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz#85429af55fdca4858345d0e16b584ec29520197d" + integrity sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg== + dependencies: + "@babel/runtime" "^7.17.2" + i18next@^22.4.9: version "22.4.9" resolved "https://registry.npmjs.org/i18next/-/i18next-22.4.9.tgz#98c8384c6bd41ff937da98b1e809ba03d3b41053" @@ -14559,16 +14726,6 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.npmmirror.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - javascript-natural-sort@^0.7.1: version "0.7.1" resolved "https://registry.npmmirror.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" @@ -17036,13 +17193,6 @@ minimatch@^3.0.3, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^5.1.0: version "5.1.1" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" @@ -20662,14 +20812,6 @@ react-contenteditable@^3.3.6: fast-deep-equal "^3.1.3" prop-types "^15.7.1" -react-copy-to-clipboard@^5.1.0: - version "5.1.0" - resolved "https://registry.npmmirror.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz#09aae5ec4c62750ccb2e6421a58725eabc41255c" - integrity sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A== - dependencies: - copy-to-clipboard "^3.3.1" - prop-types "^15.8.1" - react-docgen-typescript-dumi-tmp@^1.22.1-0: version "1.22.1-0" resolved "https://registry.npmjs.org/react-docgen-typescript-dumi-tmp/-/react-docgen-typescript-dumi-tmp-1.22.1-0.tgz#6f452de05c5c114a6e1dd60b34930afaa7ae39a0" @@ -23580,6 +23722,11 @@ toposort-class@^1.0.1: resolved "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"