replace esmac with Dependency Cruiser
test plan: - build passes - run locally: node_modules/.bin/depcruise ./ --include-only "^(ui|packages)" closes CFA-63 Change-Id: I6c053b57e0f7b9d1c13d88a03603dbc9d34f2667 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/346184 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Isaac Moore <isaac.moore@instructure.com> Build-Review: Isaac Moore <isaac.moore@instructure.com> QA-Review: Aaron Shafovaloff <ashafovaloff@instructure.com> Product-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
This commit is contained in:
parent
7d9d45171e
commit
323ee9474f
|
@ -0,0 +1,285 @@
|
|||
/** @type {import('dependency-cruiser').IConfiguration} */
|
||||
|
||||
module.exports = {
|
||||
forbidden: [
|
||||
{
|
||||
name: 'no-circular',
|
||||
severity: 'info',
|
||||
comment:
|
||||
'This dependency is part of a circular relationship. You might want to revise ' +
|
||||
'your solution (i.e. use dependency inversion, make sure the modules have a single responsibility) ',
|
||||
from: {},
|
||||
to: {
|
||||
circular: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'no-orphans',
|
||||
comment:
|
||||
"This is an orphan module - it's likely not used (anymore?). Either use it or " +
|
||||
"remove it. If it's logical this module is an orphan (i.e. it's a config file), " +
|
||||
'add an exception for it in your dependency-cruiser configuration. By default ' +
|
||||
'this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration ' +
|
||||
'files (.d.ts), tsconfig.json and some of the babel and webpack configs.',
|
||||
severity: 'warn',
|
||||
from: {
|
||||
orphan: true,
|
||||
pathNot: [
|
||||
'(^|/)[.][^/]+[.](?:js|cjs|mjs|ts|cts|mts|json)$', // dot files
|
||||
'[.]d[.]ts$', // TypeScript declaration files
|
||||
'(^|/)tsconfig[.]json$', // TypeScript config
|
||||
'(^|/)(?:babel|webpack)[.]config[.](?:js|cjs|mjs|ts|cts|mts|json)$', // other configs
|
||||
],
|
||||
},
|
||||
to: {},
|
||||
},
|
||||
{
|
||||
name: 'no-deprecated-core',
|
||||
comment:
|
||||
'A module depends on a node core module that has been deprecated. Find an alternative - these are ' +
|
||||
"bound to exist - node doesn't deprecate lightly.",
|
||||
severity: 'warn',
|
||||
from: {},
|
||||
to: {
|
||||
dependencyTypes: ['core'],
|
||||
path: [
|
||||
'^v8/tools/codemap$',
|
||||
'^v8/tools/consarray$',
|
||||
'^v8/tools/csvparser$',
|
||||
'^v8/tools/logreader$',
|
||||
'^v8/tools/profile_view$',
|
||||
'^v8/tools/profile$',
|
||||
'^v8/tools/SourceMap$',
|
||||
'^v8/tools/splaytree$',
|
||||
'^v8/tools/tickprocessor-driver$',
|
||||
'^v8/tools/tickprocessor$',
|
||||
'^node-inspect/lib/_inspect$',
|
||||
'^node-inspect/lib/internal/inspect_client$',
|
||||
'^node-inspect/lib/internal/inspect_repl$',
|
||||
'^async_hooks$',
|
||||
'^punycode$',
|
||||
'^domain$',
|
||||
'^constants$',
|
||||
'^sys$',
|
||||
'^_linklist$',
|
||||
'^_stream_wrap$',
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'not-to-deprecated',
|
||||
comment:
|
||||
'This module uses a (version of an) npm module that has been deprecated. Either upgrade to a later ' +
|
||||
'version of that module, or find an alternative. Deprecated modules are a security risk.',
|
||||
severity: 'warn',
|
||||
from: {},
|
||||
to: {
|
||||
dependencyTypes: ['deprecated'],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'no-non-package-json',
|
||||
severity: 'error',
|
||||
comment:
|
||||
"This module depends on an npm package that isn't in the 'dependencies' section of your package.json. " +
|
||||
"That's problematic as the package either (1) won't be available on live (2 - worse) will be " +
|
||||
'available on live with an non-guaranteed version. Fix it by adding the package to the dependencies ' +
|
||||
'in your package.json.',
|
||||
from: {},
|
||||
to: {
|
||||
dependencyTypes: ['npm-no-pkg', 'npm-unknown'],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'not-to-unresolvable',
|
||||
comment:
|
||||
"This module depends on a module that cannot be found ('resolved to disk'). If it's an npm " +
|
||||
'module: add it to your package.json. In all other cases you likely already know what to do.',
|
||||
severity: 'error',
|
||||
from: {},
|
||||
to: {
|
||||
couldNotResolve: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'no-duplicate-dep-types',
|
||||
comment:
|
||||
"Likely this module depends on an external ('npm') package that occurs more than once " +
|
||||
'in your package.json i.e. bot as a devDependencies and in dependencies. This will cause ' +
|
||||
'maintenance problems later on.',
|
||||
severity: 'warn',
|
||||
from: {},
|
||||
to: {
|
||||
moreThanOneDependencyType: true,
|
||||
// as it's pretty common to have a type import be a type only import
|
||||
// _and_ (e.g.) a devDependency - don't consider type-only dependency
|
||||
// types for this rule
|
||||
dependencyTypesNot: ['type-only'],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
name: 'not-to-spec',
|
||||
comment:
|
||||
'This module depends on a spec (test) file. The sole responsibility of a spec file is to test code. ' +
|
||||
"If there's something in a spec that's of use to other modules, it doesn't have that single " +
|
||||
'responsibility anymore. Factor it out into (e.g.) a separate utility/ helper or a mock.',
|
||||
severity: 'error',
|
||||
from: {},
|
||||
to: {
|
||||
path: '[.](?:spec|test)[.](?:js|mjs|cjs|jsx|ts|mts|cts|tsx|ls|coffee|litcoffee|coffee[.]md)$',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'not-to-dev-dep',
|
||||
severity: 'error',
|
||||
comment:
|
||||
"This module depends on an npm package from the 'devDependencies' section of your " +
|
||||
'package.json. It looks like something that ships to production, though. To prevent problems ' +
|
||||
"with npm packages that aren't there on production declare it (only!) in the 'dependencies'" +
|
||||
'section of your package.json. If this module is development only - add it to the ' +
|
||||
'from.pathNot re of the not-to-dev-dep rule in the dependency-cruiser configuration',
|
||||
from: {
|
||||
path: '^(packages)',
|
||||
pathNot:
|
||||
'[.](?:spec|test)[.](?:js|mjs|cjs|jsx|ts|mts|cts|tsx|ls|coffee|litcoffee|coffee[.]md)$',
|
||||
},
|
||||
to: {
|
||||
dependencyTypes: ['npm-dev'],
|
||||
// type only dependencies are not a problem as they don't end up in the
|
||||
// production code or are ignored by the runtime.
|
||||
dependencyTypesNot: ['type-only'],
|
||||
pathNot: ['node_modules/@types/', 'node_modules/sinon/'],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'optional-deps-used',
|
||||
severity: 'info',
|
||||
comment:
|
||||
'This module depends on an npm package that is declared as an optional dependency ' +
|
||||
"in your package.json. As this makes sense in limited situations only, it's flagged here. " +
|
||||
"If you're using an optional dependency here by design - add an exception to your" +
|
||||
'dependency-cruiser configuration.',
|
||||
from: {},
|
||||
to: {
|
||||
dependencyTypes: ['npm-optional'],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'peer-deps-used',
|
||||
comment:
|
||||
'This module depends on an npm package that is declared as a peer dependency ' +
|
||||
'in your package.json. This makes sense if your package is e.g. a plugin, but in ' +
|
||||
'other cases - maybe not so much. If the use of a peer dependency is intentional ' +
|
||||
'add an exception to your dependency-cruiser configuration.',
|
||||
severity: 'warn',
|
||||
from: {},
|
||||
to: {
|
||||
dependencyTypes: ['npm-peer'],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'no-ui-shared-to-ui-features',
|
||||
comment: 'Do not allow imports in ui/shared from ui/features',
|
||||
severity: 'error',
|
||||
from: {
|
||||
path: '^ui/shared',
|
||||
pathNot: [
|
||||
// TODO: remove these
|
||||
'ui/shared/proxy-submission/react/ProxyUploadModal.tsx',
|
||||
'ui/shared/global/env/EnvCoursePaces.d.ts',
|
||||
'ui/shared/global/env/EnvCourse.d.ts',
|
||||
'ui/shared/discussions/react/components/AnonymousAvatar/AnonymousAvatar.stories.jsx',
|
||||
],
|
||||
},
|
||||
to: {
|
||||
path: '^ui/features',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'no-packages-to-ui',
|
||||
comment: 'Do not allow imports in packages/ from ui/',
|
||||
severity: 'error',
|
||||
from: {
|
||||
path: '^packages/',
|
||||
pathNot: ['packages/slickgrid/slick.grid.js'],
|
||||
},
|
||||
to: {
|
||||
path: '^ui/',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'no-feature-interdependence',
|
||||
comment: 'One feature should not depend on another feature (in a separate folder)',
|
||||
severity: 'error',
|
||||
from: {path: '(^ui/features/)([^/]+)/'},
|
||||
to: {path: '^$1', pathNot: '$1$2'},
|
||||
},
|
||||
],
|
||||
options: {
|
||||
doNotFollow: {
|
||||
path: ['node_modules'],
|
||||
},
|
||||
|
||||
includeOnly: ['ui', 'packages'],
|
||||
|
||||
/* false (the default): ignore dependencies that only exist before typescript-to-javascript compilation
|
||||
true: also detect dependencies that only exist before typescript-to-javascript compilation
|
||||
"specify": for each dependency identify whether it only exists before compilation or also after
|
||||
*/
|
||||
tsPreCompilationDeps: false,
|
||||
|
||||
/* if true combines the package.jsons found from the module up to the base
|
||||
folder the cruise is initiated from. Useful for how (some) mono-repos
|
||||
manage dependencies & dependency definitions.
|
||||
*/
|
||||
combinedDependencies: false,
|
||||
|
||||
/* TypeScript project file ('tsconfig.json') to use for
|
||||
(1) compilation and
|
||||
(2) resolution (e.g. with the paths property)
|
||||
|
||||
The (optional) fileName attribute specifies which file to take (relative to
|
||||
dependency-cruiser's current working directory). When not provided
|
||||
defaults to './tsconfig.json'.
|
||||
*/
|
||||
tsConfig: {
|
||||
fileName: 'tsconfig.json',
|
||||
},
|
||||
enhancedResolveOptions: {
|
||||
/* What to consider as an 'exports' field in package.jsons */
|
||||
exportsFields: ['exports'],
|
||||
/* List of conditions to check for in the exports field.
|
||||
Only works when the 'exportsFields' array is non-empty.
|
||||
*/
|
||||
conditionNames: ['import', 'require', 'node', 'default', 'types'],
|
||||
/*
|
||||
The extensions, by default are the same as the ones dependency-cruiser
|
||||
can access (run `npx depcruise --info` to see which ones that are in
|
||||
_your_ environment. If that list is larger than you need you can pass
|
||||
the extensions you actually use (e.g. [".js", ".jsx"]). This can speed
|
||||
up the most expensive step in dependency cruising (module resolution)
|
||||
quite a bit.
|
||||
*/
|
||||
extensions: [".js", ".jsx", ".ts", ".tsx", ".d.ts"],
|
||||
|
||||
/* What to consider a 'main' field in package.json */
|
||||
// if you migrate to ESM (or are in an ESM environment already) you will want to
|
||||
// have "module" in the list of mainFields, like so:
|
||||
// mainFields: ["module", "main", "types", "typings"],
|
||||
mainFields: ['main', 'types', 'typings'],
|
||||
},
|
||||
reporterOptions: {
|
||||
dot: {
|
||||
collapsePattern: 'node_modules/(?:@[^/]+/[^/]+|[^/]+)',
|
||||
},
|
||||
archi: {
|
||||
collapsePattern:
|
||||
'^(?:packages|src|lib(s?)|app(s?)|bin|test(s?)|spec(s?))/[^/]+|node_modules/(?:@[^/]+/[^/]+|[^/]+)',
|
||||
},
|
||||
text: {
|
||||
highlightFocused: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
|
@ -54,6 +54,7 @@ ruby script/rlint --no-fail-on-offense
|
|||
[ "${SKIP_ESLINT-}" != "true" ] && ruby script/eslint
|
||||
ruby script/lint_commit_message
|
||||
node script/yarn-validate-workspace-deps.js 2>/dev/null < <(yarn --silent workspaces info --json)
|
||||
node_modules/.bin/depcruise ./ --include-only "^(ui|packages)"
|
||||
node ui-build/tools/component-info.mjs -i -v -g
|
||||
|
||||
bin/rails css:styleguide doc:api
|
||||
|
|
|
@ -282,6 +282,7 @@
|
|||
"core-js": "^3.20.3",
|
||||
"core-js-builder": "^3",
|
||||
"css-loader": "^3",
|
||||
"dependency-cruiser": "^16.3.1",
|
||||
"ember-template-compiler": "^1.8.0",
|
||||
"enzyme": "^3",
|
||||
"enzyme-adapter-react-16": "^1.15.7",
|
||||
|
@ -376,7 +377,6 @@
|
|||
"webpack": "^5",
|
||||
"webpack-bundle-analyzer": "^4.5.0",
|
||||
"webpack-cli": "^4",
|
||||
"webpack-esmac-plugin": "^4.0.0",
|
||||
"webpack-manifest-plugin": "^5",
|
||||
"wrap-ansi": "^7.0.0",
|
||||
"wsrun": "^5",
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
import $ from 'jquery'
|
||||
import 'jquery-migrate'
|
||||
import assignmentRubricDialog from 'ui/features/discussion_topic/jquery/assignmentRubricDialog'
|
||||
import assignmentRubricDialog from '@canvas/discussions/jquery/assignmentRubricDialog'
|
||||
|
||||
QUnit.module('assignmentRubricDialog')
|
||||
|
||||
|
|
|
@ -1,83 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2021 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
const t = require('./util')
|
||||
|
||||
module.exports = error => {
|
||||
const {request, source, target} = error
|
||||
|
||||
let message = ''
|
||||
let hint = ''
|
||||
|
||||
message += `\n`
|
||||
message += t.wordWrap(`Access to the following module is not allowed from this layer:`, 72)
|
||||
message += `\n \n`
|
||||
message += ` ${request}`
|
||||
message += `\n \n`
|
||||
message += `Which resolved to:`
|
||||
message += `\n \n`
|
||||
message += ` ${target}`
|
||||
message += `\n \n`
|
||||
|
||||
if (source.startsWith('ui/features/') && target.startsWith('ui/features/')) {
|
||||
hint += '<Hint>'
|
||||
hint += `\n`
|
||||
hint += t.wordWrap(
|
||||
`
|
||||
Feature modules may not access different feature modules. Instead, you
|
||||
can extract the common code into a Canvas package under ui/shared/
|
||||
or into a generic package under packages/ in case it has no dependency
|
||||
on Canvas.
|
||||
`,
|
||||
60
|
||||
)
|
||||
} else if (source.startsWith('ui/shared') && target.startsWith('ui/features/')) {
|
||||
hint += '<Hint>'
|
||||
hint += `\n`
|
||||
hint += t.wordWrap(
|
||||
`
|
||||
Canvas package modules may not access feature modules. You can extract
|
||||
the desired code into another Canvas package (or your own) and access it
|
||||
as you would other Canvas packages.
|
||||
`,
|
||||
60
|
||||
)
|
||||
} else if (source.startsWith('packages/') && target.startsWith('ui/')) {
|
||||
hint += '<Hint>'
|
||||
hint += `\n`
|
||||
hint += t.wordWrap(
|
||||
`
|
||||
Package modules may not access anything under ui/, including Canvas
|
||||
packages. If this dependency is legitimate, you can 1) turn this package
|
||||
into a Canvas one where it may access other Canvas packages, or 2) extract
|
||||
the desired code into another generic package (or your own.)
|
||||
`,
|
||||
60
|
||||
)
|
||||
} else if (target.startsWith('ui/boot/')) {
|
||||
hint += `<Hint>`
|
||||
hint += `\n`
|
||||
hint += t.wordWrap(`You don't access ui/boot/, ui/boot/ accesses you.`, 60)
|
||||
}
|
||||
|
||||
if (hint.length) {
|
||||
message += t.bracketize(hint)
|
||||
}
|
||||
|
||||
return t.alignWithWebpackStackTrace(t.bracketize(message))
|
||||
}
|
|
@ -1,171 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2021 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
const micromatch = require('micromatch')
|
||||
const path = require('path')
|
||||
const t = require('./util')
|
||||
|
||||
module.exports = error => {
|
||||
const {rule, ruleIndex, request} = error
|
||||
|
||||
let message = ''
|
||||
|
||||
message += `\nImport violates encapsulation integrity:`
|
||||
message += `\n \n`
|
||||
message += ` ${request}`
|
||||
message += `\n \n`
|
||||
message += t.wordWrap(
|
||||
`According to rule #${ruleIndex + 1}: "${rule.rule.trim().replace(/\s+/g, ' ')}"`,
|
||||
72
|
||||
)
|
||||
message += `\n \n`
|
||||
|
||||
if (rule.specifier === 'relative') {
|
||||
message += expectedRelativeSpecifier(error)
|
||||
} else if (rule.specifier === 'package') {
|
||||
message += expectedPackageSpecifier(error)
|
||||
}
|
||||
|
||||
return t.alignWithWebpackStackTrace(t.bracketize(message))
|
||||
}
|
||||
|
||||
const expectedRelativeSpecifier = ({source, target, request}) => {
|
||||
const suggestion = t.withLeadingDotSlash(
|
||||
path.relative(path.dirname(source), t.withOrWithoutExtension(request, target))
|
||||
)
|
||||
|
||||
let message = ''
|
||||
|
||||
message += `<Hint>`
|
||||
message += `\n`
|
||||
message += `Use a relative specifier:`
|
||||
message += `\n \n`
|
||||
message += ` ${suggestion}`
|
||||
message += `\n`
|
||||
|
||||
return t.bracketize(message)
|
||||
}
|
||||
|
||||
const expectedPackageSpecifier = error => {
|
||||
const {target} = error
|
||||
|
||||
if (target.startsWith('ui/shared')) {
|
||||
// eslint-disable-next-line react-hooks/rules-of-hooks
|
||||
return useOrAddCanvasPackage(error)
|
||||
} else if (target.startsWith('packages/')) {
|
||||
// eslint-disable-next-line react-hooks/rules-of-hooks
|
||||
return useOrAddGenericPackage(error)
|
||||
}
|
||||
}
|
||||
|
||||
const useOrAddGenericPackage = error => {
|
||||
const {target} = error
|
||||
const [packageName] = micromatch.capture('packages/*/**', target)
|
||||
const [pjsonFile, pjson] =
|
||||
t.findPackageJSON(target, [packageName, `@instructure/${packageName}`]) || []
|
||||
|
||||
if (pjsonFile) {
|
||||
// eslint-disable-next-line react-hooks/rules-of-hooks
|
||||
return useExistingPackage(error, {pjsonFile, pjson})
|
||||
} else {
|
||||
return addGenericPackage(error, {packageName})
|
||||
}
|
||||
}
|
||||
|
||||
const addGenericPackage = (error, {packageName}) => {
|
||||
let message = ''
|
||||
|
||||
message += `<Hint>`
|
||||
message += `\n`
|
||||
message += t.wordWrap(
|
||||
`
|
||||
Package is missing a package.json, you should add one at
|
||||
packages/${packageName}/package.json with contents similar to:
|
||||
`,
|
||||
72
|
||||
)
|
||||
message += `\n`
|
||||
message += `
|
||||
{
|
||||
"name": "${packageName}",
|
||||
"version": "1.0.0"
|
||||
}`
|
||||
|
||||
message += `\n`
|
||||
|
||||
return message
|
||||
}
|
||||
|
||||
const useOrAddCanvasPackage = error => {
|
||||
const {target} = error
|
||||
const [packageName] = micromatch.capture('ui/shared/*/**', target) || []
|
||||
const [pjsonFile, pjson] = t.findPackageJSON(target, [`@canvas/${packageName}`]) || []
|
||||
|
||||
if (pjsonFile) {
|
||||
// eslint-disable-next-line react-hooks/rules-of-hooks
|
||||
return useExistingPackage(error, {pjsonFile, pjson})
|
||||
} else {
|
||||
return addCanvasPackage(error, {packageName})
|
||||
}
|
||||
}
|
||||
|
||||
const addCanvasPackage = (error, {packageName}) => {
|
||||
let message = ''
|
||||
|
||||
message += '<Hint>'
|
||||
message += `\n`
|
||||
message += t.wordWrap(
|
||||
`
|
||||
Canvas package is missing a package.json, you must add one at
|
||||
ui/shared/${packageName}/package.json with contents similar to:
|
||||
`.trim(),
|
||||
72
|
||||
)
|
||||
message += `\n`
|
||||
message += `
|
||||
{
|
||||
"name": "@canvas/${packageName}",
|
||||
"version": "1.0.0",
|
||||
"private": true
|
||||
}`
|
||||
message += `\n`
|
||||
|
||||
return t.bracketize(message)
|
||||
}
|
||||
|
||||
const useExistingPackage = ({request, target}, {pjsonFile, pjson}) => {
|
||||
const suggestion = [
|
||||
pjson.name, // e.g. @canvas/foo
|
||||
path.relative(
|
||||
// e.g. lib/index.js
|
||||
path.dirname(pjsonFile),
|
||||
t.withOrWithoutExtension(request, target) // or lib/index, w/o extension
|
||||
),
|
||||
].join('/')
|
||||
|
||||
let message = ''
|
||||
|
||||
message += `<Hint>`
|
||||
message += `\n`
|
||||
message += `Use a bare specifier:`
|
||||
message += `\n \n`
|
||||
message += ` ${suggestion}`
|
||||
message += `\n`
|
||||
|
||||
return t.bracketize(message)
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2021 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
const formatAccessViolationError = require('./formatAccessViolationError')
|
||||
const formatSpecifierMismatchError = require('./formatSpecifierMismatchError')
|
||||
|
||||
module.exports = function (error) {
|
||||
if (error.name === 'AccessViolationError') {
|
||||
return formatAccessViolationError(error)
|
||||
} else if (error.name === 'SpecifierMismatchError') {
|
||||
return formatSpecifierMismatchError(error)
|
||||
} else {
|
||||
return error.toString()
|
||||
}
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2021 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
const path = require('path')
|
||||
const wrapAnsi = require('wrap-ansi')
|
||||
const findUp = require('find-up')
|
||||
|
||||
exports.bracketize = message => {
|
||||
const lines = message.split('\n')
|
||||
|
||||
return lines
|
||||
.slice(0, 1)
|
||||
.concat([':'])
|
||||
.concat(lines.slice(1).map(line => `| ${line}`))
|
||||
.concat([':'])
|
||||
.join('\n')
|
||||
}
|
||||
|
||||
// webpack's stack trace is padded by 1 space, it's easier on the eyes to align
|
||||
// the message to it
|
||||
exports.alignWithWebpackStackTrace = message =>
|
||||
message
|
||||
.split('\n')
|
||||
.map(x => ` ${x}`)
|
||||
.join('\n')
|
||||
|
||||
exports.wordWrap = (paragraph, columns = 72) =>
|
||||
wrapAnsi(paragraph.trim().replace(/\s{2,}/g, ' '), columns)
|
||||
|
||||
// node's path#relative() function doesn't show a leading ./, which is confusing
|
||||
// if you're trying to communicate a path should be relative because it
|
||||
// otherwise looks bare
|
||||
exports.withLeadingDotSlash = x => (x.startsWith('.') ? x : `./${x}`)
|
||||
|
||||
// if the original file has an extension, keep it in the suggested version,
|
||||
// otherwise omit it (suggested is assumed to always have an extension!)
|
||||
exports.withOrWithoutExtension = (original, suggested) => {
|
||||
const originalExt = path.extname(original)
|
||||
|
||||
if (originalExt.length) {
|
||||
return suggested
|
||||
}
|
||||
|
||||
const suggestedExt = path.extname(suggested)
|
||||
|
||||
if (suggestedExt.length) {
|
||||
return suggested.slice(0, -suggestedExt.length)
|
||||
} else {
|
||||
return suggested
|
||||
}
|
||||
}
|
||||
|
||||
const findPackageJSON = (file, names) => {
|
||||
const pjsonFile = findUp.sync('package.json', {cwd: path.dirname(file)})
|
||||
|
||||
if (!pjsonFile) {
|
||||
return null
|
||||
}
|
||||
|
||||
// eslint-disable-next-line import/no-dynamic-require
|
||||
const pjson = require(pjsonFile)
|
||||
|
||||
if (pjson.name && names.includes(pjson.name)) {
|
||||
return [pjsonFile, pjson]
|
||||
} else {
|
||||
return findPackageJSON(path.dirname(pjsonFile), names)
|
||||
}
|
||||
}
|
||||
|
||||
exports.findPackageJSON = findPackageJSON
|
|
@ -1,110 +0,0 @@
|
|||
[
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "packages/jqueryui/tooltip.js",
|
||||
"target": "ui/shared/i18n/rtlHelper.js",
|
||||
"request": "@canvas/i18n/rtlHelper"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "packages/slickgrid/slick.grid.js",
|
||||
"target": "ui/shared/i18n/rtlHelper.js",
|
||||
"request": "@canvas/i18n/rtlHelper"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "ui/features/assignments_show_student/react/components/AttemptType/MediaAttempt.js",
|
||||
"target": "ui/features/media_player_iframe_content/react/CanvasMediaPlayer.js",
|
||||
"request": "../../../../media_player_iframe_content/react/CanvasMediaPlayer"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "ui/features/collaborations/index.js",
|
||||
"target": "ui/boot/initializers/activateKeyClicks.js",
|
||||
"request": "../../boot/initializers/activateKeyClicks.js"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/features/discussion_topics_post/graphql/Mutations.js",
|
||||
"target": "ui/shared/graphql/Error.js",
|
||||
"request": "../../../shared/graphql/Error"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/features/grade_summary/graphql/Mutations.js",
|
||||
"target": "ui/shared/graphql/Error.js",
|
||||
"request": "../../../shared/graphql/Error"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/features/discussion_topic_edit_v2/graphql/Mutations.js",
|
||||
"target": "ui/shared/graphql/Error.js",
|
||||
"request": "../../../shared/graphql/Error"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "ui/features/discussion_topics_post/react/containers/DiscussionTopicContainer/DiscussionTopicContainer.jsx",
|
||||
"target": "ui/features/discussion_topic/jquery/assignmentRubricDialog.js",
|
||||
"request": "../../../../discussion_topic/jquery/assignmentRubricDialog"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/features/discussion_topics_post/react/containers/DiscussionTopicContainer/DiscussionTopicContainer.jsx",
|
||||
"target": "ui/shared/rubrics/jquery/edit_rubric.jsx",
|
||||
"request": "../../../../../shared/rubrics/jquery/edit_rubric"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "ui/features/gradebook/react/default_gradebook/Gradebook.tsx",
|
||||
"target": "ui/boot/initializers/activateKeyClicks.js",
|
||||
"request": "../../../../boot/initializers/activateKeyClicks"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "ui/features/assignment_edit/backbone/views/EditView.jsx",
|
||||
"target": "ui/boot/initializers/activateTooltips.js",
|
||||
"request": "../../../../boot/initializers/activateTooltips"
|
||||
},
|
||||
{
|
||||
"name": "AccessViolationError",
|
||||
"source": "ui/features/gradebook/react/default_gradebook/Gradebook.tsx",
|
||||
"target": "ui/boot/initializers/activateTooltips.js",
|
||||
"request": "../../../../boot/initializers/activateTooltips"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/features/inbox/graphql/Mutations.js",
|
||||
"target": "ui/shared/graphql/Error.js",
|
||||
"request": "../../../shared/graphql/Error"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/shared/apollo/index.js",
|
||||
"target": "ui/shared/encrypted-forage/index.js",
|
||||
"request": "../encrypted-forage"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/shared/outcomes/react/hooks/useGroupCreate.js",
|
||||
"target": "ui/shared/outcomes/graphql/Management.js",
|
||||
"request": "@canvas/outcomes/graphql/Management"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/shared/outcomes/react/hooks/useGroupDetail.js",
|
||||
"target": "ui/shared/outcomes/graphql/Management.js",
|
||||
"request": "@canvas/outcomes/graphql/Management"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/shared/outcomes/react/hooks/useOutcomesImport.js",
|
||||
"target": "ui/shared/outcomes/graphql/Management.js",
|
||||
"request": "@canvas/outcomes/graphql/Management"
|
||||
},
|
||||
{
|
||||
"name": "SpecifierMismatchError",
|
||||
"source": "ui/shared/outcomes/react/hooks/useOutcomesImport.js",
|
||||
"target": "ui/shared/outcomes/react/hooks/useCanvasContext.js",
|
||||
"request": "@canvas/outcomes/react/hooks/useCanvasContext"
|
||||
}
|
||||
]
|
|
@ -1,138 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2021 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module.exports = [
|
||||
{
|
||||
rule: 'Let the initializer do what it needs to',
|
||||
source: 'ui/index.ts',
|
||||
target: '**',
|
||||
specifier: 'any',
|
||||
},
|
||||
|
||||
{
|
||||
rule: 'Let boot code do what it needs to',
|
||||
source: 'ui/boot/**',
|
||||
target: '**',
|
||||
specifier: 'any',
|
||||
},
|
||||
|
||||
{
|
||||
rule: 'Allow extensions to dynamically import from gems/plugins',
|
||||
source: 'ui/shared/bundles/**',
|
||||
target: '**',
|
||||
specifier: 'any',
|
||||
},
|
||||
|
||||
{
|
||||
rule: 'Allow engine entrypoints to source everything there',
|
||||
source: 'ui/engine/{index.ts,capabilities/index.ts}',
|
||||
target: 'ui/engine/**',
|
||||
specifier: 'relative',
|
||||
},
|
||||
|
||||
{
|
||||
rule: 'Allow capabilities to depend on each other',
|
||||
source: 'ui/engine/capabilities/*/**',
|
||||
target: 'ui/engine/capabilities/*/**',
|
||||
specifier: 'relative',
|
||||
},
|
||||
|
||||
{
|
||||
source: 'ui/features/*/index.js',
|
||||
target: 'ui/engine/**',
|
||||
specifier: 'bare',
|
||||
},
|
||||
|
||||
{
|
||||
rule: 'Let everyone consume legacy public/javascripts/',
|
||||
source: '**',
|
||||
target: 'public/javascripts/**',
|
||||
specifier: 'bare',
|
||||
},
|
||||
|
||||
{
|
||||
rule: 'Let calendar monkey patch moment/timezone',
|
||||
source: 'ui/features/calendar/ext/**',
|
||||
target: 'ui/ext/custom_{moment,timezone}_locales/**',
|
||||
specifier: 'relative',
|
||||
},
|
||||
|
||||
{
|
||||
rule: `
|
||||
Modules of the same package (packages/*) should import each other
|
||||
using relative specifiers.
|
||||
`,
|
||||
source: 'packages/*/**',
|
||||
target: 'packages/*/**',
|
||||
boundary: 0,
|
||||
specifier: 'relative',
|
||||
},
|
||||
|
||||
{
|
||||
rule: `
|
||||
Package modules (packages/*/**) may only be accessed through
|
||||
their package.
|
||||
`,
|
||||
source: '**',
|
||||
target: 'packages/**',
|
||||
specifier: 'package',
|
||||
},
|
||||
|
||||
{
|
||||
rule: `
|
||||
Modules of the same Canvas package (ui/shared/*) should import each
|
||||
other using relative specifiers.
|
||||
`,
|
||||
source: 'ui/shared/*/**',
|
||||
target: 'ui/shared/*/**',
|
||||
boundary: 0,
|
||||
specifier: 'relative',
|
||||
},
|
||||
|
||||
{
|
||||
rule: `
|
||||
Canvas package modules (ui/shared/*/**) may only be accessed
|
||||
through their package.
|
||||
`,
|
||||
source: '{gems/plugins,public/javascripts,ui}/**',
|
||||
target: 'ui/shared/**',
|
||||
specifier: 'package',
|
||||
},
|
||||
|
||||
{
|
||||
rule: `
|
||||
Modules of the same feature (ui/features/*) should import each
|
||||
other using relative specifiers.
|
||||
`,
|
||||
source: 'ui/features/*/**',
|
||||
target: 'ui/features/*/**',
|
||||
boundary: 0,
|
||||
specifier: 'relative',
|
||||
},
|
||||
|
||||
{
|
||||
rule: `
|
||||
Modules of the same plugin should import each other using relative
|
||||
specifiers.
|
||||
`,
|
||||
source: 'gems/plugins/*/**',
|
||||
target: 'gems/plugins/*/**',
|
||||
boundary: 0,
|
||||
specifier: 'relative',
|
||||
},
|
||||
]
|
|
@ -41,7 +41,6 @@ const {
|
|||
|
||||
const {
|
||||
buildCacheOptions,
|
||||
controlAccessBetweenModules,
|
||||
customSourceFileExtensions,
|
||||
environmentVars,
|
||||
excludeMomentLocales,
|
||||
|
@ -175,7 +174,6 @@ module.exports = {
|
|||
isProduction && timezoneData, // adds 3-4 seconds to build time,
|
||||
customSourceFileExtensions,
|
||||
webpackHooks,
|
||||
controlAccessBetweenModules,
|
||||
setMoreEnvVars,
|
||||
provideJQuery,
|
||||
moduleFederation,
|
||||
|
|
|
@ -25,7 +25,6 @@ const {
|
|||
} = require('@rspack/core')
|
||||
const {resolve} = require('path')
|
||||
const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin')
|
||||
const EsmacPlugin = require('webpack-esmac-plugin')
|
||||
const {WebpackManifestPlugin} = require('rspack-manifest-plugin')
|
||||
const {RetryChunkLoadPlugin} = require('webpack-retry-chunk-load-plugin')
|
||||
const {
|
||||
|
@ -69,26 +68,6 @@ exports.timezoneData = new MomentTimezoneDataPlugin({
|
|||
// cf. ui-build/webpack/webpackHooks/macNotifications.sh
|
||||
exports.webpackHooks = new WebpackHooks()
|
||||
|
||||
// controls access between modules; enforces where you can import from
|
||||
// i.e. can't import features into packages, or ui/shared into packages
|
||||
exports.controlAccessBetweenModules = new EsmacPlugin({
|
||||
test: /\.[tj]sx?$/,
|
||||
include: [
|
||||
resolve(canvasDir, 'ui/features'),
|
||||
resolve(canvasDir, 'ui/shared'),
|
||||
resolve(canvasDir, 'packages'),
|
||||
resolve(canvasDir, 'public/javascripts'),
|
||||
resolve(canvasDir, 'gems/plugins'),
|
||||
],
|
||||
exclude: [/\/node_modules\//],
|
||||
formatter: require('./esmac/ErrorFormatter'),
|
||||
rules: require('./esmac/moduleAccessRules'),
|
||||
permit:
|
||||
process.env.WEBPACK_ENCAPSULATION_DEBUG === '1'
|
||||
? []
|
||||
: require('./esmac/errorsPendingRemoval.json'),
|
||||
})
|
||||
|
||||
exports.setMoreEnvVars = new DefinePlugin({
|
||||
CANVAS_WEBPACK_PUBLIC_PATH: JSON.stringify(webpackPublicPath),
|
||||
NODE_ENV: null,
|
||||
|
|
|
@ -19,10 +19,8 @@
|
|||
import React from 'react'
|
||||
import {render} from '@testing-library/react'
|
||||
import {shallow} from 'enzyme'
|
||||
import ChangeLogRow, {
|
||||
ChangeRow,
|
||||
} from '../ChangeLogRow'
|
||||
import getSampleData from '../../../../blueprint_course_master/react/components/__tests__/getSampleData'
|
||||
import ChangeLogRow, {ChangeRow} from '../ChangeLogRow'
|
||||
import getSampleData from '@canvas/blueprint-courses/getSampleData'
|
||||
|
||||
describe('ChangeLogRow component', () => {
|
||||
const defaultProps = () => ({
|
||||
|
@ -62,7 +60,9 @@ describe('ChangeLogRow component', () => {
|
|||
|
||||
test('renders lock icon when its a ChangeRow component', () => {
|
||||
const tree = render(<ChangeRow change={getSampleData().history[0].changes[0]} />)
|
||||
const node = tree.container.querySelector('.bcs__history-item__content .bcs__history-item__lock-icon')
|
||||
const node = tree.container.querySelector(
|
||||
'.bcs__history-item__content .bcs__history-item__lock-icon'
|
||||
)
|
||||
expect(node).toBeTruthy()
|
||||
})
|
||||
})
|
||||
|
|
|
@ -20,7 +20,7 @@ import React from 'react'
|
|||
import {render} from '@testing-library/react'
|
||||
import {shallow} from 'enzyme'
|
||||
import ChildContent from '../ChildContent'
|
||||
import getSampleData from '../../../../blueprint_course_master/react/components/__tests__/getSampleData'
|
||||
import getSampleData from '@canvas/blueprint-courses/getSampleData'
|
||||
import sinon from 'sinon'
|
||||
|
||||
describe('ChildContent app', () => {
|
||||
|
|
|
@ -25,7 +25,7 @@ import EntryView from './EntryView'
|
|||
import PublishButtonView from '@canvas/publish-button-view'
|
||||
import replyTemplate from '../../jst/_reply_form.handlebars'
|
||||
import Reply from '../Reply'
|
||||
import assignmentRubricDialog from '../../jquery/assignmentRubricDialog'
|
||||
import assignmentRubricDialog from '@canvas/discussions/jquery/assignmentRubricDialog'
|
||||
import * as RceCommandShim from '@canvas/rce-command-shim'
|
||||
import htmlEscape from '@instructure/html-escape'
|
||||
import AssignmentExternalTools from '@canvas/assignments/react/AssignmentExternalTools'
|
||||
|
|
|
@ -50,7 +50,7 @@ import {Text} from '@instructure/ui-text'
|
|||
import {Responsive} from '@instructure/ui-responsive/lib/Responsive'
|
||||
import '@canvas/context-cards/react/StudentContextCardTrigger'
|
||||
|
||||
import assignmentRubricDialog from '../../../../discussion_topic/jquery/assignmentRubricDialog'
|
||||
import assignmentRubricDialog from '@canvas/discussions/jquery/assignmentRubricDialog'
|
||||
import rubricEditing from '../../../../../shared/rubrics/jquery/edit_rubric'
|
||||
|
||||
const I18n = useI18nScope('discussion_posts')
|
||||
|
|
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* Copyright (C) 2023 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2017 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export default function getSampleData() {
|
||||
return {
|
||||
terms: [
|
||||
{id: '1', name: 'Term One'},
|
||||
{id: '2', name: 'Term Two'},
|
||||
],
|
||||
subAccounts: [
|
||||
{id: '1', name: 'Account One'},
|
||||
{id: '2', name: 'Account Two'},
|
||||
],
|
||||
childCourse: {
|
||||
id: '1',
|
||||
enrollment_term_id: '1',
|
||||
name: 'Course 1',
|
||||
},
|
||||
masterCourse: {
|
||||
id: '2',
|
||||
enrollment_term_id: '1',
|
||||
name: 'Course 2',
|
||||
},
|
||||
courses: [
|
||||
{
|
||||
id: '1',
|
||||
name: 'Course One',
|
||||
course_code: 'course_1',
|
||||
term: {
|
||||
id: '1',
|
||||
name: 'Term One',
|
||||
},
|
||||
teachers: [
|
||||
{
|
||||
display_name: 'Teacher One',
|
||||
},
|
||||
],
|
||||
sis_course_id: '1001',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
name: 'Course Two',
|
||||
course_code: 'course_2',
|
||||
term: {
|
||||
id: '2',
|
||||
name: 'Term Two',
|
||||
},
|
||||
teachers: [
|
||||
{
|
||||
display_name: 'Teacher Two',
|
||||
},
|
||||
],
|
||||
sis_course_id: '1001',
|
||||
},
|
||||
],
|
||||
history: [
|
||||
{
|
||||
id: '2',
|
||||
workflow_state: 'completed',
|
||||
created_at: '2013-08-28T23:59:00-06:00',
|
||||
user: {
|
||||
display_name: 'Bob Jones',
|
||||
},
|
||||
changes: [
|
||||
{
|
||||
asset_id: '2',
|
||||
asset_type: 'quiz',
|
||||
asset_name: 'Chapter 5 Quiz',
|
||||
change_type: 'updated',
|
||||
html_url: 'http://localhost:3000/courses/3/quizzes/2',
|
||||
exceptions: [
|
||||
{
|
||||
course_id: '1',
|
||||
conflicting_changes: ['points'],
|
||||
name: 'Course 1',
|
||||
term: {name: 'Default Term'},
|
||||
},
|
||||
{
|
||||
course_id: '5',
|
||||
conflicting_changes: ['content'],
|
||||
name: 'Course 5',
|
||||
term: {name: 'Default Term'},
|
||||
},
|
||||
{
|
||||
course_id: '56',
|
||||
conflicting_changes: ['deleted'],
|
||||
name: 'Course 56',
|
||||
term: {name: 'Default Term'},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
unsyncedChanges: [
|
||||
{
|
||||
asset_id: '22',
|
||||
asset_type: 'assignment',
|
||||
asset_name: 'Another Discussion',
|
||||
change_type: 'deleted',
|
||||
html_url: '/courses/4/assignments/22',
|
||||
locked: false,
|
||||
},
|
||||
{
|
||||
asset_id: '22',
|
||||
asset_type: 'attachment',
|
||||
asset_name: 'Bulldog.png',
|
||||
change_type: 'updated',
|
||||
html_url: '/courses/4/files/96',
|
||||
locked: true,
|
||||
},
|
||||
{
|
||||
asset_id: 'page-1',
|
||||
asset_type: 'wiki_page',
|
||||
asset_name: 'Page 1',
|
||||
change_type: 'created',
|
||||
html_url: '/4/pages/page-1',
|
||||
locked: false,
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
312
yarn.lock
312
yarn.lock
|
@ -7567,6 +7567,16 @@ acorn-import-assertions@^1.7.6:
|
|||
resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
|
||||
integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
|
||||
|
||||
acorn-jsx-walk@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx-walk/-/acorn-jsx-walk-2.0.0.tgz#a5ed648264e68282d7c2aead80216bfdf232573a"
|
||||
integrity sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==
|
||||
|
||||
acorn-jsx@5.3.2, acorn-jsx@^5.3.1:
|
||||
version "5.3.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
|
||||
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
||||
|
||||
acorn-jsx@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
|
||||
|
@ -7574,26 +7584,33 @@ acorn-jsx@^3.0.0:
|
|||
dependencies:
|
||||
acorn "^3.0.4"
|
||||
|
||||
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-loose@8.4.0:
|
||||
version "8.4.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.4.0.tgz#26d3e219756d1e180d006f5bcc8d261a28530f55"
|
||||
integrity sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ==
|
||||
dependencies:
|
||||
acorn "^8.11.0"
|
||||
|
||||
acorn-walk@8.3.2, acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.3.2:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
|
||||
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
|
||||
|
||||
acorn-walk@^7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
|
||||
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
||||
|
||||
acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.3.2:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
|
||||
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
|
||||
|
||||
acorn@5.X, acorn@^5.0.3, acorn@^5.5.0:
|
||||
version "5.7.4"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e"
|
||||
integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
|
||||
|
||||
acorn@8.11.3, acorn@^8.0.4, acorn@^8.1.0, acorn@^8.10.0, acorn@^8.11.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2:
|
||||
version "8.11.3"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
|
||||
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
|
||||
|
||||
acorn@^3.0.4:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
||||
|
@ -7609,11 +7626,6 @@ acorn@^7.4.0, acorn@^7.4.1:
|
|||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||
|
||||
acorn@^8.0.4, acorn@^8.1.0, acorn@^8.10.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2:
|
||||
version "8.11.3"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
|
||||
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
|
||||
|
||||
address@^1.0.1:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
|
||||
|
@ -7701,6 +7713,16 @@ ajv-keywords@^5.1.0:
|
|||
dependencies:
|
||||
fast-deep-equal "^3.1.3"
|
||||
|
||||
ajv@8.12.0, ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0:
|
||||
version "8.12.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
|
||||
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
json-schema-traverse "^1.0.0"
|
||||
require-from-string "^2.0.2"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ajv@^4.7.0:
|
||||
version "4.11.8"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
|
||||
|
@ -7719,16 +7741,6 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
|
|||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0:
|
||||
version "8.12.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
|
||||
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
json-schema-traverse "^1.0.0"
|
||||
require-from-string "^2.0.2"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
amdefine@>=0.0.4:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||
|
@ -7812,6 +7824,11 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1:
|
|||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||
|
||||
ansi-regex@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
|
||||
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
||||
|
||||
ansi-styles@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
||||
|
@ -7836,6 +7853,11 @@ ansi-styles@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
|
||||
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
||||
|
||||
ansi-styles@^6.2.1:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
|
||||
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
|
||||
|
||||
ansi-to-html@^0.6.11:
|
||||
version "0.6.15"
|
||||
resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.15.tgz#ac6ad4798a00f6aa045535d7f6a9cb9294eebea7"
|
||||
|
@ -9633,6 +9655,11 @@ chain-function@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz#c63045e5b4b663fb86f1c6e186adaf1de402a1cc"
|
||||
integrity sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==
|
||||
|
||||
chalk@5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
|
||||
integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
|
||||
|
||||
chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||
|
@ -10222,6 +10249,11 @@ comma-separated-tokens@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
|
||||
integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
|
||||
|
||||
commander@12.0.0:
|
||||
version "12.0.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-12.0.0.tgz#b929db6df8546080adfd004ab215ed48cf6f2592"
|
||||
integrity sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==
|
||||
|
||||
commander@2.11.x:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
||||
|
@ -11293,6 +11325,39 @@ depd@~1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
||||
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
|
||||
|
||||
dependency-cruiser@^16.3.1:
|
||||
version "16.3.1"
|
||||
resolved "https://registry.yarnpkg.com/dependency-cruiser/-/dependency-cruiser-16.3.1.tgz#415eab418150dced131c82bd8e3084b0310df316"
|
||||
integrity sha512-ZwhVjKrCr3Fk7Vb5FfDvkcAcqxttmbb26C9fjuJJVhqDGdgtJQnQ1k1sRY9UbgIBDmMlBTn8/Ccs2b/+TlqOSQ==
|
||||
dependencies:
|
||||
acorn "8.11.3"
|
||||
acorn-jsx "5.3.2"
|
||||
acorn-jsx-walk "2.0.0"
|
||||
acorn-loose "8.4.0"
|
||||
acorn-walk "8.3.2"
|
||||
ajv "8.12.0"
|
||||
chalk "5.3.0"
|
||||
commander "12.0.0"
|
||||
enhanced-resolve "5.16.0"
|
||||
figures "6.1.0"
|
||||
ignore "5.3.1"
|
||||
indent-string "5.0.0"
|
||||
interpret "^3.1.1"
|
||||
is-installed-globally "1.0.0"
|
||||
json5 "2.2.3"
|
||||
lodash "4.17.21"
|
||||
memoize "10.0.0"
|
||||
picomatch "4.0.2"
|
||||
prompts "2.4.2"
|
||||
rechoir "^0.8.0"
|
||||
safe-regex "2.1.1"
|
||||
semver "^7.6.0"
|
||||
semver-try-require "6.2.3"
|
||||
teamcity-service-messages "0.1.14"
|
||||
tsconfig-paths-webpack-plugin "4.1.0"
|
||||
watskeburt "4.0.2"
|
||||
wrap-ansi "9.0.0"
|
||||
|
||||
des.js@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
|
||||
|
@ -11712,6 +11777,11 @@ emoji-mart@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e"
|
||||
integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=
|
||||
|
||||
emoji-regex@^10.3.0:
|
||||
version "10.3.0"
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23"
|
||||
integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==
|
||||
|
||||
emoji-regex@^7.0.1:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
|
||||
|
@ -11789,7 +11859,7 @@ engine.io@~6.2.0:
|
|||
engine.io-parser "~5.0.3"
|
||||
ws "~8.2.3"
|
||||
|
||||
enhanced-resolve@5.12.0, enhanced-resolve@^5.10.0:
|
||||
enhanced-resolve@5.12.0:
|
||||
version "5.12.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
|
||||
integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
|
||||
|
@ -11797,6 +11867,14 @@ enhanced-resolve@5.12.0, enhanced-resolve@^5.10.0:
|
|||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
enhanced-resolve@5.16.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.7.0:
|
||||
version "5.16.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787"
|
||||
integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
enhanced-resolve@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
|
||||
|
@ -12512,15 +12590,6 @@ eslint@^7:
|
|||
text-table "^0.2.0"
|
||||
v8-compile-cache "^2.0.3"
|
||||
|
||||
esmac@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/esmac/-/esmac-3.0.0.tgz#bf0703c19a51d8f3aca710314026b0f40ddf6362"
|
||||
integrity sha512-7wLt2YVfTVUdO24Oh46D1b27pAOrpm488PMjiGzwwjslGFI5UoPzla8IqjS4H3dl54m25XTejv0xhXjbIsXZvw==
|
||||
dependencies:
|
||||
find-up "^5.0.0"
|
||||
invariant "^2.2.4"
|
||||
micromatch "^4.0.4"
|
||||
|
||||
esotope-hammerhead@0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/esotope-hammerhead/-/esotope-hammerhead-0.6.1.tgz#3feca697baede6cc89ce387f1e0bfa246d6e256d"
|
||||
|
@ -13152,6 +13221,13 @@ figgy-pudding@^3.5.1:
|
|||
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
|
||||
integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
|
||||
|
||||
figures@6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/figures/-/figures-6.1.0.tgz#935479f51865fa7479f6fa94fc6fc7ac14e62c4a"
|
||||
integrity sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==
|
||||
dependencies:
|
||||
is-unicode-supported "^2.0.0"
|
||||
|
||||
figures@^1.3.5, figures@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
|
||||
|
@ -13928,6 +14004,11 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
|||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||
|
||||
get-east-asian-width@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e"
|
||||
integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==
|
||||
|
||||
get-func-name@^2.0.1, get-func-name@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
|
||||
|
@ -14123,6 +14204,13 @@ glob@^7, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global-directory@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e"
|
||||
integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==
|
||||
dependencies:
|
||||
ini "4.1.1"
|
||||
|
||||
global-modules@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
|
||||
|
@ -15171,6 +15259,11 @@ ignore-styles@^5.0.1:
|
|||
resolved "https://registry.yarnpkg.com/ignore-styles/-/ignore-styles-5.0.1.tgz#b49ef2274bdafcd8a4880a966bfe38d1a0bf4671"
|
||||
integrity sha1-tJ7yJ0va/NikiAqWa/440aC/RnE=
|
||||
|
||||
ignore@5.3.1, ignore@^5.0.5, ignore@^5.0.6, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
|
||||
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
|
||||
|
||||
ignore@^3.2.0:
|
||||
version "3.3.10"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
||||
|
@ -15181,11 +15274,6 @@ ignore@^4.0.3, ignore@^4.0.6:
|
|||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
|
||||
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
|
||||
|
||||
ignore@^5.0.5, ignore@^5.0.6, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
|
||||
integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
|
||||
|
||||
immediate@~3.0.5:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||
|
@ -15258,6 +15346,11 @@ imurmurhash@^0.1.4:
|
|||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
|
||||
|
||||
indent-string@5.0.0, indent-string@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5"
|
||||
integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==
|
||||
|
||||
indent-string@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-1.2.2.tgz#db99bcc583eb6abbb1e48dcbb1999a986041cb6b"
|
||||
|
@ -15284,11 +15377,6 @@ indent-string@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
|
||||
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
|
||||
|
||||
indent-string@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5"
|
||||
integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==
|
||||
|
||||
indexes-of@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
|
||||
|
@ -15322,6 +15410,11 @@ inherits@2.0.3:
|
|||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1"
|
||||
integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==
|
||||
|
||||
ini@^1.3.4, ini@^1.3.5:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
|
@ -15741,6 +15834,14 @@ is-hexadecimal@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
|
||||
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
|
||||
|
||||
is-installed-globally@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-1.0.0.tgz#08952c43758c33d815692392f7f8437b9e436d5a"
|
||||
integrity sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==
|
||||
dependencies:
|
||||
global-directory "^4.0.1"
|
||||
is-path-inside "^4.0.0"
|
||||
|
||||
is-interactive@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
|
||||
|
@ -15867,6 +15968,11 @@ is-path-inside@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
||||
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
||||
|
||||
is-path-inside@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db"
|
||||
integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==
|
||||
|
||||
is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
|
||||
|
@ -16014,6 +16120,11 @@ is-unicode-supported@^0.1.0:
|
|||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
|
||||
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
|
||||
|
||||
is-unicode-supported@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz#fdf32df9ae98ff6ab2cedc155a5a6e895701c451"
|
||||
integrity sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==
|
||||
|
||||
is-upper-case@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
|
||||
|
@ -17432,6 +17543,11 @@ json-stringify-safe@^5.0.1:
|
|||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
|
||||
|
||||
json5@2.2.3, json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.1, json5@^2.2.2:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
|
||||
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
|
||||
|
||||
json5@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
|
||||
|
@ -17444,11 +17560,6 @@ json5@^1.0.1:
|
|||
dependencies:
|
||||
minimist "^1.2.0"
|
||||
|
||||
json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
|
||||
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
|
||||
|
||||
jsonc-parser@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
|
||||
|
@ -18179,7 +18290,7 @@ lodash.uniq@4.5.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
"lodash@4.6.1 || ^4.16.1", lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0:
|
||||
lodash@4.17.21, "lodash@4.6.1 || ^4.16.1", lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
@ -18654,6 +18765,13 @@ memoize-one@^5.1.1:
|
|||
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
|
||||
integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
|
||||
|
||||
memoize@10.0.0:
|
||||
version "10.0.0"
|
||||
resolved "https://registry.yarnpkg.com/memoize/-/memoize-10.0.0.tgz#43fa66b2022363c7c50cf5dfab732a808a3d7147"
|
||||
integrity sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==
|
||||
dependencies:
|
||||
mimic-function "^5.0.0"
|
||||
|
||||
memoizee@0.4.X, memoizee@^0.4.14:
|
||||
version "0.4.15"
|
||||
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72"
|
||||
|
@ -18881,6 +18999,11 @@ mimic-fn@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
|
||||
integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
|
||||
|
||||
mimic-function@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076"
|
||||
integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==
|
||||
|
||||
mimic-response@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
|
||||
|
@ -20618,6 +20741,11 @@ picocolors@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||
|
||||
picomatch@4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
|
||||
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
||||
|
||||
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
|
@ -21171,7 +21299,7 @@ promisify-event@^1.0.0:
|
|||
dependencies:
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
prompts@^2.0.1, prompts@^2.4.0:
|
||||
prompts@2.4.2, prompts@^2.0.1, prompts@^2.4.0:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
|
||||
integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
|
||||
|
@ -22277,6 +22405,11 @@ regex-not@^1.0.0, regex-not@^1.0.2:
|
|||
extend-shallow "^3.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
regexp-tree@~0.1.1:
|
||||
version "0.1.27"
|
||||
resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd"
|
||||
integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==
|
||||
|
||||
regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e"
|
||||
|
@ -22899,6 +23032,13 @@ safe-regex-test@^1.0.0:
|
|||
get-intrinsic "^1.1.3"
|
||||
is-regex "^1.1.4"
|
||||
|
||||
safe-regex@2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2"
|
||||
integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==
|
||||
dependencies:
|
||||
regexp-tree "~0.1.1"
|
||||
|
||||
safe-regex@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||
|
@ -23101,6 +23241,13 @@ semver-truncate@^3.0.0:
|
|||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
semver-try-require@6.2.3:
|
||||
version "6.2.3"
|
||||
resolved "https://registry.yarnpkg.com/semver-try-require/-/semver-try-require-6.2.3.tgz#aefe418635fa4604a063749cab19b346494409e4"
|
||||
integrity sha512-6q1N/Vr/4/G0EcQ1k4svN5kwfh3MJs4Gfl+zBAVcKn+AeIjKLwTXQ143Y6YHu6xEeN5gSCbCD1/5+NwCipLY5A==
|
||||
dependencies:
|
||||
semver "^7.5.3"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
|
@ -23121,7 +23268,7 @@ semver@7.0.0:
|
|||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
|
||||
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
||||
|
||||
semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4:
|
||||
semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0:
|
||||
version "7.6.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
|
||||
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
|
||||
|
@ -24028,6 +24175,15 @@ string-width@^3.0.0, string-width@^3.1.0:
|
|||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^5.1.0"
|
||||
|
||||
string-width@^7.0.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a"
|
||||
integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==
|
||||
dependencies:
|
||||
emoji-regex "^10.3.0"
|
||||
get-east-asian-width "^1.0.0"
|
||||
strip-ansi "^7.1.0"
|
||||
|
||||
"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
|
||||
|
@ -24153,6 +24309,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
|||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
||||
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
||||
dependencies:
|
||||
ansi-regex "^6.0.1"
|
||||
|
||||
strip-bom-buf@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
|
||||
|
@ -24572,6 +24735,11 @@ tar@^6.0.2:
|
|||
mkdirp "^1.0.3"
|
||||
yallist "^4.0.0"
|
||||
|
||||
teamcity-service-messages@0.1.14:
|
||||
version "0.1.14"
|
||||
resolved "https://registry.yarnpkg.com/teamcity-service-messages/-/teamcity-service-messages-0.1.14.tgz#193d420a5e4aef8e5e50b8c39e7865e08fbb5d8a"
|
||||
integrity sha512-29aQwaHqm8RMX74u2o/h1KbMLP89FjNiMxD9wbF2BbWOnbM+q+d1sCEC+MqCc4QW3NJykn77OMpTFw/xTHIc0w==
|
||||
|
||||
telejson@^6.0.8:
|
||||
version "6.0.8"
|
||||
resolved "https://registry.yarnpkg.com/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7"
|
||||
|
@ -25364,6 +25532,15 @@ ts-pnp@^1.1.6:
|
|||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||
|
||||
tsconfig-paths-webpack-plugin@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763"
|
||||
integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==
|
||||
dependencies:
|
||||
chalk "^4.1.0"
|
||||
enhanced-resolve "^5.7.0"
|
||||
tsconfig-paths "^4.1.2"
|
||||
|
||||
tsconfig-paths@^3.12.0:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
|
||||
|
@ -25374,6 +25551,15 @@ tsconfig-paths@^3.12.0:
|
|||
minimist "^1.2.6"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
tsconfig-paths@^4.1.2:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c"
|
||||
integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==
|
||||
dependencies:
|
||||
json5 "^2.2.2"
|
||||
minimist "^1.2.6"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
|
@ -26356,6 +26542,11 @@ watchpack@^2.2.0, watchpack@^2.4.0:
|
|||
glob-to-regexp "^0.4.1"
|
||||
graceful-fs "^4.1.2"
|
||||
|
||||
watskeburt@4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/watskeburt/-/watskeburt-4.0.2.tgz#2ca79930a0e42f7ae3195e84685826908d73bcdd"
|
||||
integrity sha512-w7X8AGrBZExP5/3e3c1X/CUY8Yod/aiAazQCvrg7n8Un6piD+NFFK926G15zRq4+wu0XAEWpSsZ4C+fEfVOCYw==
|
||||
|
||||
wbuf@^1.1.0, wbuf@^1.7.3:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
|
||||
|
@ -26519,14 +26710,6 @@ webpack-dev-server@4.13.1:
|
|||
webpack-dev-middleware "^5.3.1"
|
||||
ws "^8.13.0"
|
||||
|
||||
webpack-esmac-plugin@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack-esmac-plugin/-/webpack-esmac-plugin-4.0.0.tgz#05d650adcf3bdccd3fb4679888d047be7900a264"
|
||||
integrity sha512-DPh5CbZUMuaJfjzyg8sNrirD81TjMUfHTG0cALij3njnvohhMDsBQMzOOaOUoyd+qwfgC6jgSzA0hXDyzsbFLQ==
|
||||
dependencies:
|
||||
esmac "^3.0.0"
|
||||
invariant "^2.2.4"
|
||||
|
||||
webpack-filter-warnings-plugin@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb"
|
||||
|
@ -26914,6 +27097,15 @@ worker-rpc@^0.1.0:
|
|||
dependencies:
|
||||
microevent.ts "~0.1.1"
|
||||
|
||||
wrap-ansi@9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e"
|
||||
integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==
|
||||
dependencies:
|
||||
ansi-styles "^6.2.1"
|
||||
string-width "^7.0.0"
|
||||
strip-ansi "^7.1.0"
|
||||
|
||||
wrap-ansi@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
||||
|
|
Loading…
Reference in New Issue