Commit Graph

139 Commits

Author SHA1 Message Date
Ryan Shaw 3718da12c5 Upgrade canvas-lms proper to instUI 6
closes: COREFE-209 COREFE-207 COREFE-230

this should help bugs, spec flakiness, and bundle sizes

test plan:
* make sure that the pages that are still using the old 5.x one from
  @instructure/ui-core still work, namely:
  app/jsx/account_course_user_search/components/CoursesToolbar.js
  app/jsx/blueprint_courses/components/CourseFilter.js
  app/jsx/grade_summary/SelectMenu.js
* make sure themeing of instUI components still works and picks up
  theme editor settings
* make sure bundle sizes are smaller, not bigger
* check tinymce-a11y-checker that it still works the same
  (With the rce-enhancements feature both on and off)

Perf test plan:
* make sure tree shaking is working
  load it up in one of the webpack bundle visualizers to see
* make sure we are not loading *all* of the icons


this commit also updates the instUI6 version we use from 6.9 6o 6.10
which has  fix for <Alert> unmounting that ed fixed:

Test plan:
* you should see less console arrows about react unmounting nodes
  Associated with the CanvasSelect component

Change-Id: Ied2ff1d1521b0900126136170f103dea27bc554a
Reviewed-on: https://gerrit.instructure.com/204545
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-30 14:36:53 +00:00
Ryan Shaw f4e36a93d6 upgrade some NPM dependencies
Change-Id: If2a90959713e292a46c9d5e9c75c89a37f7316b6
Reviewed-on: https://gerrit.instructure.com/205007
Tested-by: Jenkins
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-20 18:30:44 +00:00
Ryan Shaw f0858936ab Backport instUI fix to allow themeable w/ `class`es
We made this change in @instructure/ui-themeable in g/203714
but that is for the current master on instUI 6, we need it now even
though we are still on instUI 5 so this will back port it in so we can
use it now.

Test plan:
* Things that use `themeable` should work both with and without the
  “Drop ie11” commit applied.

Specifically:
bin/rspec ./spec/selenium/dashboard/planner/student_planner_assignments_spec.rb:88
Should not fail with
TypeError: Class constructor Yr cannot be invoked without 'new'

Change-Id: I7ef8ef9eda1057badabbb08fcdd6875ad8064e89
Reviewed-on: https://gerrit.instructure.com/203950
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-06 16:07:55 +00:00
Clay Diffrient be7eb9949b Add quizzes_bundle to size exception list.
refs CORE-3106

Test Plan:
  - Automated tests pass

Change-Id: I088c0de83178241bf3aef5654793ada434f7cf4f
Reviewed-on: https://gerrit.instructure.com/198619
Reviewed-by: Robert Lamb <rlamb@instructure.com>
Tested-by: Jenkins
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-06-21 17:48:04 +00:00
Ryan Shaw af1ffe2245 mv non-bundle-entries out of app/coffeescrips/bundles
these files are not actually bundles that someone would js_bundle onto
a page like anything else in the app/coffeescripts/bundles dir
If we left them here webpack would make chunks for them and that is a
waste. moving them out of that dir solves the problem


test plan:
* the content migration and account quota settings selenium specs should
  still pass

Change-Id: Ieca3904f6254548d597087209ca180bf599181bd
Reviewed-on: https://gerrit.instructure.com/193848
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
2019-05-31 04:10:11 +00:00
Jon Willesen fe5f4b86cd rce: add path and word count to new status bar
This also replaces our old react-tinymce package with the official
@tinymce/tinymce-react package.

closes CORE-2836

test plan:
- typing in the rce should update the word count in the status bar
- the html path of the current cursor position should also be shown in
  the status bar
- generally test all the rce things because of the package replacement

Change-Id: Ibe2b182ff55ba2dc77988dcd4c1865a28667db95
Reviewed-on: https://gerrit.instructure.com/193154
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Jenkins
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-05-17 13:27:35 +00:00
Ryan Shaw 4944bccb2d upgrade webpack to v4
Closes: CORE-1143

Test plan:
* load canvas in prod mode in a non-English language. Click around
  And make sure everything works
