Commit Graph

204 Commits

Author SHA1 Message Date
Michał Gołębiowski-Owczarek
0f780ba7cc
Build:Tests: Fix custom build tests, verify on Travis
This commit fixes unit tests for the following builds:

1. The no-deprecated build: `custom:-deprecated`
2. The current slim build: `custom:-ajax,-effects`
3. The future (#4553) slim build: `custom:-ajax,-callbacks,-deferred,-effects`

It also adds separate Travis jobs for the no-deprecated & slim builds. 

Closes gh-4577
2020-01-07 23:59:08 +01:00
Michał Gołębiowski-Owczarek
341c6d1b5a
Build: Make Karma work in ES modules mode
Also, run such a suite in CI to make sure modules are working as expected
when used directly.

Closes gh-4550
2019-12-16 19:33:49 +01:00
Michał Gołębiowski-Owczarek
f37c2e51f3
Build: Auto-convert sources to AMD
jQuery source has been migrated in gh-4541 from AMD to ES modules. To maintain
support for consumers of our AMD modules, this commits adds a task transpiling
the ES modules sources in `src/` to AMD in `amd/`.

A "Load with AMD" checkbox was also restored to the QUnit setup. Note that,
contrary to jQuery 3.x, AMD files need to be generated via `grunt amd` or
`grunt` as sources are not authored in ECMAScript modules. To achieve a similar
no-compile experience during jQuery 4.x testing, use the new "Load as modules"
checkbox which works in all supported browsers except for IE & Edge (the
legacy, EdgeHTML-based one).

Ref gh-4541
Closes gh-4554
2019-12-09 20:00:44 +01:00
Michał Gołębiowski-Owczarek
9fd2fa5388
Build: Fix the Windows build
This commit gets rid of rollup-plugin-hypothetical in favor of a simpler
inline Rollup plugin that fits our need and is compatible with Windows.

Fixes gh-4548
Closes gh-4549
2019-12-02 19:55:19 +01:00
Michał Gołębiowski-Owczarek
44ac8c8529
Build: Require extensions for ES6 imports, prevent import cycles
jQuery source is now authored in ECMAScript modules. Native browser support
for them requires full file names including extensions. Rollup works even
if import paths don't specify extensions, though, so one import slipped
through without such an extension, breaking native browser import of
src/jquery.js.

A new ESLint rule using eslint-plugin-import prevents us from regressing
on that front.

Also, eslint-plugin-import's no-cycle rule is used to avoid import cycles.

Closes gh-4544
Ref gh-4541
Ref 075320149a
2019-11-25 20:16:53 +01:00
Michał Gołębiowski-Owczarek
d0ce00cdfa
Core: Migrate from AMD to ES modules 🎉
Migrate all source AMD modules to ECMAScript modules. The final bundle
is compiled by a custom build process that uses Rollup under the hood.

Test files themselves are still loaded via RequireJS as that has to work in
IE 11.

Tests can now be run in "Load as modules" mode which replaces the previous
"Load with AMD" option. That option of running tests doesn't work in IE
and Edge as it requires support for dynamic imports.

Some of the changes required by the migration:
* check `typeof` of `noGlobal` instead of using the variable directly
  as it's not available when modules are used
* change the nonce module to be an object as ECMASscript module exports
  are immutable
* remove some unused exports
* import `./core/parseHTML.js` directly in `jquery.js` so that it's not
  being cut out when the `ajax` module is excluded in a custom compilation

Closes gh-4541
2019-11-18 21:15:03 +01:00
Michał Gołębiowski-Owczarek
d7e64190ef
Build: Remove the external directory, read from node_modules directly
Now that Sizzle is gone & we use npm, we can read from node_modules directly
and skip the setup that copies some files to the external directory.

Closes gh-4466
2019-08-26 18:53:54 +02:00
Michał Gołębiowski-Owczarek
47835965bd Selector: Inline Sizzle into the selector module
This commit removes Sizzle from jQuery, inlining its code & removing obsolete
workarounds where applicable.

The selector-native module has been removed. Further work on the selector
module may decrease the size enough that it will no longer be necessary. If
it turns out it's still useful, we'll reinstate it but the code will look
different anyway as we'll want to share as much code as possible with
the existing selector module.

The Sizzle AUTHORS.txt file has been merged with the jQuery one - people are
sorted by their first contributions to either of the two repositories.

The commit reduces the gzipped jQuery size by 1460 bytes compared to master.

Closes gh-4395
2019-07-29 21:19:21 +02:00
Michał Gołębiowski-Owczarek
438b1a3e8a
Build: ESLint: forbid unused function parameters
This commit requires all function parameters to be used, not just the last one.
In cases where that's not possible as we need to match an external API, there's
an escape hatch of prefixing an unused argument with `_`.

This change makes it easier to catch unused AMD dependencies and unused
parameters in internal functions the API of which we may change at will, among
other things.

Unused AMD dependencies have been removed as part of this commit.

Closes gh-4381
2019-05-13 22:25:11 +02:00
Michał Gołębiowski-Owczarek
0b2c36adb4
Build: Update Sizzle from 2.3.3 to 2.3.4
Fixes gh-1756
Fixes gh-4170
Fixes gh-4249
Closes gh-4345
2019-04-09 09:50:45 +02:00
Michał Gołębiowski-Owczarek
c4f2fa2fb3 Build: Update the master version to 4.0.0-pre 2019-04-08 18:21:36 +02:00
Michał Gołębiowski-Owczarek
2e4b79ab8f
Tests: Fix the core-js polyfill inclusion method
core-js 3 no longer includes a built file in the bundle but core-js-bundle
does.

Closes gh-4342
Ref gh-4341
2019-04-04 23:45:57 +02:00
Michał Gołębiowski-Owczarek
fea7a2a328
Build: Update Sinon from 2.3.7 to 7.3.1, other updates
Closes gh-4341
2019-04-04 16:53:38 +02:00
Michał Gołębiowski-Owczarek
0ec25abba2
Build: Run the basic test suite in jsdom
The basic test suite is now run in jsdom on all supported Node.js versions
(8, 10 & 11 as of now).

Closes gh-4310
2019-03-11 20:03:54 +01:00
Michał Gołębiowski-Owczarek
6ced2639b5
Build: Update QUnit from 1.23.1 to 2.9.2
Closes gh-4307
2019-03-04 20:10:21 +01:00
Michał Gołębiowski-Owczarek
9cb124ed00
Build: Update jsdom; migrate a test with Symbol polyfill to an iframe test
So far, we've been testing that jQuery element iteration works with polyfilled
Symbol & transpiled for-of via a Node test with jsdom with the Symbol global
removed. Unfortunately, jsdom now requires Symbol to be present for its internal
functionality so such a test is no longer possible. Instead, it's been migrated
to an iframe test with transpiled JavaScript.

This PR also enables us to use ECMAScript 2017 or newer in Node.js code.

Closes gh-4305
2019-03-04 18:30:51 +01:00
abnud1
8751e9ef86 Build: Update most dependencies
The only packages not fully updated are:
- qunitjs & karma-qunit as that's a QUnit 2.x update that will require some
changes and we'll do that later
- jsdom as we need to first rewrite the test with the Symbol polyfill - newer
jsdom versions don't work with such a hacked Symbol instance
- sinon as the v2 -> v7 upgrade requires to update our unit tests
- uglify-js & grunt-contrib-uglify as latest uglify-js versions slightly worsen
the minified gzipped size

Closes gh-4227
Closes gh-4228
Closes gh-4230
Closes gh-4232
2019-02-19 13:05:09 +01:00
Timmy Willison
13d0be101f
Tests: add IE launcher for debugging IE11 on Windows 2018-11-27 14:28:57 -05:00
Timmy Willison
4f3b8f0d0b
Update node dependencies (sans jsdom, qunit, and sinon)
Close gh-4098
2018-06-20 12:06:45 -04:00
Oleg Gaydarenko
09684ba3f2 Build: Seasonal update of uglify and its options
raw     gz Compared to last run
 =      = dist/jquery.js
-294    -88 dist/jquery.min.js

Closes gh-3994
2018-03-05 20:53:57 +03:00
Timmy Willison
294a369881
Build: Updating the master version to 3.3.2-pre. 2018-01-20 12:27:15 -05:00
Timmy Willison
f2349aee9b
Build: Updating the master version to 3.3.1-pre. 2018-01-19 14:03:56 -05:00
Timmy Willison
9a7cc801f5
Release: update version to 3.3.0-pre 2018-01-19 11:34:51 -05:00
Timmy Willison
c9efd11f47
Build: Fix UglifyJS output in Android 4.0; update uglify
- Thanks to @mgol for first pass

Fixes gh-3743
Close gh-3920
2018-01-08 11:48:24 -05:00
Michał Gołębiowski-Owczarek
3c0f2cfb05
Build: Only run browser tests in one Node version on Travis
Ref gh-3744
Closes gh-3894
2018-01-03 09:41:46 +01:00
Timo Tijhof
ecd8ddea33
Tests: Add support for running unit tests via grunt with karma
- Update QUnit to 1.23.1
- Remove unused dl#dl from test/index.html
- Remove unused map#imgmap from test/index.html
- Ensure all urls to data use baseURI
- Add the 'grunt karma:main' task
  - customContextFile & customDebugFile
- Add 'npm run jenkins' script

Close gh-3744
Fixes gh-1999
2017-12-18 12:27:38 -05:00
Michał Gołębiowski-Owczarek
781647b182 Build: Drop cross-spawn, use child_process.spawn shell option 2017-09-25 19:27:50 +02:00
Henry Zhu
90bac40a51 Build: Update to Babel 7, use for-of plugin instead of preset-es2015
Closes gh-3786
2017-09-25 19:02:19 +02:00
Timmy Willison
0bf499ca24
Build: fix uglify options for uglify update
- Uses new typeofs option for compression
- See https://github.com/mishoo/UglifyJS2/issues/2198

Close gh-3710
2017-07-10 11:52:44 -04:00
Timmy Willison
ef40dbbc4d
Build: Update sinon, husky, and qunitjs 2017-07-10 11:50:21 -04:00
CDAGaming
31783e60f5
Build: update node dependencies; commit package-lock.json
- Also ignore yarn.lock
Close gh-3669
2017-06-26 11:04:51 -04:00
Timmy Willison
febb441eb9
Build: Updating the master version to 3.2.2-pre. 2017-03-20 15:02:16 -04:00
Timmy Willison
f3bad5ba7d
Revert "Build: Updating the master version to 3.2.2-pre."
This reverts commit 066bd8681c.
2017-03-20 13:43:25 -04:00
Timmy Willison
066bd8681c
Build: Updating the master version to 3.2.2-pre. 2017-03-20 13:18:35 -04:00
Timmy Willison
a31111bdb4
Build: Updating the master version to 3.2.1-pre. 2017-03-16 17:30:59 -04:00
Timmy Willison
a7cf2f6944
Release: update version to 3.2.0-pre 2017-03-15 15:48:18 -04:00
Alexander Lisianoi
25c6a0a238 Build: fix markerPattern and ticketPattern regexes in package.json
Commit messages used to fail the style check if they contained a word
starting with "ref", like reformat or reference, in their message body.

Close gh-3437
Ref jzaefferer/commitplease#91
2017-01-09 11:45:30 -05:00
Timmy Willison
7fbab88110
Build: jQuery Foundation -> JS Foundation
Close gh-3414
2016-12-05 11:54:38 -05:00
Timmy Willison
f18ca7bfe0
Build: Updating the master version to 3.1.2-pre. 2016-09-22 18:32:55 -04:00
Michał Gołębiowski
2d4f53416e Build: Update promises-aplus-tests for compat with Node 7
The older promises-aplus-tests was relying on old Mocha that, in turn,
used an obsolete graceful-fs version that is not guaranteed to work fine
with the upcoming Node 7 and later.
2016-09-12 19:27:56 +02:00
Richard Gibson
cca2aa2254 Build: Update Sizzle to 2.3.3
Fixes gh-3263
2016-08-08 14:05:49 -04:00
Richard Gibson
6160523d30 Build: Update Sizzle to 2.3.2 2016-08-08 12:35:44 -04:00
Richard Gibson
9526557e67 Build: Update Sizzle to 2.3.1
Fixes gh-3224
2016-08-08 11:59:14 -04:00
Oleg Gaidarenko
308e4b534b Build: Simplify Gruntfile constructions
Fixes gh-3246
2016-08-02 20:58:01 +03:00
Alexander Lisianoi
04a2e036d0 Build: use commitplease via husky, prohibit #NNNN github-style tickets
Closes gh-3176
2016-07-25 18:27:36 +02:00
Oleg Gaidarenko
e4fd41f8fa Build: Update eslint config and fix associated errors 2016-07-15 21:42:25 +04:00
Michał Gołębiowski
96966c0220 Build: Upgrade ESLint to 3.x again
ESLint is now skipped in Node older than 4.x so we're safe.

Refs gh-3222
2016-07-13 10:54:34 +02:00
Oleg Gaidarenko
02c5e2908c Build: Don't use ESLint 3.x
Since it is not supported by older node versions :/
2016-07-09 02:05:15 +03:00
Oleg Gaidarenko
522f546d96 Build: More ESLint related changes 2016-07-09 00:49:43 +03:00
Timmy Willison
93f706200c
Build: Updating the master version to 3.1.1-pre. 2016-07-07 17:46:08 -04:00