Replace amd-inject-loader with inject-loader & use Babel trick for ES6 support

[MAILPOET-1829]
This commit is contained in:
Jan Jakeš
2019-02-20 17:22:09 +01:00
committed by M. Shull
parent 112d780de5
commit 1e1ed6f251
7 changed files with 316 additions and 47 deletions

View File

@ -1,6 +0,0 @@
var amdInjectLoader = require('amd-inject-loader');
// fix original 'amd-inject-loader' for Webpack 4 by adding missing 'options' field to its context
module.exports = function amdInjectLoaderFixed(input) {
return amdInjectLoader.call(Object.assign({}, this, { options: {} }), input);
};

292
package-lock.json generated
View File

@ -1585,9 +1585,6 @@
"integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
"dev": true
},
"WP-JS-Hooks": {
"version": "github:carldanley/WP-JS-Hooks#36b53ee6a56de37849456b67205c9784a00118b1"
},
"abab": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
@ -1684,12 +1681,6 @@
"resolved": "https://registry.npmjs.org/almond/-/almond-0.3.3.tgz",
"integrity": "sha1-oOfJWsdiTWQXtElLHmi/9pMWiiA="
},
"amd-inject-loader": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/amd-inject-loader/-/amd-inject-loader-0.5.0.tgz",
"integrity": "sha1-3ehbGm/5tA/pI1sJHhhTk1lgeCw=",
"dev": true
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
@ -2002,6 +1993,79 @@
"ast-types-flow": "0.0.7"
}
},
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "1.1.3",
"esutils": "2.0.2",
"js-tokens": "3.0.2"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
}
},
"babel-core": {
"version": "6.26.3",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
"dev": true,
"requires": {
"babel-code-frame": "6.26.0",
"babel-generator": "6.26.1",
"babel-helpers": "6.24.1",
"babel-messages": "6.23.0",
"babel-register": "6.26.0",
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"convert-source-map": "1.5.1",
"debug": "2.6.9",
"json5": "0.5.1",
"lodash": "4.17.10",
"minimatch": "3.0.4",
"path-is-absolute": "1.0.1",
"private": "0.1.8",
"slash": "1.0.0",
"source-map": "0.5.7"
},
"dependencies": {
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
}
}
},
"babel-eslint": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz",
@ -2016,6 +2080,46 @@
"eslint-visitor-keys": "1.0.0"
}
},
"babel-generator": {
"version": "6.26.1",
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
"integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
"dev": true,
"requires": {
"babel-messages": "6.23.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"detect-indent": "4.0.0",
"jsesc": "1.3.0",
"lodash": "4.17.10",
"source-map": "0.5.7",
"trim-right": "1.0.1"
},
"dependencies": {
"jsesc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
}
}
},
"babel-helpers": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
"integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
"babel-template": "6.26.0"
}
},
"babel-loader": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.4.tgz",
@ -2028,6 +2132,142 @@
"util.promisify": "1.0.0"
}
},
"babel-messages": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-commonjs": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-commonjs/-/babel-plugin-transform-commonjs-1.1.4.tgz",
"integrity": "sha512-PT8GANopcpBlRyI+vHmVjJx8aIwFDhtYHvCxCS2zhw2hO6nHpblHXIcCyLH9t2NtPXEhZNWxYvEDBI9tAQ2Iug==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "7.0.0"
}
},
"babel-register": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
"dev": true,
"requires": {
"babel-core": "6.26.3",
"babel-runtime": "6.26.0",
"core-js": "2.6.5",
"home-or-tmp": "2.0.0",
"lodash": "4.17.10",
"mkdirp": "0.5.1",
"source-map-support": "0.4.18"
},
"dependencies": {
"core-js": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz",
"integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==",
"dev": true
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
},
"source-map-support": {
"version": "0.4.18",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
"dev": true,
"requires": {
"source-map": "0.5.7"
}
}
}
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
"core-js": "2.6.5",
"regenerator-runtime": "0.11.1"
},
"dependencies": {
"core-js": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz",
"integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==",
"dev": true
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
"dev": true
}
}
},
"babel-template": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"lodash": "4.17.10"
}
},
"babel-traverse": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
"dev": true,
"requires": {
"babel-code-frame": "6.26.0",
"babel-messages": "6.23.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"debug": "2.6.9",
"globals": "9.18.0",
"invariant": "2.2.2",
"lodash": "4.17.10"
},
"dependencies": {
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"dev": true
}
}
},
"babel-types": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
"esutils": "2.0.2",
"lodash": "4.17.10",
"to-fast-properties": "1.0.3"
}
},
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
"dev": true
},
"backbone": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/backbone/-/backbone-1.3.3.tgz",
@ -3124,6 +3364,15 @@
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true
},
"detect-indent": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
"dev": true,
"requires": {
"repeating": "2.0.1"
}
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
@ -5333,6 +5582,16 @@
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
"integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
},
"home-or-tmp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
"integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
"dev": true,
"requires": {
"os-homedir": "1.0.2",
"os-tmpdir": "1.0.2"
}
},
"homedir-polyfill": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
@ -5621,6 +5880,15 @@
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true
},
"inject-loader": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-4.0.1.tgz",
"integrity": "sha512-fUFtHkso2AnzQyyJjuGuDYL0mW2EIQUlS4MgXXmCIRjVLyDk3oXGJqNcSTUg6DGs1q4gvqVIWsxfmPKxF44xfw==",
"dev": true,
"requires": {
"babel-core": "6.26.3"
}
},
"inquirer": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz",
@ -9568,6 +9836,12 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
"to-fast-properties": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
},
"to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",