* in prod mode, do a test to compare load time to what’s on beta.
* page load time and js bundle size should be smaller
* click around in the quizzes client apps and the ember grade book
  And make sure those things work

Change-Id: I93c28c4a6d22db95cd1c7e59cd3f5221d46fe1ed
Reviewed-on: https://gerrit.instructure.com/143422
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
2019-05-16 15:59:04 +00:00
Ryan Shaw 3bad0a160b Remove add-module-exports babel plugin & use esModules
Closes: CORE-2868 CORE-2869

This is needed because without
Doing that, our bundle sizes are going to blow up from the things we
Import from InstUI

Test plan:
* the result of a dynamic export will now give you a object grab bag
  That has a “default” property. Not just the thing of whatever the
  “default" export was.
* so to test this, go to some page that does a dynamic import (like
  the dashboard page) and make sure that still works\

* run a prod build
* make sure that translations still work as before

Change-Id: I3dd1b32216052afd5fbc5d6cec40ea18264f65e9
Reviewed-on: https://gerrit.instructure.com/191578
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-05-03 22:49:58 +00:00
Ryan Shaw 18dc60278b Pass gems/plugins/x/app/coffeescripts/**/*.js through babel
This makes it so you can drop-in replace .coffee files in plugins
With .js files, without having to move them from app/coffeescripts/
To app/jsx

Test plan:
* with this applied, my commit that decaffeinates migration_tool
  should pass

Change-Id: I06800406f497ec54a5f0294050fabf87755022fe
Reviewed-on: https://gerrit.instructure.com/191742
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-05-02 14:28:28 +00:00
Ryan Shaw c9c786fb33 Use es Modules for “plugin extensions”
closes CORE-2874

This makes it so we use es Modules instead of AMD for the generated
Code we make in our webpack loader so that it works if those extensions
Are AMD OR ES Modules.  As it is written before this, if any plugin
Was written as an es module it would not work unless the 
Babel add-module-exports plugin was also used.

We have to do this before I can merge my other commits that 
AMD->ES modules stuff in plugin repos

Test plan:
* plugins that add extensions to other files should still work

Change-Id: I2b6d6ee7fcabc28864b29e7f8df336316d1a3b61
Reviewed-on: https://gerrit.instructure.com/191710
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-05-01 18:57:46 +00:00
Ryan Shaw 8ca30e3626 move some JS out of the critical path
closes:  CORE-2785

This is all stuff that needs to be ran on every page, but It is not
critical that it be ran before anything else. By moving this into
an async chunk, it will not block any of the critical javascript from
running if it is ready (downloaded) before this stuff is.

Test plan:
* all of these behaviors and things should still run
* but you should see that they load from their own webpack chunk file
  In the network panel
* and you should see that while that chunk is downloading, the critical
  JS is not blocked from executing

Change-Id: If47d966979238d68da14bb4b69cba32be7f87dcc
Reviewed-on: https://gerrit.instructure.com/189372
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-04-17 16:53:47 +00:00
Ryan Shaw 2b8e4c1c2e don’t include really old timezone data in JS bundle
closes: CORE-2770

we don’t need timezone data from before canvas was created (pre 2011)
or, realistically, 15 years from now. by using this
moment-timezone-data-webpack-plugin we can strip them out of our webpack
bundle and our common vendor JS file will be smaller.

and smaller js bundles = faster page loads

test plan:
* try to think of a compelling reason why we would need to properly
  handle timezone weirdness that is either older than 2011 or more than
  15 years from now
* if you can think of something, then we can’t do this
* run the prod webpack build, the vendor file should be smaller

Change-Id: I1823fb48cc14bc0687f5222d7f4344118825698e
Reviewed-on: https://gerrit.instructure.com/188810
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-04-11 21:32:03 +00:00
Ryan Shaw 4f97c6df56 remove all the legacy RCE code
closes: CORE-2588 CORE-2591

This completely removes the legacy RCE codepath. So you will need to
Have an https://github.com/instructure/canvas-rce-api running to use
sidebar in any Rich Content Editors.

Test plan:
* smoke test to make sure that the editor and sidebar work as it did
  When you had the RCS feature flag on.
* there should not be any more settings or feature flags around turning
  on the RCS service

