Resolve final circular package dependencies

Refs CFA-27

flag=none

Change-Id: I9787633a7deef3206f1462e8f65936dc51f1af3d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/335951
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Michael Hulse <michael.hulse@instructure.com>
QA-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
Product-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
This commit is contained in:
Aaron Shafovaloff 2023-12-24 13:29:29 -05:00
parent ede5253e70
commit 8b50a205ee
87 changed files with 119 additions and 597 deletions

View File

@ -372,8 +372,7 @@
"@storybook/addon-storyshots": "^6.5.9",
"@storybook/builder-webpack5": "^6.5.9",
"@storybook/manager-webpack5": "^6.5.9",
"@storybook/react": "^6.5.9",
"inspect-process": "^0.5"
"@storybook/react": "^6.5.9"
},
"browserslist": [
"extends @instructure/browserslist-config-canvas-lms"

View File

@ -17,7 +17,6 @@
*/
import $ from 'jquery'
import {send} from '@canvas/rce/RceCommandShim'
const $fixtures = $('#fixtures')

View File

@ -16,7 +16,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import * as RceCommandShim from '@canvas/rce/RceCommandShim'
import * as RceCommandShim from '@canvas/rce-command-shim'
import fixtures from 'helpers/fixtures'
let remoteEditor = null

View File

@ -16,8 +16,9 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import $ from 'jquery'
import RichContentEditor from '@canvas/rce/RichContentEditor'
import * as RceCommandShim from '@canvas/rce/RceCommandShim'
import * as RceCommandShim from '@canvas/rce-command-shim'
import RCELoader from '@canvas/rce/serviceRCELoader'
import Sidebar from '@canvas/rce/Sidebar'
import fakeENV from 'helpers/fakeENV'
@ -29,19 +30,19 @@ QUnit.module('RichContentEditor - helper function:')
test('ensureID gives the element an id when it is missing', () => {
const $el = $('<div/>')
RichContentEditor.ensureID($el)
ok($el.attr('id') != null)
notEqual($el.attr('id'), null)
})
test('ensureID gives the element an id when it is blank', () => {
const $el = $('<div id/>')
RichContentEditor.ensureID($el)
ok($el.attr('id') !== '')
notEqual($el.attr('id'), '')
})
test("ensureID doesn't overwrite an existing id", () => {
const $el = $('<div id="test"/>')
RichContentEditor.ensureID($el)
ok($el.attr('id') === 'test')
equal($el.attr('id'), 'test')
})
test('freshNode returns the given element if the id is missing', () => {

View File

@ -19,7 +19,7 @@
import React from 'react'
import * as enzyme from 'enzyme'
import MoveSelect from '@canvas/move-item-tray/react/MoveSelect'
import {positions} from '@canvas/move-item-tray/positions'
import {positions} from '@canvas/positions'
QUnit.module('MoveSelect component')

View File

@ -16,7 +16,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import {positions, removeAllFromOrder} from '@canvas/move-item-tray/positions'
import {positions, removeAllFromOrder} from '@canvas/positions'
QUnit.module('MoveItem positions')

View File

@ -39,7 +39,7 @@ import DirectShareCourseTray from '@canvas/direct-sharing/react/components/Direc
import {setupSubmitHandler} from '@canvas/assignments/jquery/reuploadSubmissionsHelper'
import ready from '@instructure/ready'
import {monitorLtiMessages} from '@canvas/lti/jquery/messages'
import ItemAssignToTray from '@canvas/differentiated-modules/react/Item/ItemAssignToTray'
import ItemAssignToTray from '@canvas/context-modules/differentiated-modules/react/Item/ItemAssignToTray'
if (!('INST' in window)) window.INST = {}

View File

@ -24,7 +24,7 @@ import htmlEscape from 'html-escape'
import replyAttachmentTemplate from '../jst/_reply_attachment.handlebars'
import preventDefault from '@canvas/util/preventDefault'
import RichContentEditor from '@canvas/rce/RichContentEditor'
import {send} from '@canvas/rce/RceCommandShim'
import {send} from '@canvas/rce-command-shim'
import '@canvas/jquery/jquery.instructure_forms'
const stripTags = str => {

View File

@ -26,7 +26,7 @@ import PublishButtonView from '@canvas/publish-button-view'
import replyTemplate from '../../jst/_reply_form.handlebars'
import Reply from '../Reply'
import assignmentRubricDialog from '../../jquery/assignmentRubricDialog'
import * as RceCommandShim from '@canvas/rce/RceCommandShim'
import * as RceCommandShim from '@canvas/rce-command-shim'
import htmlEscape from 'html-escape'
import AssignmentExternalTools from '@canvas/assignments/react/AssignmentExternalTools'
import DirectShareUserModal from '@canvas/direct-sharing/react/components/DirectShareUserModal'

View File

@ -18,7 +18,7 @@
import $ from 'jquery'
import htmlEscape from 'html-escape'
import EditorToggle from '@canvas/editor-toggle'
import {send} from '@canvas/rce/RceCommandShim'
import {send} from '@canvas/rce-command-shim'
import _inherits from '@babel/runtime/helpers/esm/inheritsLoose'
_inherits(MultipleChoiceToggle, EditorToggle)

View File

@ -18,7 +18,7 @@
import React from 'react'
import {mount} from 'enzyme'
import Rating from '@canvas/context-cards/react/Rating'
import Rating from '../Rating'
import {Rating as InstUIRating} from '@instructure/ui-rating'
describe('StudentContextTray/Rating', () => {

View File

@ -33,7 +33,7 @@ import {convertModuleSettingsForApi} from '../utils/miscHelpers'
import {updateModuleUI} from '../utils/moduleHelpers'
import {showFlashAlert} from '@canvas/alerts/react/FlashAlert'
import type {Module, ModuleItem, Requirement} from './types'
import RelockModulesDialog from '@canvas/context-modules/backbone/views/RelockModulesDialog'
import RelockModulesDialog from '@canvas/relock-modules-dialog'
import {useScope as useI18nScope} from '@canvas/i18n'
import LoadingOverlay from './LoadingOverlay'

View File

@ -23,11 +23,11 @@ import doFetchApi from '@canvas/do-fetch-api-effect'
import * as miscUtils from '../../utils/miscHelpers'
import * as moduleUtils from '../../utils/moduleHelpers'
import * as alerts from '@canvas/alerts/react/FlashAlert'
import RelockModulesDialog from '@canvas/context-modules/backbone/views/RelockModulesDialog'
import RelockModulesDialog from '@canvas/relock-modules-dialog'
import userEvent from '@testing-library/user-event'
jest.mock('@canvas/do-fetch-api-effect')
jest.mock('@canvas/context-modules/backbone/views/RelockModulesDialog')
jest.mock('@canvas/relock-modules-dialog')
describe('SettingsPanel', () => {
const props: SettingsPanelProps = {

View File

@ -20,7 +20,7 @@ import {useEffect, useState} from 'react'
import doFetchApi from '@canvas/do-fetch-api-effect'
import {showFlashError} from '@canvas/alerts/react/FlashAlert'
import {type AssigneeOption} from '@canvas/differentiated-modules/react/AssigneeSelector'
import {type AssigneeOption} from '../../react/AssigneeSelector'
import {uniqBy} from 'lodash'
import {useScope as useI18nScope} from '@canvas/i18n'

View File

@ -18,7 +18,7 @@
import type {SettingsPanelState} from '../react/settingsReducer'
import type {Module, Requirement} from '../react/types'
import {updateModulePublishedState} from '@canvas/context-modules/utils/publishAllModulesHelper'
import {updateModulePublishedState} from '../../utils/publishAllModulesHelper'
import {datetimeString} from '@canvas/datetime/date-functions'
import {convertFriendlyDatetimeToUTC} from './miscHelpers'
import {useScope as useI18nScope} from '@canvas/i18n'

View File

@ -28,7 +28,7 @@ import {useScope as useI18nScope} from '@canvas/i18n'
import Helper from './context_modules_helper'
import CyoeHelper from '@canvas/conditional-release-cyoe-helper'
import ContextModulesView from '../backbone/views/context_modules' /* handles the publish/unpublish state */
import RelockModulesDialog from '../backbone/views/RelockModulesDialog'
import RelockModulesDialog from '@canvas/relock-modules-dialog'
import vddTooltip from '@canvas/due-dates/jquery/vddTooltip'
import vddTooltipView from '../jst/_vddTooltip.handlebars'
import Publishable from '../backbone/models/Publishable'
@ -70,9 +70,9 @@ import ContextModulesPublishMenu from '../react/ContextModulesPublishMenu'
import {renderContextModulesPublishIcon} from '../utils/publishOneModuleHelper'
import {underscoreString} from '@canvas/convert-case'
import {selectContentDialog} from '@canvas/select-content-dialog'
import DifferentiatedModulesTray from '@canvas/differentiated-modules'
import ItemAssignToTray from '@canvas/differentiated-modules/react/Item/ItemAssignToTray'
import {parseModule, parseModuleList} from '@canvas/differentiated-modules/utils/moduleHelpers'
import DifferentiatedModulesTray from '../differentiated-modules'
import ItemAssignToTray from '../differentiated-modules/react/Item/ItemAssignToTray'
import {parseModule, parseModuleList} from '../differentiated-modules/utils/moduleHelpers'
import {addModuleElement} from '../utils/moduleHelpers'
if (!('INST' in window)) window.INST = {}

View File

@ -25,7 +25,7 @@ import $, * as JQuery from 'jquery'
import {renderContextModulesPublishIcon} from './publishOneModuleHelper'
import setupContentIds from '../jquery/setupContentIds'
import {initPublishButton, overrideModel, setExpandAllButton} from '../jquery/utils'
import RelockModulesDialog from '../backbone/views/RelockModulesDialog'
import RelockModulesDialog from '@canvas/relock-modules-dialog'
export function addModuleElement(
data: Record<string, any>,

View File

@ -23,7 +23,7 @@ import doFetchApi from '@canvas/do-fetch-api-effect'
import {showFlashAlert} from '@canvas/alerts/react/FlashAlert'
import ContextModulesPublishIcon from '../react/ContextModulesPublishIcon'
import {updateModuleItem, itemContentKey} from '../jquery/utils'
import RelockModulesDialog from '../backbone/views/RelockModulesDialog'
import RelockModulesDialog from '@canvas/relock-modules-dialog'
import type {
CanvasId,
DoFetchModuleResponse,

View File

@ -1,8 +0,0 @@
{
"name": "@canvas/differentiated-modules",
"private": true,
"version": "1.0.0",
"author": "Learning Foundations",
"main": "index.ts",
"owner": "LF"
}

View File

@ -22,7 +22,7 @@ import {func, string} from 'prop-types'
import {useCourseModuleItemApi} from '../effects/useModuleCourseSearchApi'
import SelectPosition from '@canvas/select-position'
import {positions} from '@canvas/move-item-tray/positions'
import {positions} from '@canvas/positions'
const I18n = useI18nScope('module_position_picker')

View File

@ -25,7 +25,7 @@ import {useScope as useI18nScope} from '@canvas/i18n'
import '@canvas/jquery/jquery.toJSON'
import '@canvas/jquery/jquery.disableWhileLoading'
import '../../jquery/jquery.instructure_forms'
import {send} from '@canvas/rce/RceCommandShim'
import {send} from '@canvas/rce-command-shim'
import {shimGetterShorthand} from '@canvas/util/legacyCoffeesScriptHelpers'
import sanitizeData from '../../sanitizeData'

View File

@ -18,7 +18,7 @@
import {Course} from '../../../features/course_paces/react/shared/types'
import {CoursePace, PaceContextProgress, Progress} from '../../../features/course_paces/react/types'
import {EnvDateRange} from '@canvas/global/DateRange'
import {EnvDateRange} from '../DateRange'
/**
* Course Paces environment variables

View File

@ -16,13 +16,11 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import {DeepLinkResponse} from '@canvas/deep-linking/types'
/**
* From Lti::IMS::DeepLinkingController
*/
export interface EnvDeepLinking {
deep_link_response?: DeepLinkResponse
deep_link_response?: any
DEEP_LINKING_POST_MESSAGE_ORIGIN?: string
deep_linking_use_window_parent?: boolean
lti_overwrite_user_url_input_select_content_dialog?: boolean

View File

@ -16,10 +16,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import {EnvCommonNewUserTutorial} from '@canvas/global/env/EnvCommon'
import {GradebookOptions} from '../../../features/gradebook/react/default_gradebook/gradebook.d'
import {GradingScheme} from '@canvas/grading-scheme'
import {GradeStatus, GradeStatusUnderscore} from '@canvas/grading/accountGradingStatus'
import {EnvCommonNewUserTutorial} from './EnvCommon'
/**
* Generic Gradebook environment.
@ -31,7 +28,7 @@ export type EnvGradebook = EnvCommonNewUserTutorial &
Partial<EnvGradebookCommon & EnvGradebookSpeedGrader>
export interface EnvGradebookCommon {
GRADEBOOK_OPTIONS: GradebookOptions & {
GRADEBOOK_OPTIONS: any & {
proxy_submissions_allowed: boolean
}
@ -62,7 +59,7 @@ export interface EnvGradebookCommon {
/**
* From GradebooksController#load_grade_summary_data
*/
course_active_grading_scheme?: GradingScheme
course_active_grading_scheme?: any
/**
* From ApplicationController#set_student_context_cards_js_env
@ -99,7 +96,7 @@ export interface EnvGradebookSpeedGrader {
course_id: string
assignment_id: string
assignment_title: string
custom_grade_statuses: GradeStatus[] | GradeStatusUnderscore[]
custom_grade_statuses: any
rubric: null | unknown
nonScoringRubrics: boolean
outcome_extra_credit_enabled: boolean

View File

@ -16,19 +16,19 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import {EnvCommon} from '@canvas/global/env/EnvCommon'
import {EnvDeepLinking} from '@canvas/global/env/EnvDeepLinking'
import {EnvAssignments} from '@canvas/global/env/EnvAssignments'
import {EnvRce} from '@canvas/global/env/EnvRce'
import {EnvCourse} from '@canvas/global/env/EnvCourse'
import {EnvCoursePaces} from '@canvas/global/env/EnvCoursePaces'
import {EnvGradebook} from '@canvas/global/env/EnvGradebook'
import {EnvGradingStandards} from '@canvas/global/env/EnvGradingStandards'
import {EnvPlatformStorage} from '@canvas/global/env/EnvPlatformStorage'
import {EnvAccounts} from '@canvas/global/env/EnvAccounts'
import {EnvContextModules} from '@canvas/global/env/EnvContextModules'
import {EnvWikiPages} from '@canvas/global/env/EnvWikiPages'
import {EnvContentMigrations} from '@canvas/global/env/ContentMigrations'
import {EnvCommon} from './EnvCommon'
import {EnvDeepLinking} from './EnvDeepLinking'
import {EnvAssignments} from './EnvAssignments'
import {EnvRce} from './EnvRce'
import {EnvCourse} from './EnvCourse'
import {EnvCoursePaces} from './EnvCoursePaces'
import {EnvGradebook} from './EnvGradebook'
import {EnvGradingStandards} from './EnvGradingStandards'
import {EnvPlatformStorage} from './EnvPlatformStorage'
import {EnvAccounts} from './EnvAccounts'
import {EnvContextModules} from './EnvContextModules'
import {EnvWikiPages} from './EnvWikiPages'
import {EnvContentMigrations} from './ContentMigrations'
/**
* Top level ENV variable.

View File

@ -19,7 +19,7 @@
import _ from 'lodash'
import * as timezone from '@canvas/datetime'
import GradingPeriodsHelper from './GradingPeriodsHelper'
import type {CamelizedGradingPeriod} from '@canvas/grading/grading.d'
import type {CamelizedGradingPeriod} from './grading.d'
import type {Submission, DueDate, UserDueDateMap, AssignmentUserDueDateMap} from '../../api.d'
export function scopeToUser(

View File

@ -23,7 +23,7 @@ import type {
SubmissionOriginalityData,
SimilarityEntry,
CamelizedSubmissionWithOriginalityReport,
} from '@canvas/grading/grading.d'
} from './grading.d'
export function isGraded(submission) {
// TODO: remove when we no longer camelize data in Gradebook

View File

@ -20,10 +20,7 @@
import {useScope as useI18nScope} from '@canvas/i18n'
import {max, invert} from 'underscore'
import {originalityReportSubmissionKey} from './originalityReportHelper'
import type {
SubmissionOriginalityData,
SubmissionWithOriginalityReport,
} from '@canvas/grading/grading.d'
import type {SubmissionOriginalityData, SubmissionWithOriginalityReport} from './grading.d'
const I18n = useI18nScope('turnitin')

View File

@ -19,7 +19,7 @@
import React from 'react'
import {fireEvent, render} from '@testing-library/react'
import TimeLateInput from '@canvas/grading/TimeLateInput'
import TimeLateInput from '../TimeLateInput'
describe('TimeLateInput', () => {
let props

View File

@ -22,7 +22,7 @@ import {useScope as useI18nScope} from '@canvas/i18n'
import DateHelper from '@canvas/datetime/dateHelper'
import NaiveRequestDispatch from '@canvas/network/NaiveRequestDispatch/index'
import gradingPeriodsApi from './gradingPeriodsApi'
import type {CamelizedGradingPeriodSet} from '@canvas/grading/grading.d'
import type {CamelizedGradingPeriodSet} from '../grading.d'
import type {GradingPeriodSet, GradingPeriodSetGroup} from 'api.d'
import {EnvGradingStandardsCommon} from '@canvas/global/env/EnvGradingStandards'
import type {GlobalEnv} from '@canvas/global/env/GlobalEnv.d'

View File

@ -16,7 +16,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import type {SubmissionOriginalityData, OriginalityData} from '@canvas/grading/grading.d'
import type {SubmissionOriginalityData, OriginalityData} from './grading.d'
export function originalityReportSubmissionKey(submission: {
id?: string

View File

@ -16,7 +16,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import {send} from '@canvas/rce/RceCommandShim'
import {send} from '@canvas/rce-command-shim'
import {useScope as useI18nScope} from '@canvas/i18n'
import $ from 'jquery'
import _ from 'underscore'

View File

@ -19,7 +19,7 @@
import {arrayOf, func} from 'prop-types'
import {useScope as useI18nScope} from '@canvas/i18n'
import {itemShape, moveOptionsType} from './propTypes'
import {positions} from '../positions'
import {positions} from '@canvas/positions'
import SelectPosition, {RenderSelect} from '@canvas/select-position'
import React from 'react'

View File

@ -18,7 +18,7 @@
import React from 'react'
import {createCache} from '@canvas/apollo'
import OutcomesContext from '@canvas/outcomes/react/contexts/OutcomesContext'
import OutcomesContext from '../contexts/OutcomesContext'
import {useManageOutcomes} from '../treeBrowser'
import {smallOutcomeTree} from '../../mocks/Management'
import {renderHook, act} from '@testing-library/react-hooks'

View File

@ -24,7 +24,7 @@ import {groupDetailMocks, groupDetailMocksFetchMore} from '../../../mocks/Manage
import {MockedProvider} from '@apollo/react-testing'
import * as FlashAlert from '@canvas/alerts/react/FlashAlert'
import OutcomesContext, {ACCOUNT_GROUP_ID} from '../../contexts/OutcomesContext'
import {FIND_GROUP_OUTCOMES} from '@canvas/outcomes/graphql/Management'
import {FIND_GROUP_OUTCOMES} from '../../../graphql/Management'
jest.mock('@canvas/alerts/react/FlashAlert')

View File

@ -18,7 +18,7 @@
import React from 'react'
import {renderHook} from '@testing-library/react-hooks/dom'
import OutcomesContext from '@canvas/outcomes/react/contexts/OutcomesContext'
import OutcomesContext from '../../contexts/OutcomesContext'
import useOutcomeFormValidate from '../useOutcomeFormValidate'
describe('useOutcomeFormValidate', () => {

View File

@ -18,7 +18,7 @@
import {useState, useCallback} from 'react'
import {useScope as useI18nScope} from '@canvas/i18n'
import {CREATE_LEARNING_OUTCOME_GROUP} from '@canvas/outcomes/graphql/Management'
import {CREATE_LEARNING_OUTCOME_GROUP} from '../../graphql/Management'
import {useMutation} from 'react-apollo'
import {showFlashAlert} from '@canvas/alerts/react/FlashAlert'

View File

@ -21,7 +21,7 @@ import {useApolloClient, useQuery} from 'react-apollo'
import useCanvasContext from './useCanvasContext'
import {useScope as useI18nScope} from '@canvas/i18n'
import {showFlashAlert} from '@canvas/alerts/react/FlashAlert'
import {SEARCH_GROUP_OUTCOMES} from '@canvas/outcomes/graphql/Management'
import {SEARCH_GROUP_OUTCOMES} from '../../graphql/Management'
import {uniqWith, uniqBy, uniq, isEqual} from 'lodash'
import {gql} from '@canvas/apollo'

View File

@ -19,10 +19,10 @@
import {useState, useCallback, useEffect} from 'react'
import {useScope as useI18nScope} from '@canvas/i18n'
import resolveProgress from '@canvas/progress/resolve_progress'
import {IMPORT_OUTCOMES} from '@canvas/outcomes/graphql/Management'
import {IMPORT_OUTCOMES} from '../../graphql/Management'
import {useMutation} from 'react-apollo'
import {showFlashAlert} from '@canvas/alerts/react/FlashAlert'
import useCanvasContext from '@canvas/outcomes/react/hooks/useCanvasContext'
import useCanvasContext from './useCanvasContext'
const I18n = useI18nScope('FindOutcomesModal')

View File

@ -0,0 +1,7 @@
{
"name": "@canvas/positions",
"private": true,
"version": "1.0.0",
"author": "neme",
"main": "./positions.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "@canvas/rce-command-shim",
"private": true,
"version": "1.0.0",
"author": "neme",
"main": "./RceCommandShim.js"
}

View File

@ -23,7 +23,7 @@
// time around.
import serviceRCELoader from './serviceRCELoader'
import {RCELOADED_EVENT_NAME, send, destroy, focus} from './RceCommandShim'
import {RCELOADED_EVENT_NAME, send, destroy, focus} from '@canvas/rce-command-shim/RceCommandShim'
import $ from 'jquery'
function loadServiceRCE(target, tinyMCEInitOptions, callback) {

View File

@ -18,7 +18,7 @@
import {useScope as useI18nScope} from '@canvas/i18n'
import $ from 'jquery'
import DialogBaseView from '@canvas/dialog-base-view'
import template from '../../jst/RelockModulesDialog.handlebars'
import template from './RelockModulesDialog.handlebars'
const I18n = useI18nScope('modules')

View File

@ -0,0 +1,7 @@
{
"name": "@canvas/relock-modules-dialog",
"private": true,
"version": "1.0.0",
"author": "neme",
"main": "./RelockModulesDialog.js"
}

View File

@ -24,8 +24,13 @@ import {Text} from '@instructure/ui-text'
import {FormField} from '@instructure/ui-form-field'
import {View} from '@instructure/ui-view'
import {ScreenReaderContent} from '@instructure/ui-a11y-content'
import {positions} from '@canvas/move-item-tray/positions'
import {itemShape} from '@canvas/move-item-tray/react/propTypes'
import {positions} from '@canvas/positions'
export const itemShape = shape({
id: string.isRequired,
title: string.isRequired,
groupId: string,
})
const I18n = useI18nScope('selectPosition')

View File

@ -90,7 +90,6 @@ export default defineConfig({
'ui/shared/dashboard-card/**/*',
'ui/shared/datetime/**/*',
'ui/shared/deep-linking/**/*',
'ui/shared/differentiated-modules/**/*',
'ui/shared/direct-sharing/**/*',
'ui/shared/discussions/**/*',
'ui/shared/error-boundary/**/*',

542
yarn.lock

File diff suppressed because it is too large Load Diff