View File

@ -61,10 +61,10 @@
"@babel/plugin-transform-runtime": "^7.2.0",
"@babel/preset-env": "^7.2.0",
"@babel/preset-react": "^7.0.0",
"amd-inject-loader": "~0.5.0",
"autoprefixer": "~9.4.8",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.4",
"babel-plugin-transform-commonjs": "^1.1.4",
"chai": "2.2.0",
"chai-jq": "0.0.8",
"clean-webpack-plugin": "^1.0.0",
@ -80,6 +80,7 @@
"expose-loader": "^0.7.5",
"grunt-cli": "~1.2.0",
"imports-loader": "~0.7.1",
"inject-loader": "^4.0.1",
"install": "^0.12.2",
"jsdom": "^11.12.0",
"json-loader": "^0.5.7",

View File

@ -6,9 +6,11 @@ const jQuery = global.jQuery;
import App from 'newsletter_editor/App';
import AutomatedLatestContentBlock from 'newsletter_editor/blocks/automatedLatestContent';
import ContainerBlock from 'newsletter_editor/blocks/container';
import AutomatedLatestContentInjector from 'amd-inject-loader!newsletter_editor/blocks/automatedLatestContent';
import Communication from 'newsletter_editor/components/communication';
/* eslint-disable-next-line max-len (ES6 -> CommonJS transform needed for inject-loader) */
import AutomatedLatestContentInjector from 'inject-loader!babel-loader?plugins[]=@babel/plugin-transform-modules-commonjs!newsletter_editor/blocks/automatedLatestContent';
var EditorApplication = App;
var CommunicationComponent = Communication;
@ -31,7 +33,7 @@ import Communication from 'newsletter_editor/components/communication';
'newsletter_editor/components/communication': {
getBulkTransformedPosts: mock
}
});
}).default;
model = new module.ALCSupervisor();
model.refresh();
@ -361,7 +363,7 @@ import Communication from 'newsletter_editor/components/communication';
return jQuery.Deferred();
}
}
});
}).default;
});
before(function () {

View File

@ -4,7 +4,9 @@ const sinon = global.sinon;
import EditorApplication from 'newsletter_editor/App';
import Communication from 'newsletter_editor/components/communication';
import CommunicationInjector from 'amd-inject-loader!newsletter_editor/components/communication';
/* eslint-disable-next-line max-len (ES6 -> CommonJS transform needed for inject-loader) */
import CommunicationInjector from 'inject-loader!babel-loader?plugins[]=@babel/plugin-transform-modules-commonjs!newsletter_editor/components/communication';
describe('getPostTypes', function () {
it('fetches post types from the server', function () {
@ -23,7 +25,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
}
}
}
});
}).default;
module.getPostTypes().done(function (types) {
expect(types).to.eql(['val1', 'val2']);
});
@ -38,7 +40,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: mock
}
}
});
}).default;
deferred.resolve({
post: 'val1',
page: 'val2'
@ -69,7 +71,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: spy
}
}
});
}).default;
module.getTaxonomies('post');
expect(spy.args[0][0].data.postType).to.equal('post');
@ -90,7 +92,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
}
}
}
});
}).default;
module.getTaxonomies('page').done(function (types) {
expect(types).to.eql({ category: 'val1' });
});
@ -105,7 +107,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: mock
}
}
});
}).default;
deferred.resolve({ category: 'val1' });
module.getTaxonomies('page');
module.getTaxonomies('page');
@ -130,7 +132,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: spy
}
}
});
}).default;
module.getTerms({
taxonomies: ['category', 'post_tag']
@ -154,7 +156,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
}
}
}
});
}).default;
module.getTerms({ taxonomies: ['category'] }).done(function (types) {
expect(types).to.eql({ term1: 'term1val1', term2: 'term2val2' });
});
@ -169,7 +171,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: mock
}
}
});
}).default;
deferred.resolve({ term1: 'term1val1', term2: 'term2val2' });
module.getTerms({ taxonomies: ['category'] });
module.getTerms({ taxonomies: ['category'] });
@ -194,7 +196,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: spy
}
}
});
}).default;
module.getPosts({
type: 'posts',
@ -222,7 +224,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
}
}
}
});
}).default;
module.getPosts().done(function (posts) {
expect(posts).to.eql([{ post_title: 'title 1' }, { post_title: 'post title 2' }]);
});
@ -237,7 +239,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: mock
}
}
});
}).default;
deferred.resolve({
type: 'posts',
search: 'some search term'
@ -265,7 +267,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: spy
}
}
});
}).default;
module.getTransformedPosts({
type: 'posts',
@ -293,7 +295,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
}
}
}
});
}).default;
module.getTransformedPosts().done(function (posts) {
expect(posts).to.eql([{ type: 'text', text: 'something' }, { type: 'text', text: 'something else' }]);
});
@ -308,7 +310,7 @@ import CommunicationInjector from 'amd-inject-loader!newsletter_editor/component
post: mock
}
}
});
}).default;
deferred.resolve({
type: 'posts',
posts: [1, 3]

View File

@ -3,9 +3,11 @@ const sinon = global.sinon;
import App from 'newsletter_editor/App';
import SaveComponent from 'newsletter_editor/components/save';
import SaveInjector from 'amd-inject-loader!newsletter_editor/components/save';
import jQuery from 'jquery';
/* eslint-disable-next-line max-len (ES6 -> CommonJS transform needed for inject-loader) */
import SaveInjector from 'inject-loader!babel-loader?plugins[]=@babel/plugin-transform-modules-commonjs!newsletter_editor/components/save';
var EditorApplication = App;
describe('Save', function () {
@ -18,7 +20,7 @@ import jQuery from 'jquery';
return jQuery.Deferred();
}
}
});
}).default;
});
it('triggers beforeEditorSave event', function () {
@ -52,7 +54,7 @@ import jQuery from 'jquery';
'newsletter_editor/components/communication': {
saveNewsletter: sinon.stub().returns(promise)
}
});
}).default;
promise.resolve({ success: true });
innerModule.save();
expect(spy.withArgs('afterEditorSave').calledOnce).to.be.true;// eslint-disable-line no-unused-expressions
@ -64,7 +66,7 @@ import jQuery from 'jquery';
'newsletter_editor/components/communication': {
saveNewsletter: mock
}
});
}).default;
global.stubChannel(EditorApplication);
EditorApplication.toJSON = sinon.stub().returns({});
@ -91,7 +93,7 @@ import jQuery from 'jquery';
'newsletter_editor/components/communication': {
saveNewsletter: mock
}
});
}).default;
innerModule.save();
mock.verify();
@ -210,7 +212,7 @@ import jQuery from 'jquery';
return promiseMock;
}
}
});
}).default;
view = new (module.SaveView)();
view.render();
@ -229,7 +231,7 @@ import jQuery from 'jquery';
return jQuery.Deferred();
}
}
});
}).default;
global.stubChannel(EditorApplication, {
trigger: spy
});

View File

@ -396,12 +396,6 @@ const testConfig = {
'wp-js-hooks': 'WP-JS-Hooks/src/event-manager.js',
},
},
resolveLoader: {
alias: {
// replace 'amd-inject-loader' with a wrapper fixed for Webpack 4
'amd-inject-loader': path.join(__dirname, 'assets/js/src/amd-inject-loader-fixed.js'),
}
},
externals: {
'jquery': 'jQuery',
'tinymce': 'tinymce',