Change-Id: I1c3e7f5a45eed5e010d8e425ae561e45f739fd3a
Reviewed-on: https://gerrit.instructure.com/186525
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
2019-04-04 18:19:12 +00:00
Ryan Shaw ed46527652 Upgrade to babel 7 & allow any js file to be themeable
closes: CORE-2699 CORE-2700 UIDEV-99

This commit gets canvas-lms itself upgraded to babel 7. To do that we
also had to upgrade jest to v24. We had already got canvas-rce and
canvas-planner on jest24/babel7 but now this gets everything to babel 7.
so you will see a lot of things removed from yarn.lock since we don’t
don’t have to have different versions of everything for babel and jest

The other major thing this does is make it so any JS file in canvas
can become an @instructure/ui-themeable themeable component. This means
you no longer should have to put your css in app/stylesheets for any new
react components that you are writing.

Test plan:
1. Make sure that the perf of `yarn build:js` is on-par with what it was
   before. We pass everything through the themeable babel transform now
   so there is a chance it is slower. If it is majorly slower, we’ll have
   to figure something out.
2. run a production weback build. The common (or any bundle for that
   matter should get output exactly the same as it did before)

things to manually qa check:
* in a NODE_ENV=production enviornment, go to
  /accounts/site_admin/developer_keys
* click the "+ Developer Key" button, it should open the modal.
  (there are selenium tests that do this, but it was one thing that had
  to be fixed to get jenkins to pass)

* on a course that is set up as a master course, click on the thing that
  opens the blueprint courses tray.
* verify that when you click "Associations" and "Sync History" links in
  that tray, that they dynamically load the webpack chunk for the
  modal contents for that thing and then the modal is shown
  (again, there are selenium specs that test that exact thing but it
  is always good to manually test it too)

Change-Id: I802584228962b54480a500f8fe422f45c2dcac4c
Reviewed-on: https://gerrit.instructure.com/183965
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-04-02 14:59:20 +00:00
Brent Burgoyne a7b07e869e make jest support files that import handlebars
Change-Id: I073ea3f8b54cf46cd2b4c2437aad5ee13c95dc7c
Reviewed-on: https://gerrit.instructure.com/186286
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-03-22 15:38:23 +00:00
James Williams f49b3a77b1 add slovenian locale
closes #CORE-2350

Change-Id: I152700e4f0527b7652b95360ee0a889e1945b1db
Reviewed-on: https://gerrit.instructure.com/183033
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-03-12 14:33:42 +00:00
Ryan Shaw d86d69015c Opt our js build tooling dirs into prettier
I guess since our team owns these we can opt them in now


Test plan:
* nothing should change

Change-Id: Ic7207e1033869ef60644c41bd5c80a3e8532a6dd
Reviewed-on: https://gerrit.instructure.com/171471
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-11-07 22:46:16 +00:00
Ryan Shaw 35237c1a79 [decaffeinate] convert syntax for ember stuff
this is the commit that actually does the syntax conversion from
coffeescript to javascript.

test plan:
* automated builds, which have javascript/selenium tests that cover
  the screenreader_gradebook should pass.
* look at the log output of the linters-and-js build and verify
  That the tests for  “ScreenReader Gradebook” ran. (Without a change
  In this commit, it was only running .coffee specs. But I changed it
  So this step is to just make sure that did the right thing)
* manually try out the "individual gradebook" page and click around
  to see that everything works

Change-Id: I32aeb14270ce751df49a1c7ae87cc57dceab69f6
Reviewed-on: https://gerrit.instructure.com/168020
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-10-12 19:33:16 +00:00
Ryan Shaw 0a5c18154c [decaffeinate] convert syntax of non-AMD-consumed files
If you see this in git blame, it is actually the parent-parent
(^^) commit that you want

