diff --git a/.eslintrc.json b/.eslintrc.json
index 2fad9c7b..aed1eee0 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -11,7 +11,7 @@
"es6": true,
"node": true
},
- "plugins": ["prettier"],
+ "plugins": ["prettier", "react-hooks"],
"extends": ["airbnb", "plugin:prettier/recommended"],
"rules": {
"no-console": "off",
diff --git a/.gitignore b/.gitignore
index d6e12189..17838aa5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
*~
*.swp
-.nodecypherrc
+.nodecipherrc
node_modules
.idea
dist
diff --git a/.npmignore b/.npmignore
index 0db1c7b3..baffc020 100644
--- a/.npmignore
+++ b/.npmignore
@@ -3,3 +3,4 @@ test
.idea
.travis.yml
secure-src
+.nodecipherrc
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index d7442f94..90144370 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,4 +16,4 @@ jobs:
provider: script
skip_cleanup: true
script:
- - yarn semantic-release
+ - yarn semantic-release
\ No newline at end of file
diff --git a/manual/Website1/src/App.jsx b/manual/Website1/src/App.jsx
index 0847b468..413978c5 100755
--- a/manual/Website1/src/App.jsx
+++ b/manual/Website1/src/App.jsx
@@ -1,10 +1,6 @@
import React, { Component } from "react";
import {
ExternalComponent,
- corsImport,
- getChunkPath,
- getChunkDependencies,
- importDependenciesOf
} from "webpack-external-import";
import HelloWorld from "./components/goodbye-world";
import "react-select";
@@ -25,12 +21,6 @@ class App extends Component {
.then(() => __webpack_require__("TitleComponentWithCSSFile"))
}
- renderDynamic = () => {
- const { loaded } = this.state;
- if (!loaded) return null;
- return __webpack_require__("SomeExternalModule").default();
- };
-
render() {
return (
@@ -51,7 +41,6 @@ class App extends Component {
export="Title"
title="Title Component With CSS File Import"
/>
- {this.renderDynamic()}
);
}
diff --git a/manual/Website1/yarn.lock b/manual/Website1/yarn.lock
index ab9ab7aa..09711af9 100644
--- a/manual/Website1/yarn.lock
+++ b/manual/Website1/yarn.lock
@@ -2,7 +2,7 @@
# yarn lockfile v1
-"@babel/cli@^7.4.3":
+"@babel/cli@7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.7.7.tgz#56849acbf81d1a970dd3d1b3097c8ebf5da3f534"
integrity sha512-XQw5KyCZyu/M8/0rYiZyuwbgIQNzOrJzs9dDLX+MieSgBwTLvTj4QVbLmxJACAIvQIDT7PtyHN2sC48EOWTgaA==
@@ -25,7 +25,7 @@
dependencies:
"@babel/highlight" "^7.0.0"
-"@babel/core@^7.4.3":
+"@babel/core@7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9"
integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==
@@ -325,7 +325,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.7.4":
+"@babel/plugin-syntax-dynamic-import@7.7.4", "@babel/plugin-syntax-dynamic-import@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec"
integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==
@@ -598,7 +598,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-runtime@^7.5.0":
+"@babel/plugin-transform-runtime@7.7.6":
version "7.7.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61"
integrity sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==
@@ -653,7 +653,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/preset-env@^7.4.3":
+"@babel/preset-env@7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac"
integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==
@@ -710,7 +710,7 @@
js-levenshtein "^1.1.3"
semver "^5.5.0"
-"@babel/preset-react@^7.0.0":
+"@babel/preset-react@7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.4.tgz#3fe2ea698d8fb536d8e7881a592c3c1ee8bf5707"
integrity sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g==
@@ -1247,12 +1247,12 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-babel-core@^7.0.0-bridge.0:
+babel-core@7.0.0-bridge.0:
version "7.0.0-bridge.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
-babel-loader@^8.0.5:
+babel-loader@8.0.6:
version "8.0.6"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
@@ -2508,7 +2508,7 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-eslint-loader@^3.0.3:
+eslint-loader@3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca"
integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==
@@ -5045,7 +5045,7 @@ raw-body@2.4.0:
prop-types "^15.6.2"
scheduler "^0.13.6"
-react-hot-loader@^4.8.3:
+react-hot-loader@4.12.18:
version "4.12.18"
resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.18.tgz#a9029e34af2690d76208f9a35189d73c2dfea6a7"
integrity sha512-qYD0Qi9lIbg9jLyfmodfqvAQqCBsoPKxAhca8Nxvy2/2pO5Q9r2kM28jN0bbbSnhwK8dJ7FjsfVtXKOxMW+bqw==
@@ -6207,7 +6207,7 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
-webpack-cli@^3.3.0:
+webpack-cli@3.3.10:
version "3.3.10"
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13"
integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==
@@ -6235,7 +6235,7 @@ webpack-dev-middleware@^3.7.2:
range-parser "^1.2.1"
webpack-log "^2.0.0"
-webpack-dev-server@^3.2.1:
+webpack-dev-server@3.10.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e"
integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA==
@@ -6307,7 +6307,7 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^4.29.6:
+webpack@4.41.5:
version "4.41.5"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c"
integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==
@@ -6407,7 +6407,7 @@ write-file-atomic@^2.3.0:
imurmurhash "^0.1.4"
signal-exit "^3.0.2"
-write-file-webpack-plugin@^4.5.0:
+write-file-webpack-plugin@4.5.1:
version "4.5.1"
resolved "https://registry.yarnpkg.com/write-file-webpack-plugin/-/write-file-webpack-plugin-4.5.1.tgz#aeeb68889194da5ec8a864667d46da9e00ee92d5"
integrity sha512-AZ7qJUvhTCBiOtG21aFJUcNuLVo2FFM6JMGKvaUGAH+QDqQAp2iG0nq3GcuXmJOFQR2JjpjhyYkyPrbFKhdjNQ==
diff --git a/manual/Website2/package.json b/manual/Website2/package.json
index e84f9da2..4b37be04 100644
--- a/manual/Website2/package.json
+++ b/manual/Website2/package.json
@@ -15,6 +15,10 @@
"src/components/Title/index.js": "TitleComponent",
"src/components/hello-world/index.js": "SomeExternalModule"
},
+ "interleave": {
+ "src/components/Title/index.js": "TitleComponent",
+ "src/components/hello-world/index.js": "SomeExternalModule"
+ },
"devDependencies": {
"@babel/cli": "7.7.7",
"@babel/core": "7.7.7",
diff --git a/manual/webpack/webpack.dev.js b/manual/webpack/webpack.dev.js
index a3334077..8e318ceb 100755
--- a/manual/webpack/webpack.dev.js
+++ b/manual/webpack/webpack.dev.js
@@ -23,6 +23,7 @@ module.exports = commonPaths => ({
runtimeChunk: {
name: "webpackRuntime"
},
+ namedChunks: true,
splitChunks: {
chunks: "all",
maxInitialRequests: Infinity,
diff --git a/package.json b/package.json
index 39540b99..c78ab191 100644
--- a/package.json
+++ b/package.json
@@ -84,7 +84,7 @@
"eslint-plugin-jsx-a11y": "6.2.3",
"eslint-plugin-prettier": "3.1.2",
"eslint-plugin-react": "7.17.0",
- "eslint-plugin-react-hooks": "2.3.0",
+ "eslint-plugin-react-hooks": "^2.3.0",
"flow-bin": "0.117.0",
"html-webpack-plugin": "3.2.0",
"jest": "25.1.0",
diff --git a/src/webpack/beforeStartup.js b/src/webpack/beforeStartup.js
index dba30865..ea877985 100644
--- a/src/webpack/beforeStartup.js
+++ b/src/webpack/beforeStartup.js
@@ -7,10 +7,10 @@ export function addWebpackRegister(source) {
return Template.asString([
splitSource[0].replace(
- 'var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];',
+ `var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);`,
Template.asString([
- 'var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];',
- 'var webpackRegister = window["webpackRegister"] = window["webpackRegister"] || [];'
+ 'var webpackRegister = window["webpackRegister"] = window["webpackRegister"] || [];',
+ `var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);`
])
),
"jsonpArray.push = function(data) {",
diff --git a/src/webpack/index.js b/src/webpack/index.js
index 50d5053a..e4af2a85 100644
--- a/src/webpack/index.js
+++ b/src/webpack/index.js
@@ -4,6 +4,7 @@ const createHash = require("webpack/lib/util/createHash");
// const FunctionModuleTemplatePlugin = require("webpack/lib/FunctionModuleTemplatePlugin");
const fs = require("fs");
const { mergeDeep } = require("./utils");
+
const {
addInterleaveExtention,
addInterleaveRequire
@@ -539,10 +540,9 @@ class URLImportPlugin {
// webpack does this and its how code splitting works. It exposes window.webpackJsonP
// This registration system works just like webpacks, it exposes a function that allows information to be passed
// into webpack runtime, because the function is in webpack runtime, i have access to all of webpacks internals
- mainTemplate.hooks.beforeStartup.tap(
- "URLImportPlugin",
- addWebpackRegister
- );
+ mainTemplate.hooks.beforeStartup.tap("URLImportPlugin", source => {
+ return addWebpackRegister(source, options.output.jsonpFunction);
+ });
// add variables to webpack runtime which are available throughout all functions and closures within the runtime
// localVars are like global variables for webpack, anything can access them.
diff --git a/yarn.lock b/yarn.lock
index e32c7045..fc4eeaf2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4401,7 +4401,7 @@ eslint-plugin-prettier@3.1.2:
dependencies:
prettier-linter-helpers "^1.0.0"
-eslint-plugin-react-hooks@2.3.0:
+eslint-plugin-react-hooks@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.3.0.tgz#53e073961f1f5ccf8dd19558036c1fac8c29d99a"
integrity sha512-gLKCa52G4ee7uXzdLiorca7JIQZPPXRAQDXV83J4bUEeUuc5pIEyZYAZ45Xnxe5IuupxEqHS+hUhSLIimK1EMw==