These are all coffeescript files that are not imported via AMD
In any other file (eg there is no file that has
define([‘path/to/foobar’, (foobar) => …

That means these can be converted now. The ones that do have something
That imports them like that ^ need to be all converted at the same time
Otherwise you have to rewrite that as:
define([‘path/to/foobar’, ({default: foobar}) => …

Test plan:
* these files should all do exactly the same as what they used to

Change-Id: I3956cb16943e1404ab5bde39978bdc198d0e5b07
Reviewed-on: https://gerrit.instructure.com/167600
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-10-09 21:39:29 +00:00
Ryan Shaw 52437a1137 Fix some invalid imports
These are all things that were improperly importing either:
* a “default” object when there was only named exports
* a named export when there is only a default export

They work now because we tell babel to transpile es modules down
to commonJS in the “env” preset in babelrc but we want to eventually
not do that and these will need to be fixed before then

Test plan:
* no functionality should actually change in the code generated by
  Webpack
* this build should pass
* but so should the build for the commit that follows this that
  sets the `“modules”: false` option for babel-preset-env in
  .babelrc

Change-Id: Ic6f49fb94ee0d0592ca5e34ef7ed0a5633c40d80
Reviewed-on: https://gerrit.instructure.com/167054
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-10-09 21:31:57 +00:00
Clay Diffrient b575d1c78b Add raven to collect deprecations warnings
closes CORE-1460

Test Plan:
  - When the selenium chrome deprecations build
    runs, you should see data in sentry.
  - You should see no change in behavior when run
    in prod or without DEPRECATION_SENTRY_DSN environment
    variable set.

Change-Id: I7703d44612af6189a13122de15fdb0d067d2110d
Reviewed-on: https://gerrit.instructure.com/161736
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-08-23 16:19:11 +00:00
Ryan Shaw b8da415290 Add a couple more things to vendor bundle
These were included in most bundles too

Change-Id: Ic0c8ec13c7c5b0f0a734f056d1918c8c7836bd30
Reviewed-on: https://gerrit.instructure.com/155490
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-07-06 16:05:25 +00:00
Ryan Shaw fcfb31558c Add some things to vendor bundle for less total JS
These things (and all of their deps) are things that are required on
most of our pages. Because of the way our webpack is currently set up,
if something is not in the “CommonsChunk” (aka: vendor bundle), then
It will be bundled into any bundle where it was used. This meant that,
For example, discussions, announcements, account_course_user_search, etc
Each had their own copy of lodash and all of these instUI components
bundled into their own webpack file. That meant, as you browsed around
From page to page, you’d download like 10 different copies of lodash and
Re-download all of these instUI components (aka, wasted bandwidth, 
Slower page loads). It also meant running webpack in production mode 
would be slower because there was more bundling work for webpack to do
But most importantly there was more total bytes of JS for uglifyJS to
Uglify.

Test plan:
* `yarn webpack-production` should be faster.
  (The difference for me was Time: 406140ms to Time: 276743ms)
* browsing around canvas on a non-super-fast connection with an empty 
  cache should feel faster since you’re downloading less JS per new page 
  view

Change-Id: I0d0de9aafe2fc94d2d734993ac8527c7e4af165b
Reviewed-on: https://gerrit.instructure.com/155134
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-06-26 20:18:34 +00:00
Clay Diffrient 9f545a5c66 Add release tracking and source map uploading to sentry
This makes it so our sentry instance can be much more detailed
in the data that it collects

Change-Id: If44ea7bc54646988d681e6ad775951eb0e35436a
Reviewed-on: https://gerrit.instructure.com/154010
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-06-15 19:40:36 +00:00
Clay Diffrient 38d449db6e Use full source maps when using sentry or coverage
This makes it so that our karma build shows accurate source maps
to istanbul when reporting code coverage.

It also makes it so sentry errors get reported a bit better

Test Plan:
  - Run build in non-prod with COVERAGE or SENTRY_URL env variables set
  - Full source maps should be present

Change-Id: I19e4df833cad34b7877483f69aec676dfdd8fe7c
Reviewed-on: https://gerrit.instructure.com/153978
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-06-15 16:00:24 +00:00
Ryan Shaw e415eaa961 Use yarn workspaces
Run `script/nuke_node.sh` to clean everything up
Run `yarn install` it should install everything for everything
Run `yarn build` and `yarn test` they should work exactly as before

Change-Id: I11a27ff2d705c6cbb3b3f9029dd8b32138706146
Reviewed-on: https://gerrit.instructure.com/151356
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-06-04 20:02:02 +00:00
Ryan Shaw 63990e024c Use ui-icons instead of inst-icons for icon font
closes: CORE-1434

Test plan:
* all the icons should look the same as they did before
* make sure that icons that should flip for RTL (like the icons on 
  The course/user search pagination arrows, the icon to open the
  Submission details tray in new gradebook, the “>” icons to expand
  a submenu for the menus in new gradebook, etc)

Change-Id: I490d2dcd91b1b7ca2a116a1416718cd797f74901
Reviewed-on: https://gerrit.instructure.com/149482
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Reviewed-by: Chris Hart <chart@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-05-29 20:57:04 +00:00
Simon Williams 1323109ba3 removed unused webpack code
Change-Id: Ice63f1cf2397c02c470af6ec6750de36efb61550
Reviewed-on: https://gerrit.instructure.com/148904
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
2018-05-02 16:36:12 +00:00
Ryan Shaw 373ff6a64a remove I18n providePlugin
closes:  CORE-1203

test plan:
* all automated tests should still pass meaning there was no file
that depended on i18n that didn't "import" it

Change-Id: I68356bee03ca8aa22e87895e76dcd00efa37ab56
Reviewed-on: https://gerrit.instructure.com/143457
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-04-23 18:25:03 +00:00
Ryan Shaw 524a8865f4 Get i18n-js and i18nliner from npm, not vendor
closes:  CORE-1201

test plan:
* the qunit & selenium tests that we have around this should still pass
  (except for that one that had to be changed because the spec was 
  actually expecting the wrong thing and the old code was erroneous)
  
* load the app in fully production build and make sure translations 
  still work

Change-Id: Id06c38f60c1670fb93e85d5479ec747035c1158b
Reviewed-on: https://gerrit.instructure.com/143456
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-04-19 21:34:33 +00:00
Brent Burgoyne 94102cf90d add webpack notification hooks for gnome/linux
Change-Id: I7ef0a06d593aa83a3657f4d47c923a45f37270e9
Reviewed-on: https://gerrit.instructure.com/143602
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
Tested-by: Jenkins
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
2018-03-14 19:54:40 +00:00
Steven Burnett 9c9842ab24 Revert "remove webpackHooks, I don’t think anyone uses it"
I was totes using this. 

This reverts commit f2d1d07011.

Change-Id: Ia1959c3533f25155a957ecac4442fd01896e2896
Reviewed-on: https://gerrit.instructure.com/143598
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
Product-Review: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
2018-03-14 19:25:52 +00:00
Ryan Shaw d65246ba97 Convert last remaining code from instUI 3 to 4
updates all the instui components used for these alerts to 4.x
Closes: CORE-762 CORE-732

Change-Id: Ia5af600b5747bfbeca4015d30d2be900700a90ae
Reviewed-on: https://gerrit.instructure.com/143337
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-03-12 23:20:07 +00:00
Ryan Shaw f2d1d07011 remove webpackHooks, I don’t think anyone uses it
This was a thing so you could get Mac notifications of your webpack 
build progress. I don’t think anyone actually uses it though.

I’ll add a bunch of people to the review on this and if you or someone
You know uses it still, let me know and we can keep it in if it is 
helpful.

Change-Id: Iebf7fb16ebd532e63cbb31b325f7cd8e1b711e02
Reviewed-on: https://gerrit.instructure.com/143257
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-03-12 22:36:41 +00:00
Ryan Shaw 06d3ceb331 git rid of our vendor’ed fork of mediaelement
refs: CORE-24

test plan:
* this net result of this change should mean that we are using the exact
  same code as we were using before, just pulled from github directly
  in our package.json instead of vendored into our repo.
* testing the follow-on commits should show this worked correctly

Change-Id: Ie6d022d5fe8ed1a607f66f9d426c47ec7e8f5b14
Reviewed-on: https://gerrit.instructure.com/142381
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-03-12 16:17:43 +00:00
Ryan Shaw 0fb79382aa Re-exclude moment locales from vendor bundle
It turns out our the webpack IgnorePlugin we set up stopped working
so this fixes it and adds a spec that will catch it if it ever breaks
again in the future

Test plan:
* the webpack vendor should be smaller
* date strings in other languages should still work

Change-Id: I3a23c358eec73309f97bac119c7028e25d52e448
Reviewed-on: https://gerrit.instructure.com/142416
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-03-07 23:28:24 +00:00
Ryan Shaw f1b0c8631b rm a config line for a file that has been rm’ed
Vendor/md5.js doesn’t exist anymore, we get it from npm directly
So we don’t need this config line

Change-Id: Ib6de829e7d708d07d9a3bd5bc666ab8dc4e99a4a
Reviewed-on: https://gerrit.instructure.com/142824
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-03-07 22:19:48 +00:00
Ryan Shaw 359f2782ae Don’t pass translation files through babel
Lately, when I have been running webpack I have noticed this warning:
[BABEL] Note: The code generator has deoptimised the styling of 
“…/public/javascripts/translations/gradebook.js" as it exceeds 
the max of "500KB".

And I thought:

1. oh man, so sad that we have a half meg of strings for just the 
   gradebook bundle

And:
2. Why are we getting babel warnings about stuff in  
   public/javascripts/translations in the first place? Those are 
   generated files and have no need to be passed through babel.


So this commit at least fixes #2. We’ll fix #1 in the next sprint with
Our i18n work. 

This shaved 1/6th of the time to run a webpack build for
Me when I tested it (50s vs 60s). Not bad :), every little bit helps.

Test plan:
* run webpack
* you should not see that “[BABEL] Note: The code generator…” warning
* run prod compile_assets and boot rails in prod mode.
* make sure all the strings are still translated for you

Change-Id: I2f1b6759ab5ace82662cb3c713449bbf3fef7fd5
Reviewed-on: https://gerrit.instructure.com/142380
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-03-01 23:23:35 +00:00
decaffeinate f5e4bc2d80 [spec][decaffeinate] convert coffe specs to js syntax
...and pass them through amdtoes6, eslint, and prettier

This converts most of our coffeescript spec files to javscript, to
es module syntax and applies our eslint code formatting rules to it.

Because this is just spec files, as long as the tests still run
and they all still pass, this should be good. That makes these a lot
easier and safer to deal with converting than the stuff in
app/coffeescripts

After this commit there should not be any .coffee files in the
/spec/ directory.

test plan:
* jenkins should run the same # of js specs as before and they should
  all pass

Change-Id: I701c101777486e2e37d0ec1327692f16099352cd
Reviewed-on: https://gerrit.instructure.com/141556
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-02-22 16:45:17 +00:00
Ryan Shaw 276e434055 [spec] allow converting .coffee specs to .js
this just updates our webpack config so if you rename
spec/coffeescripts/fooSpec.coffee to spec/coffeescripts/fooSpec.js
and change the syntax to js it will accept that just the same as
the coffee file it replaced.

test plan:
* verify that the specs in the commits that follow this
  have their specs run and they pass

Change-Id: I3a58c2bbffa6022a5c63a0f50dd5f37d311e1dc7
Reviewed-on: https://gerrit.instructure.com/141554
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-02-22 16:44:45 +00:00
Jeremy Stanley e32e17f024 add comment about hashSalt in baseWebpackConfig.js
to make it clear why it's there and under what conditions
it should be changed

refs CORE-933

Change-Id: I449eaaa54baddc3ab6667f2a16d97570bb61f21b
Reviewed-on: https://gerrit.instructure.com/139438
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
2018-01-30 15:38:49 +00:00
Jeremy Neander 410e0d8e87 hash webpack module ids
This also removes md5 asset chunk hashing.

test plan:
* task force consensus

Change-Id: Id67efa204bef719fdb10b3a6d429915744ff2044
Reviewed-on: https://gerrit.instructure.com/139415
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-01-29 18:44:57 +00:00
Jeremy Neander e118ce3972 use md5 to hash webpack bundles
test plan:
* all eyes of the hot potato approve

Change-Id: Idaa349b2a5b526b46bfe72df2673093fb6ff88b3
Reviewed-on: https://gerrit.instructure.com/139120
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Jeremy Neander <jneander@instructure.com>
2018-01-25 20:47:55 +00:00
Ryan Shaw b8afdf5678 webpack: replace DefinePlugin w/ EnvironmentPlugin
the new version of webpack has a new plugin (EnvironmentPlugin) that
makes the syntax for doing this same thing a little more concise

test plan:
* webpack should work the same as it used to

Change-Id: I7116cc26386283c84a3d82fbbbd06f5497829a1c
Reviewed-on: https://gerrit.instructure.com/133390
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2017-12-12 16:23:03 +00:00
Ryan Shaw 8fc5d174c5 add InstUI4's ui-core to package.json
...so people can start upgrading all of their stuff

closes:  CORE-735

test plan:
* check out a follow on commit after this and make test that
* make sure theming works for new components

Change-Id: I1ab6141152c353cbae88657b8913431c2634a4f2
Reviewed-on: https://gerrit.instructure.com/135330
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2017-12-12 15:52:40 +00:00
Graham Ballantyne 5c9ae8f6aa Generate JavaScript sourcemaps in production
Resolves instructure/canvas-lms#1101

In production, generate separate sourcemap files so that bundles appear
split into their original, un-obfuscated source files in browser
devtools.

Note: `source-map` generation on large projects can cause node/v8 to
exhaust its memory allocation (see webpack/webpack#1914,
webpack/webpack#2157). This is the reason for the change to
package.json. In the future (e.g. when Canvas uses Node 8, or the
NODE_OPTIONS feature is back-ported to Node 6, this can go back to
a traditional npm script that doesn't directly invoke `node`.

Test Plan:
- Remove the `public/dist/webpack-*` directories.
- Run `JS_BUILD_NO_UGLIFY=true npm run webpack-production`. No sourcemap
  files should be present in  `public/dist/webpack-production`.
- Run `npm run webpack-production`. Sourcemap files should be present in
  `public/dist/webpack-production`

Change-Id: Iebc85b5f52a6c7c25fdc5c2326cf9436dd42c2dd
Reviewed-on: https://gerrit.instructure.com/128070
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
2017-10-02 18:43:52 +00:00
Brent Burgoyne 2be11521b1 re-add missing timezone locales
add timezone locales that were lost when moving from vendoring the
library to pulling it from npm. custom locales were apparently added
to the vendored lib.

fixes CNVS-38138

test plan:
- change user locale to each of the following:
  ar, da, fa, ht, hy, mi, nn, tr
- load a page
- ensure there is not a 404 when trying to load the timezone js file

Change-Id: Idff0059e3e445d1602f5d595d595af4780b34517
Reviewed-on: https://gerrit.instructure.com/123653
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2017-08-23 21:01:06 +00:00
Ryan Shaw c66233494b Fail build on webpack warning
Fixes: CNVS-38653

This will prevent compile_assets from continuing
if webpack had any warnings.

Test plan:
* Comment out `new webpack.IgnorePlugin(/\.flow$/),`
  in frontend_build/baseWebpackConfig.js
* run webpack
* it should return a non-zero exit code

Change-Id: Iecfd47bc4e83e15a288397e102716535a5a4ef0d
Reviewed-on: https://gerrit.instructure.com/122994
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: brian kirkby <bkirkby@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2017-08-23 20:51:33 +00:00
Cameron Matheson 1606e9558b update graphiql
Change-Id: Ib5f5152ed915918ab95efe0fdf1fc93b8ca12eb9
Reviewed-on: https://gerrit.instructure.com/122348
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Cameron Matheson <cameron@instructure.com>
QA-Review: Cameron Matheson <cameron@instructure.com>
2017-08-10 20:37:39 +00:00
Brent Burgoyne 0c1c81fef2 make all locale files agree on short month names
fixes CNVS-34165

test plan:
- make sure you are running with RAILS_LOAD_ALL_LOCALES=1
  for (web and webpack if you are running docker)
- change locale to each of es, de, fr, fr-ca, he and pl
- create/edit a quiz
- in the due date try setting the due date to a day in each month
  - no need to save
- make sure after clicking the day it doesn't change to a different
  month or year

Change-Id: I2da96f80678193e084786d867b27f2944a6e402c
Reviewed-on: https://gerrit.instructure.com/119926
Tested-by: Jenkins
Product-Review: brian kirkby <bkirkby@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Reviewed-by: brian kirkby <bkirkby@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
2017-08-04 22:14:48 +00:00