diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml
index 4a01fde81..3dceefbac 100644
--- a/.github/workflows/push.yml
+++ b/.github/workflows/push.yml
@@ -17,7 +17,7 @@ jobs:
run: yarn build
- name: install typescript
- run: yarn add typescript@4.0.3
+ run: yarn add typescript@4.1.2
- name: test
run: sudo yarn comparison-tests
@@ -44,7 +44,7 @@ jobs:
working-directory: C:\source\ts-loader
- name: install typescript
- run: yarn add typescript@4.0.3
+ run: yarn add typescript@4.1.2
working-directory: C:\source\ts-loader
- name: test
@@ -57,7 +57,7 @@ jobs:
matrix:
os: [ubuntu, windows]
node: [10, 12, 14]
- ts: [3.6.5, 3.7.5, 3.8.3, 3.9.3, 4.0.3, next]
+ ts: [3.6.5, 3.7.5, 3.8.3, 3.9.3, 4.0.3, 4.1.2, next]
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@v2
diff --git a/.travis.yml b/.travis.yml
index 96773a0bb..afcaf7a38 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,8 +14,9 @@ install:
- yarn lint
- yarn add $TYPESCRIPT
env:
- - TYPESCRIPT=typescript@4.0.3
+ - TYPESCRIPT=typescript@4.1.2
- TYPESCRIPT=typescript@next
+ - TYPESCRIPT=typescript@4.0.3
- TYPESCRIPT=typescript@3.9.3
- TYPESCRIPT=typescript@3.8.2
- TYPESCRIPT=typescript@3.7.4
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-4.1/bundle.js b/test/comparison-tests/aliasResolution/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..02dd408f1
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar myComponent = __webpack_require__(/*! components/myComponent */ \"./common/components/myComponent.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/components/myComponent.ts":
+/*!******************************************!*\
+ !*** ./common/components/myComponent.ts ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'myComponent';\n\n\n//# sourceURL=webpack:///./common/components/myComponent.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-4.1/output.txt b/test/comparison-tests/aliasResolution/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..c0da8c1a3
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-4.1/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 120 bytes {main} [built] [1 error]
+[./common/components/myComponent.ts] 46 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(2,31)[39m[22m
+[1m[31m TS2307: Cannot find module 'components/myComponent2' or its corresponding type declarations.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/aliasResolution/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..9ee46fa6a
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar myComponent = __webpack_require__(/*! components/myComponent */ \"./common/components/myComponent.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/components/myComponent.ts":
+/*!******************************************!*\
+ !*** ./common/components/myComponent.ts ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'changed it';\n\n\n//# sourceURL=webpack:///./common/components/myComponent.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/aliasResolution/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..bf0ca3fd3
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 120 bytes {main} [built] [1 error]
+[./common/components/myComponent.ts] 45 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(2,31)[39m[22m
+[1m[31m TS2307: Cannot find module 'components/myComponent2' or its corresponding type declarations.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4bcb44dd6
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar myComponent = __webpack_require__(/*! components/myComponent */ \"./common/components/myComponent.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/components/myComponent.ts":
+/*!******************************************!*\
+ !*** ./common/components/myComponent.ts ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'myComponent';\n\n\n//# sourceURL=webpack:///./common/components/myComponent.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..52173a13f
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 156 bytes {main} [built]
+[./common/components/myComponent.ts] 46 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..34251a6bd
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar myComponent = __webpack_require__(/*! components/myComponent */ \"./common/components/myComponent.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/components/myComponent.ts":
+/*!******************************************!*\
+ !*** ./common/components/myComponent.ts ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'changed it';\n\n\n//# sourceURL=webpack:///./common/components/myComponent.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..179bf18e1
--- /dev/null
+++ b/test/comparison-tests/aliasResolution/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 156 bytes {main}
+[./common/components/myComponent.ts] 45 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-4.1/bundle.js b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..7a2725d4e
--- /dev/null
+++ b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("console.log('working');\n\n\n//# sourceURL=webpack:///./src/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-4.1/output.txt b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..debec2de1
--- /dev/null
+++ b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./src/index.js] 24 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..7a2725d4e
--- /dev/null
+++ b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("console.log('working');\n\n\n//# sourceURL=webpack:///./src/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..debec2de1
--- /dev/null
+++ b/test/comparison-tests/allowJs-entryFileIsJs/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./src/index.js] 24 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-ts-check/expectedOutput-4.1/bundle.js b/test/comparison-tests/allowJs-ts-check/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..60827c69b
--- /dev/null
+++ b/test/comparison-tests/allowJs-ts-check/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/error1.js":
+/*!***********************!*\
+ !*** ./src/error1.js ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Class1 = void 0;\nvar Class1 = /** @class */ (function () {\n function Class1() {\n }\n Class1.prototype.foo = function () {\n this.bar;\n };\n return Class1;\n}());\nexports.Class1 = Class1;\n\n\n//# sourceURL=webpack:///./src/error1.js?");
+
+/***/ }),
+
+/***/ "./src/error2.js":
+/*!***********************!*\
+ !*** ./src/error2.js ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Class2 = void 0;\n// @ts-check\nvar Class2 = /** @class */ (function () {\n function Class2() {\n }\n Class2.prototype.foo = function () {\n this.bar;\n };\n return Class2;\n}());\nexports.Class2 = Class2;\n\n\n//# sourceURL=webpack:///./src/error2.js?");
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar error1_1 = __webpack_require__(/*! ./error1 */ \"./src/error1.js\");\nvar error2_1 = __webpack_require__(/*! ./error2 */ \"./src/error2.js\");\nnew error1_1.Class1().foo();\nnew error2_1.Class2().foo();\n\n\n//# sourceURL=webpack:///./src/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-ts-check/expectedOutput-4.1/output.txt b/test/comparison-tests/allowJs-ts-check/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..c978f9feb
--- /dev/null
+++ b/test/comparison-tests/allowJs-ts-check/expectedOutput-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5.2 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./src/error1.js] 290 bytes {main} [built]
+[./src/error2.js] 303 bytes {main} [built] [1 error]
+[./src/index.js] 207 bytes {main} [built]
+
+ERROR in src/error2.js
+./src/error2.js
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36msrc/error2.js(4,10)[39m[22m
+[1m[31m TS2339: Property 'bar' does not exist on type 'Class2'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-ts-check/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/allowJs-ts-check/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..60827c69b
--- /dev/null
+++ b/test/comparison-tests/allowJs-ts-check/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/error1.js":
+/*!***********************!*\
+ !*** ./src/error1.js ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Class1 = void 0;\nvar Class1 = /** @class */ (function () {\n function Class1() {\n }\n Class1.prototype.foo = function () {\n this.bar;\n };\n return Class1;\n}());\nexports.Class1 = Class1;\n\n\n//# sourceURL=webpack:///./src/error1.js?");
+
+/***/ }),
+
+/***/ "./src/error2.js":
+/*!***********************!*\
+ !*** ./src/error2.js ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Class2 = void 0;\n// @ts-check\nvar Class2 = /** @class */ (function () {\n function Class2() {\n }\n Class2.prototype.foo = function () {\n this.bar;\n };\n return Class2;\n}());\nexports.Class2 = Class2;\n\n\n//# sourceURL=webpack:///./src/error2.js?");
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar error1_1 = __webpack_require__(/*! ./error1 */ \"./src/error1.js\");\nvar error2_1 = __webpack_require__(/*! ./error2 */ \"./src/error2.js\");\nnew error1_1.Class1().foo();\nnew error2_1.Class2().foo();\n\n\n//# sourceURL=webpack:///./src/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/allowJs-ts-check/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/allowJs-ts-check/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..bc8ac528e
--- /dev/null
+++ b/test/comparison-tests/allowJs-ts-check/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5.2 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./src/error1.js] 290 bytes {main} [built]
+[./src/error2.js] 303 bytes {main} [built]
+[./src/index.js] 207 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixTo/expectedOutput-4.1/bundle.js b/test/comparison-tests/appendSuffixTo/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..9b5d280a3
--- /dev/null
+++ b/test/comparison-tests/appendSuffixTo/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./index.vue");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./component.vue":
+/*!***********************!*\
+ !*** ./component.vue ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports[\"default\"] = {\n data: function () {\n return {\n msg: \"component\"\n };\n }\n};\n\n\n//# sourceURL=webpack:///./component.vue?");
+
+/***/ }),
+
+/***/ "./helper.ts":
+/*!*******************!*\
+ !*** ./helper.ts ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.myMethod = void 0;\nfunction myMethod() {\n console.log('from helper!');\n}\nexports.myMethod = myMethod;\n\n\n//# sourceURL=webpack:///./helper.ts?");
+
+/***/ }),
+
+/***/ "./index.vue":
+/*!*******************!*\
+ !*** ./index.vue ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar component_vue_1 = __webpack_require__(/*! ./component.vue */ \"./component.vue\");\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./helper.ts\");\nexports[\"default\"] = {\n components: { component: component_vue_1[\"default\"] },\n data: function () {\n return {\n msg: \"world\"\n };\n },\n method: {\n myMethod: helper_1.myMethod\n }\n};\n\n\n//# sourceURL=webpack:///./index.vue?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixTo/expectedOutput-4.1/output.txt b/test/comparison-tests/appendSuffixTo/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..df193ab5e
--- /dev/null
+++ b/test/comparison-tests/appendSuffixTo/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5.03 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./component.vue] 154 bytes {main} [built]
+[./helper.ts] 154 bytes {main} [built]
+[./index.vue] 352 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixTo/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/appendSuffixTo/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..7342fe682
--- /dev/null
+++ b/test/comparison-tests/appendSuffixTo/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./index.vue");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./component.vue":
+/*!***********************!*\
+ !*** ./component.vue ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = {\n data: function () {\n return {\n msg: \"component\"\n };\n }\n};\n\n\n//# sourceURL=webpack:///./component.vue?");
+
+/***/ }),
+
+/***/ "./helper.ts":
+/*!*******************!*\
+ !*** ./helper.ts ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.myMethod = void 0;\nfunction myMethod() {\n console.log('from helper!');\n}\nexports.myMethod = myMethod;\n\n\n//# sourceURL=webpack:///./helper.ts?");
+
+/***/ }),
+
+/***/ "./index.vue":
+/*!*******************!*\
+ !*** ./index.vue ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_vue_1 = __webpack_require__(/*! ./component.vue */ \"./component.vue\");\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./helper.ts\");\nexports.default = {\n components: { component: component_vue_1.default },\n data: function () {\n return {\n msg: \"world\"\n };\n },\n method: {\n myMethod: helper_1.myMethod\n }\n};\n\n\n//# sourceURL=webpack:///./index.vue?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixTo/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/appendSuffixTo/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..321095028
--- /dev/null
+++ b/test/comparison-tests/appendSuffixTo/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5.13 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./component.vue] 187 bytes {main} [built]
+[./helper.ts] 190 bytes {main} [built]
+[./index.vue] 382 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/bundle.entry1.js b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/bundle.entry1.js
new file mode 100644
index 000000000..ba42f5993
--- /dev/null
+++ b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/bundle.entry1.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./entry1.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./entry1.ts":
+/*!*******************!*\
+ !*** ./entry1.ts ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("console.log('banana');\n\n\n//# sourceURL=webpack:///./entry1.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/bundle.entry2.js b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/bundle.entry2.js
new file mode 100644
index 000000000..63c756585
--- /dev/null
+++ b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/bundle.entry2.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./entry2.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./component.vue":
+/*!***********************!*\
+ !*** ./component.vue ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports[\"default\"] = \"some value\";\n\n\n//# sourceURL=webpack:///./component.vue?");
+
+/***/ }),
+
+/***/ "./entry2.ts":
+/*!*******************!*\
+ !*** ./entry2.ts ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar component_vue_1 = __webpack_require__(/*! ./component.vue */ \"./component.vue\");\nconsole.log(component_vue_1[\"default\"]);\n\n\n//# sourceURL=webpack:///./entry2.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..bdc1dc671
--- /dev/null
+++ b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,8 @@
+ Asset Size Chunks Chunk Names
+bundle.entry1.js 3.78 KiB entry1 [emitted] entry1
+bundle.entry2.js 4.29 KiB entry2 [emitted] entry2
+Entrypoint entry1 = bundle.entry1.js
+Entrypoint entry2 = bundle.entry2.js
+[./component.vue] 76 bytes {entry2} [built]
+[./entry1.ts] 23 bytes {entry1} [built]
+[./entry2.ts] 132 bytes {entry2} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/patch0/bundle.entry1.js b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/patch0/bundle.entry1.js
new file mode 100644
index 000000000..9e8bbeb9a
--- /dev/null
+++ b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/patch0/bundle.entry1.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./entry1.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./entry1.ts":
+/*!*******************!*\
+ !*** ./entry1.ts ***!
+ \*******************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("console.log('something!');\n\n\n//# sourceURL=webpack:///./entry1.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..06e6f0dfe
--- /dev/null
+++ b/test/comparison-tests/appendSuffixToWatch/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,8 @@
+ Asset Size Chunks Chunk Names
+bundle.entry1.js 3.78 KiB entry1 [emitted] entry1
+bundle.entry2.js 4.29 KiB entry2 entry2
+Entrypoint entry1 = bundle.entry1.js
+Entrypoint entry2 = bundle.entry2.js
+[./component.vue] 76 bytes {entry2}
+[./entry1.ts] 27 bytes {entry1} [built]
+[./entry2.ts] 132 bytes {entry2}
\ No newline at end of file
diff --git a/test/comparison-tests/babel-es6resolveParent/expectedOutput-4.1/bundle.js b/test/comparison-tests/babel-es6resolveParent/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..172f02325
--- /dev/null
+++ b/test/comparison-tests/babel-es6resolveParent/expectedOutput-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./index.tsx");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./index.tsx":
+/*!*******************!*\
+ !*** ./index.tsx ***!
+ \*******************/
+/*! exports provided: BaseComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseComponent\", function() { return BaseComponent; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseComponent = function BaseComponent() {\n _classCallCheck(this, BaseComponent);\n};\n\n//# sourceURL=webpack:///./index.tsx?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/babel-es6resolveParent/expectedOutput-4.1/output.txt b/test/comparison-tests/babel-es6resolveParent/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..10cdd525e
--- /dev/null
+++ b/test/comparison-tests/babel-es6resolveParent/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.22 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./index.tsx] 251 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/babel-es6resolveParent/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/babel-es6resolveParent/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..172f02325
--- /dev/null
+++ b/test/comparison-tests/babel-es6resolveParent/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./index.tsx");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./index.tsx":
+/*!*******************!*\
+ !*** ./index.tsx ***!
+ \*******************/
+/*! exports provided: BaseComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseComponent\", function() { return BaseComponent; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseComponent = function BaseComponent() {\n _classCallCheck(this, BaseComponent);\n};\n\n//# sourceURL=webpack:///./index.tsx?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/babel-es6resolveParent/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/babel-es6resolveParent/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..10cdd525e
--- /dev/null
+++ b/test/comparison-tests/babel-es6resolveParent/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.22 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./index.tsx] 251 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue81/expectedOutput-4.1/bundle.js b/test/comparison-tests/babel-issue81/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..6d304b239
--- /dev/null
+++ b/test/comparison-tests/babel-issue81/expectedOutput-4.1/bundle.js
@@ -0,0 +1,119 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./a.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var __decorate = this && this.__decorate || function (decorators, target, key, desc) {
+ var c = arguments.length,
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
+ d;
+ if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
+ if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ }return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+function bar(target) {
+ return target;
+}
+var Foo = function Foo() {
+ _classCallCheck(this, Foo);
+};
+Foo = __decorate([bar], Foo);
+
+/***/ })
+
+/******/ });
+//# sourceMappingURL=bundle.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue81/expectedOutput-4.1/bundle.js.map b/test/comparison-tests/babel-issue81/expectedOutput-4.1/bundle.js.map
new file mode 100644
index 000000000..eb6d8fc44
--- /dev/null
+++ b/test/comparison-tests/babel-issue81/expectedOutput-4.1/bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./a.ts"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;ACjFA,SAAY,IAAY;AACpB,WACJ;AAAC;AAGD;AAEC;;AAFQ,kBADL,MAGH,K","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./a.ts\");\n","\nfunction bar(target: any) {\n return target;\n}\n\n@bar\nclass Foo {\n \n}"],"sourceRoot":""}
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue81/expectedOutput-4.1/output.txt b/test/comparison-tests/babel-issue81/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..e03c35628
--- /dev/null
+++ b/test/comparison-tests/babel-issue81/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.89 KiB main [emitted] main
+bundle.js.map 3.7 KiB main [emitted] [dev] main
+Entrypoint main = bundle.js bundle.js.map
+[./a.ts] 1.18 KiB {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..6d304b239
--- /dev/null
+++ b/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,119 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./a.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var __decorate = this && this.__decorate || function (decorators, target, key, desc) {
+ var c = arguments.length,
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
+ d;
+ if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
+ if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ }return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+function bar(target) {
+ return target;
+}
+var Foo = function Foo() {
+ _classCallCheck(this, Foo);
+};
+Foo = __decorate([bar], Foo);
+
+/***/ })
+
+/******/ });
+//# sourceMappingURL=bundle.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/bundle.js.map b/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/bundle.js.map
new file mode 100644
index 000000000..eb6d8fc44
--- /dev/null
+++ b/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./a.ts"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;ACjFA,SAAY,IAAY;AACpB,WACJ;AAAC;AAGD;AAEC;;AAFQ,kBADL,MAGH,K","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./a.ts\");\n","\nfunction bar(target: any) {\n return target;\n}\n\n@bar\nclass Foo {\n \n}"],"sourceRoot":""}
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..e03c35628
--- /dev/null
+++ b/test/comparison-tests/babel-issue81/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.89 KiB main [emitted] main
+bundle.js.map 3.7 KiB main [emitted] [dev] main
+Entrypoint main = bundle.js bundle.js.map
+[./a.ts] 1.18 KiB {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue92/expectedOutput-4.1/bundle.js b/test/comparison-tests/babel-issue92/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..e6b3d92e4
--- /dev/null
+++ b/test/comparison-tests/babel-issue92/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _submodule_submodule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.tsx\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_submodule_submodule__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.tsx":
+/*!*********************************!*\
+ !*** ./submodule/submodule.tsx ***!
+ \*********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"Hello from submodule\");\n\n//# sourceURL=webpack:///./submodule/submodule.tsx?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue92/expectedOutput-4.1/output.txt b/test/comparison-tests/babel-issue92/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..d703f9d74
--- /dev/null
+++ b/test/comparison-tests/babel-issue92/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.58 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 72 bytes {main} [built]
+[./submodule/submodule.tsx] 38 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue92/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/babel-issue92/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..e6b3d92e4
--- /dev/null
+++ b/test/comparison-tests/babel-issue92/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _submodule_submodule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.tsx\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_submodule_submodule__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.tsx":
+/*!*********************************!*\
+ !*** ./submodule/submodule.tsx ***!
+ \*********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"Hello from submodule\");\n\n//# sourceURL=webpack:///./submodule/submodule.tsx?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/babel-issue92/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/babel-issue92/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..d703f9d74
--- /dev/null
+++ b/test/comparison-tests/babel-issue92/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.58 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 72 bytes {main} [built]
+[./submodule/submodule.tsx] 38 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-4.1/bundle.js b/test/comparison-tests/basic/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1780017e3
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-4.1/output.txt b/test/comparison-tests/basic/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..f33d2f14a
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main} [built]
+[./submodule/submodule.ts] 149 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/basic/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..69c4dcc59
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething2(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/basic/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..9fac8da0d
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 170 bytes {main} [built] [1 error]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,13)[39m[22m
+[1m[31m TS2551: Property 'doSomething2' does not exist on type 'typeof externalLib'. Did you mean 'doSomething'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/basic/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..1780017e3
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/basic/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..1afd1cf5f
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/basic/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..05355f590
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/basic/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..77bfaf8ba
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.87 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main} [built]
+[./submodule/submodule.ts] 149 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..8cc47b54f
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething2(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..82749e570
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.87 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 206 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..05355f590
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..1d7ef7e16
--- /dev/null
+++ b/test/comparison-tests/basic/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.87 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/codeSplitting/expectedOutput-4.1/0.bundle.js b/test/comparison-tests/codeSplitting/expectedOutput-4.1/0.bundle.js
new file mode 100644
index 000000000..12682a0b5
--- /dev/null
+++ b/test/comparison-tests/codeSplitting/expectedOutput-4.1/0.bundle.js
@@ -0,0 +1,27 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{
+
+/***/ "./c.ts":
+/*!**************!*\
+ !*** ./c.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'c';\n\n\n//# sourceURL=webpack:///./c.ts?");
+
+/***/ }),
+
+/***/ "./d.ts":
+/*!**************!*\
+ !*** ./d.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'd';\n\n\n//# sourceURL=webpack:///./d.ts?");
+
+/***/ })
+
+}]);
\ No newline at end of file
diff --git a/test/comparison-tests/codeSplitting/expectedOutput-4.1/bundle.js b/test/comparison-tests/codeSplitting/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..fdd55dcd7
--- /dev/null
+++ b/test/comparison-tests/codeSplitting/expectedOutput-4.1/bundle.js
@@ -0,0 +1,240 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1];
+/******/
+/******/
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ };
+/******/
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ // Promise = chunk loading, 0 = chunk loaded
+/******/ var installedChunks = {
+/******/ "main": 0
+/******/ };
+/******/
+/******/
+/******/
+/******/ // script path function
+/******/ function jsonpScriptSrc(chunkId) {
+/******/ return __webpack_require__.p + "" + chunkId + ".bundle.js"
+/******/ }
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/ // This file contains only the entry chunk.
+/******/ // The chunk loading function for additional chunks
+/******/ __webpack_require__.e = function requireEnsure(chunkId) {
+/******/ var promises = [];
+/******/
+/******/
+/******/ // JSONP chunk loading for javascript
+/******/
+/******/ var installedChunkData = installedChunks[chunkId];
+/******/ if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ // a Promise means "currently loading".
+/******/ if(installedChunkData) {
+/******/ promises.push(installedChunkData[2]);
+/******/ } else {
+/******/ // setup Promise in chunk cache
+/******/ var promise = new Promise(function(resolve, reject) {
+/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ });
+/******/ promises.push(installedChunkData[2] = promise);
+/******/
+/******/ // start chunk loading
+/******/ var script = document.createElement('script');
+/******/ var onScriptComplete;
+/******/
+/******/ script.charset = 'utf-8';
+/******/ script.timeout = 120;
+/******/ if (__webpack_require__.nc) {
+/******/ script.setAttribute("nonce", __webpack_require__.nc);
+/******/ }
+/******/ script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ // create error before stack unwound to get useful stacktrace later
+/******/ var error = new Error();
+/******/ onScriptComplete = function (event) {
+/******/ // avoid mem leaks in IE.
+/******/ script.onerror = script.onload = null;
+/******/ clearTimeout(timeout);
+/******/ var chunk = installedChunks[chunkId];
+/******/ if(chunk !== 0) {
+/******/ if(chunk) {
+/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ var realSrc = event && event.target && event.target.src;
+/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ error.name = 'ChunkLoadError';
+/******/ error.type = errorType;
+/******/ error.request = realSrc;
+/******/ chunk[1](error);
+/******/ }
+/******/ installedChunks[chunkId] = undefined;
+/******/ }
+/******/ };
+/******/ var timeout = setTimeout(function(){
+/******/ onScriptComplete({ type: 'timeout', target: script });
+/******/ }, 120000);
+/******/ script.onerror = script.onload = onScriptComplete;
+/******/ document.head.appendChild(script);
+/******/ }
+/******/ }
+/******/ return Promise.all(promises);
+/******/ };
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // on error function for async loading
+/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'a';\n\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar a = __webpack_require__(/*! ./a */ \"./a.ts\");\nvar b = __webpack_require__(/*! ./b */ \"./b.ts\");\nconsole.log(a);\nconsole.log(b);\n__webpack_require__.e(/*! require.ensure */ 0).then((function (require) {\n // These require calls are emitted (note these are NOT TypeScript\n // `import ... require` statements). `require.ensure` is defined in\n // require.d.ts. Webpack sees this and automatically puts c and d\n // into a separate chunk. \n var cModule = __webpack_require__(/*! ./c */ \"./c.ts\");\n var dModule = __webpack_require__(/*! ./d */ \"./d.ts\");\n // cModule and dModule will typed as strings\n console.log(cModule);\n console.log(dModule);\n}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./b.ts":
+/*!**************!*\
+ !*** ./b.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'b';\n\n\n//# sourceURL=webpack:///./b.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/codeSplitting/expectedOutput-4.1/output.txt b/test/comparison-tests/codeSplitting/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..c7bac7cb8
--- /dev/null
+++ b/test/comparison-tests/codeSplitting/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+0.bundle.js 592 bytes 0 [emitted]
+ bundle.js 9.57 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./a.ts] 36 bytes {main} [built]
+[./app.ts] 589 bytes {main} [built]
+[./b.ts] 36 bytes {main} [built]
+[./c.ts] 36 bytes {0} [built]
+[./d.ts] 36 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/0.bundle.js b/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/0.bundle.js
new file mode 100644
index 000000000..12682a0b5
--- /dev/null
+++ b/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/0.bundle.js
@@ -0,0 +1,27 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{
+
+/***/ "./c.ts":
+/*!**************!*\
+ !*** ./c.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'c';\n\n\n//# sourceURL=webpack:///./c.ts?");
+
+/***/ }),
+
+/***/ "./d.ts":
+/*!**************!*\
+ !*** ./d.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'd';\n\n\n//# sourceURL=webpack:///./d.ts?");
+
+/***/ })
+
+}]);
\ No newline at end of file
diff --git a/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..8b98434a9
--- /dev/null
+++ b/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,240 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1];
+/******/
+/******/
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ };
+/******/
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ // Promise = chunk loading, 0 = chunk loaded
+/******/ var installedChunks = {
+/******/ "main": 0
+/******/ };
+/******/
+/******/
+/******/
+/******/ // script path function
+/******/ function jsonpScriptSrc(chunkId) {
+/******/ return __webpack_require__.p + "" + chunkId + ".bundle.js"
+/******/ }
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/ // This file contains only the entry chunk.
+/******/ // The chunk loading function for additional chunks
+/******/ __webpack_require__.e = function requireEnsure(chunkId) {
+/******/ var promises = [];
+/******/
+/******/
+/******/ // JSONP chunk loading for javascript
+/******/
+/******/ var installedChunkData = installedChunks[chunkId];
+/******/ if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ // a Promise means "currently loading".
+/******/ if(installedChunkData) {
+/******/ promises.push(installedChunkData[2]);
+/******/ } else {
+/******/ // setup Promise in chunk cache
+/******/ var promise = new Promise(function(resolve, reject) {
+/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ });
+/******/ promises.push(installedChunkData[2] = promise);
+/******/
+/******/ // start chunk loading
+/******/ var script = document.createElement('script');
+/******/ var onScriptComplete;
+/******/
+/******/ script.charset = 'utf-8';
+/******/ script.timeout = 120;
+/******/ if (__webpack_require__.nc) {
+/******/ script.setAttribute("nonce", __webpack_require__.nc);
+/******/ }
+/******/ script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ // create error before stack unwound to get useful stacktrace later
+/******/ var error = new Error();
+/******/ onScriptComplete = function (event) {
+/******/ // avoid mem leaks in IE.
+/******/ script.onerror = script.onload = null;
+/******/ clearTimeout(timeout);
+/******/ var chunk = installedChunks[chunkId];
+/******/ if(chunk !== 0) {
+/******/ if(chunk) {
+/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ var realSrc = event && event.target && event.target.src;
+/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ error.name = 'ChunkLoadError';
+/******/ error.type = errorType;
+/******/ error.request = realSrc;
+/******/ chunk[1](error);
+/******/ }
+/******/ installedChunks[chunkId] = undefined;
+/******/ }
+/******/ };
+/******/ var timeout = setTimeout(function(){
+/******/ onScriptComplete({ type: 'timeout', target: script });
+/******/ }, 120000);
+/******/ script.onerror = script.onload = onScriptComplete;
+/******/ document.head.appendChild(script);
+/******/ }
+/******/ }
+/******/ return Promise.all(promises);
+/******/ };
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // on error function for async loading
+/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'a';\n\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar a = __webpack_require__(/*! ./a */ \"./a.ts\");\nvar b = __webpack_require__(/*! ./b */ \"./b.ts\");\nconsole.log(a);\nconsole.log(b);\n__webpack_require__.e(/*! require.ensure */ 0).then((function (require) {\n // These require calls are emitted (note these are NOT TypeScript\n // `import ... require` statements). `require.ensure` is defined in\n // require.d.ts. Webpack sees this and automatically puts c and d\n // into a separate chunk. \n var cModule = __webpack_require__(/*! ./c */ \"./c.ts\");\n var dModule = __webpack_require__(/*! ./d */ \"./d.ts\");\n // cModule and dModule will typed as strings\n console.log(cModule);\n console.log(dModule);\n}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./b.ts":
+/*!**************!*\
+ !*** ./b.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'b';\n\n\n//# sourceURL=webpack:///./b.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..010fd9d25
--- /dev/null
+++ b/test/comparison-tests/codeSplitting/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+0.bundle.js 592 bytes 0 [emitted]
+ bundle.js 9.61 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./a.ts] 36 bytes {main} [built]
+[./app.ts] 625 bytes {main} [built]
+[./b.ts] 36 bytes {main} [built]
+[./c.ts] 36 bytes {0} [built]
+[./d.ts] 36 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/colors/expectedOutput-4.1/bundle.js b/test/comparison-tests/colors/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..012797ec7
--- /dev/null
+++ b/test/comparison-tests/colors/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module parse failed: Unexpected token (2:1)/nFile was processed with these loaders:/n * ../../index.js/nYou may need an additional loader to handle the result of these loaders./n| var a;/n> == 0;/n| \");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/colors/expectedOutput-4.1/output.txt b/test/comparison-tests/colors/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..117027d85
--- /dev/null
+++ b/test/comparison-tests/colors/expectedOutput-4.1/output.txt
@@ -0,0 +1,18 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.96 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 220 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./app.ts 2:1
+Module parse failed: Unexpected token (2:1)
+File was processed with these loaders:
+ * ../../index.js
+You may need an additional loader to handle the result of these loaders.
+| var a;
+> == 0;
+|
+
+ERROR in app.ts
+./app.ts
+[tsl] ERROR in app.ts(1,7)
+ TS1005: ',' expected.
\ No newline at end of file
diff --git a/test/comparison-tests/colors/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/colors/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..012797ec7
--- /dev/null
+++ b/test/comparison-tests/colors/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module parse failed: Unexpected token (2:1)/nFile was processed with these loaders:/n * ../../index.js/nYou may need an additional loader to handle the result of these loaders./n| var a;/n> == 0;/n| \");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/colors/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/colors/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..117027d85
--- /dev/null
+++ b/test/comparison-tests/colors/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,18 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.96 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 220 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./app.ts 2:1
+Module parse failed: Unexpected token (2:1)
+File was processed with these loaders:
+ * ../../index.js
+You may need an additional loader to handle the result of these loaders.
+| var a;
+> == 0;
+|
+
+ERROR in app.ts
+./app.ts
+[tsl] ERROR in app.ts(1,7)
+ TS1005: ',' expected.
\ No newline at end of file
diff --git a/test/comparison-tests/conditionalRequire/expectedOutput-4.1/bundle.js b/test/comparison-tests/conditionalRequire/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..c37024a15
--- /dev/null
+++ b/test/comparison-tests/conditionalRequire/expectedOutput-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nconsole.log('do something');\n// The DEBUG constant will be inlined by webpack's DefinePlugin (see config)\n// The whole if-statement can then be removed by UglifyJS\nif (false) { var debug; }\nconsole.log('do something else');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/conditionalRequire/expectedOutput-4.1/output.txt b/test/comparison-tests/conditionalRequire/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..99287c682
--- /dev/null
+++ b/test/comparison-tests/conditionalRequire/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.02 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 312 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/conditionalRequire/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/conditionalRequire/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..afcf0e698
--- /dev/null
+++ b/test/comparison-tests/conditionalRequire/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconsole.log('do something');\n// The DEBUG constant will be inlined by webpack's DefinePlugin (see config)\n// The whole if-statement can then be removed by UglifyJS\nif (false) { var debug; }\nconsole.log('do something else');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/conditionalRequire/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/conditionalRequire/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..cd9f0fd10
--- /dev/null
+++ b/test/comparison-tests/conditionalRequire/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.06 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 348 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/bundle.js b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..bd06df038
--- /dev/null
+++ b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,79 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // identity function for calling harmony imports with the correct context
+/******/ __webpack_require__.i = function(value) { return value; };
+
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, {
+/******/ configurable: false,
+/******/ enumerable: true,
+/******/ get: getter
+/******/ });
+/******/ }
+/******/ };
+
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = 0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+console.log(1 /* Bar */);
+
+
+/***/ })
+/******/ ]);
\ No newline at end of file
diff --git a/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..f03c54463
--- /dev/null
+++ b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 2.57 kB 0 [emitted] main
+chunk {0} bundle.js (main) 40 bytes [entry] [rendered]
+ [0] ./.test/constEnumReExportWatch/app.ts 40 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..f06a7bba3
--- /dev/null
+++ b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,52 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports) {
+
+ "use strict";
+ console.log(2 /* Bar */);
+
+
+/***/ }
+/******/ ]);
\ No newline at end of file
diff --git a/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..c3c074468
--- /dev/null
+++ b/test/comparison-tests/constEnumReExportWatch/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 1.43 kB 0 [emitted] main
+chunk {0} bundle.js (main) 40 bytes [rendered]
+ [0] ./.test/constEnumReExportWatch/app.ts 40 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-4.1/bundle.js b/test/comparison-tests/customTransformer/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..98f9ec82e
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM ME!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-4.1/output.txt b/test/comparison-tests/customTransformer/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..a659b2234
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM HIM!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..2ab5de1d6
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 55 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..5cb90e8ac
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM US!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..98f9ec82e
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM ME!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..a659b2234
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM HIM!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..2ab5de1d6
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 55 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..5cb90e8ac
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM US!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformer/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/bundle.js b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..98f9ec82e
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM ME!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/output.txt b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..a659b2234
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM HIM!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..2ab5de1d6
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 55 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..5cb90e8ac
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM US!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..98f9ec82e
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM ME!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..a659b2234
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM HIM!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..2ab5de1d6
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 55 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..5cb90e8ac
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var message = \"HELLO FROM US!\";\nconsole.log(message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..9977baa4b
--- /dev/null
+++ b/test/comparison-tests/customTransformerUsingPathString/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.79 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 54 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/declarationDeps/expectedOutput-4.1/bundle.js b/test/comparison-tests/declarationDeps/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2be063c80
--- /dev/null
+++ b/test/comparison-tests/declarationDeps/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("Hello.sayHello('Hi');\nHello.sayHi('Hi');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationDeps/expectedOutput-4.1/output.txt b/test/comparison-tests/declarationDeps/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..31af3d0b6
--- /dev/null
+++ b/test/comparison-tests/declarationDeps/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.78 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 41 bytes {main} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(2,7)[39m[22m
+[1m[31m TS2339: Property 'sayHi' does not exist on type 'typeof Hello'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/declarationDeps/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/declarationDeps/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..2be063c80
--- /dev/null
+++ b/test/comparison-tests/declarationDeps/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("Hello.sayHello('Hi');\nHello.sayHi('Hi');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationDeps/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/declarationDeps/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..568a977d3
--- /dev/null
+++ b/test/comparison-tests/declarationDeps/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.78 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 41 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutput/expectedOutput-4.1/.output/app.d.ts b/test/comparison-tests/declarationOutput/expectedOutput-4.1/.output/app.d.ts
new file mode 100644
index 000000000..42c1b770a
--- /dev/null
+++ b/test/comparison-tests/declarationOutput/expectedOutput-4.1/.output/app.d.ts
@@ -0,0 +1,5 @@
+import dep = require('./sub/dep');
+declare class Test extends dep {
+ doSomething(): void;
+}
+export = Test;
diff --git a/test/comparison-tests/declarationOutput/expectedOutput-4.1/.output/sub/dep.d.ts b/test/comparison-tests/declarationOutput/expectedOutput-4.1/.output/sub/dep.d.ts
new file mode 100644
index 000000000..0d9a53ad0
--- /dev/null
+++ b/test/comparison-tests/declarationOutput/expectedOutput-4.1/.output/sub/dep.d.ts
@@ -0,0 +1,4 @@
+declare class Test {
+ doSomething(): void;
+}
+export = Test;
diff --git a/test/comparison-tests/declarationOutput/expectedOutput-4.1/bundle.js b/test/comparison-tests/declarationOutput/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..66229e8d6
--- /dev/null
+++ b/test/comparison-tests/declarationOutput/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar dep = __webpack_require__(/*! ./sub/dep */ \"./sub/dep.ts\");\nvar Test = /** @class */ (function (_super) {\n __extends(Test, _super);\n function Test() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Test.prototype.doSomething = function () {\n };\n return Test;\n}(dep));\nmodule.exports = Test;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./sub/dep.ts":
+/*!********************!*\
+ !*** ./sub/dep.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar Test = /** @class */ (function () {\n function Test() {\n }\n Test.prototype.doSomething = function () {\n };\n return Test;\n}());\nmodule.exports = Test;\n\n\n//# sourceURL=webpack:///./sub/dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutput/expectedOutput-4.1/output.txt b/test/comparison-tests/declarationOutput/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..33cc842ad
--- /dev/null
+++ b/test/comparison-tests/declarationOutput/expectedOutput-4.1/output.txt
@@ -0,0 +1,7 @@
+ Asset Size Chunks Chunk Names
+ .output/app.d.ts 110 bytes [emitted]
+.output/sub/dep.d.ts 63 bytes [emitted]
+ bundle.js 5.16 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 934 bytes {main} [built]
+[./sub/dep.ts] 182 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/app.d.ts b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/app.d.ts
new file mode 100644
index 000000000..dffb18358
--- /dev/null
+++ b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/app.d.ts
@@ -0,0 +1,6 @@
+import dep = require('./sub/dep');
+declare class Test extends dep {
+ doSomething(): void;
+}
+export = Test;
+//# sourceMappingURL=app.d.ts.map
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/app.d.ts.map b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/app.d.ts.map
new file mode 100644
index 000000000..48bc3c227
--- /dev/null
+++ b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/app.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../app.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,GAAG,QAAQ,WAAW,CAAC,CAAC;AAElC,cAAM,IAAK,SAAQ,GAAG;IACrB,WAAW;CAGX;AAED,SAAS,IAAI,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/sub/dep.d.ts b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/sub/dep.d.ts
new file mode 100644
index 000000000..5708986f8
--- /dev/null
+++ b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/sub/dep.d.ts
@@ -0,0 +1,5 @@
+declare class Test {
+ doSomething(): void;
+}
+export = Test;
+//# sourceMappingURL=dep.d.ts.map
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/sub/dep.d.ts.map b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/sub/dep.d.ts.map
new file mode 100644
index 000000000..9da4dc7f3
--- /dev/null
+++ b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/.output/sub/dep.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"dep.d.ts","sourceRoot":"","sources":["../../sub/dep.ts"],"names":[],"mappings":"AACA,cAAM,IAAI;IACT,WAAW;CAGX;AAED,SAAS,IAAI,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/bundle.js b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..66229e8d6
--- /dev/null
+++ b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar dep = __webpack_require__(/*! ./sub/dep */ \"./sub/dep.ts\");\nvar Test = /** @class */ (function (_super) {\n __extends(Test, _super);\n function Test() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Test.prototype.doSomething = function () {\n };\n return Test;\n}(dep));\nmodule.exports = Test;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./sub/dep.ts":
+/*!********************!*\
+ !*** ./sub/dep.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar Test = /** @class */ (function () {\n function Test() {\n }\n Test.prototype.doSomething = function () {\n };\n return Test;\n}());\nmodule.exports = Test;\n\n\n//# sourceURL=webpack:///./sub/dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/output.txt b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..45b149586
--- /dev/null
+++ b/test/comparison-tests/declarationOutputWithMaps/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ .output/app.d.ts 143 bytes [emitted]
+ .output/app.d.ts.map 197 bytes [emitted]
+ .output/sub/dep.d.ts 96 bytes [emitted]
+.output/sub/dep.d.ts.map 152 bytes [emitted]
+ bundle.js 5.16 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 934 bytes {main} [built]
+[./sub/dep.ts] 182 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/declarationWatch/expectedOutput-4.1/bundle.js b/test/comparison-tests/declarationWatch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..79d3f4450
--- /dev/null
+++ b/test/comparison-tests/declarationWatch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\nconsole.log(dep);\nThing.doSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nThing.doSomething();\nmodule.exports = 'dep';\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/declarationWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..c9b617373
--- /dev/null
+++ b/test/comparison-tests/declarationWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.18 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 108 bytes {main} [built]
+[./dep.ts] 59 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..79d3f4450
--- /dev/null
+++ b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\nconsole.log(dep);\nThing.doSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nThing.doSomething();\nmodule.exports = 'dep';\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..f818ddc7c
--- /dev/null
+++ b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.18 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 108 bytes {main} [built] [1 error]
+[./dep.ts] 59 bytes {main} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(5,7)[39m[22m
+[1m[31m TS2339: Property 'doSomething' does not exist on type 'typeof Thing'.[39m[22m
+
+ERROR in dep.ts
+./dep.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mdep.ts(1,7)[39m[22m
+[1m[31m TS2339: Property 'doSomething' does not exist on type 'typeof Thing'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..79d3f4450
--- /dev/null
+++ b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\nconsole.log(dep);\nThing.doSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nThing.doSomething();\nmodule.exports = 'dep';\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..c9b617373
--- /dev/null
+++ b/test/comparison-tests/declarationWatch/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.18 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 108 bytes {main} [built]
+[./dep.ts] 59 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-4.1/bundle.js b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..36ba9c651
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep1 = __webpack_require__(/*! ./dep1 */ \"./dep1.ts\");\nvar dep2 = __webpack_require__(/*! ./dep2 */ \"./dep2.ts\");\ndep1('');\ndep2('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep1.ts":
+/*!*****************!*\
+ !*** ./dep1.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep1.ts?");
+
+/***/ }),
+
+/***/ "./dep2.ts":
+/*!*****************!*\
+ !*** ./dep2.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep2.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-4.1/output.txt b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..9bf366413
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/output.txt
@@ -0,0 +1,16 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.56 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 121 bytes {main} [built] [2 errors]
+[./dep1.ts] 76 bytes {main} [built]
+[./dep2.ts] 76 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(4,6)[39m[22m
+[1m[31m TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.[39m[22m
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(5,6)[39m[22m
+[1m[31m TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..36ba9c651
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep1 = __webpack_require__(/*! ./dep1 */ \"./dep1.ts\");\nvar dep2 = __webpack_require__(/*! ./dep2 */ \"./dep2.ts\");\ndep1('');\ndep2('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep1.ts":
+/*!*****************!*\
+ !*** ./dep1.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep1.ts?");
+
+/***/ }),
+
+/***/ "./dep2.ts":
+/*!*****************!*\
+ !*** ./dep2.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep2.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..f4ea07b34
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.56 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 121 bytes {main} [built] [1 error]
+[./dep1.ts] 76 bytes {main} [built]
+[./dep2.ts] 76 bytes {main}
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(5,6)[39m[22m
+[1m[31m TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..331e05118
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dep1 = __webpack_require__(/*! ./dep1 */ \"./dep1.ts\");\nvar dep2 = __webpack_require__(/*! ./dep2 */ \"./dep2.ts\");\ndep1('');\ndep2('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep1.ts":
+/*!*****************!*\
+ !*** ./dep1.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep1.ts?");
+
+/***/ }),
+
+/***/ "./dep2.ts":
+/*!*****************!*\
+ !*** ./dep2.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep2.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..13aad10d4
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.6 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 157 bytes {main} [built]
+[./dep1.ts] 76 bytes {main} [built]
+[./dep2.ts] 76 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..331e05118
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dep1 = __webpack_require__(/*! ./dep1 */ \"./dep1.ts\");\nvar dep2 = __webpack_require__(/*! ./dep2 */ \"./dep2.ts\");\ndep1('');\ndep2('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./dep1.ts":
+/*!*****************!*\
+ !*** ./dep1.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep1.ts?");
+
+/***/ }),
+
+/***/ "./dep2.ts":
+/*!*****************!*\
+ !*** ./dep2.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./dep2.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..b69ba60ea
--- /dev/null
+++ b/test/comparison-tests/dependencyErrors/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.6 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 157 bytes {main}
+[./dep1.ts] 76 bytes {main} [built]
+[./dep2.ts] 76 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/errorFormatter/expectedOutput-4.1/bundle.js b/test/comparison-tests/errorFormatter/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..02dd408f1
--- /dev/null
+++ b/test/comparison-tests/errorFormatter/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar myComponent = __webpack_require__(/*! components/myComponent */ \"./common/components/myComponent.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/components/myComponent.ts":
+/*!******************************************!*\
+ !*** ./common/components/myComponent.ts ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'myComponent';\n\n\n//# sourceURL=webpack:///./common/components/myComponent.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/errorFormatter/expectedOutput-4.1/output.txt b/test/comparison-tests/errorFormatter/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ce9b05006
--- /dev/null
+++ b/test/comparison-tests/errorFormatter/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 120 bytes {main} [built] [1 error]
+[./common/components/myComponent.ts] 46 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+Does not compute.... [1m[31mcode: 2307,severity: error,content: Cannot find module 'components/myComponent2' or its corresponding type declarations.,file: app.ts,line: 2,character: 31,context: .test/errorFormatter[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/errorFormatter/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/errorFormatter/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4bcb44dd6
--- /dev/null
+++ b/test/comparison-tests/errorFormatter/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar myComponent = __webpack_require__(/*! components/myComponent */ \"./common/components/myComponent.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/components/myComponent.ts":
+/*!******************************************!*\
+ !*** ./common/components/myComponent.ts ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'myComponent';\n\n\n//# sourceURL=webpack:///./common/components/myComponent.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/errorFormatter/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/errorFormatter/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..52173a13f
--- /dev/null
+++ b/test/comparison-tests/errorFormatter/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 156 bytes {main} [built]
+[./common/components/myComponent.ts] 46 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/errors/expectedOutput-4.1/bundle.js b/test/comparison-tests/errors/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..012797ec7
--- /dev/null
+++ b/test/comparison-tests/errors/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module parse failed: Unexpected token (2:1)/nFile was processed with these loaders:/n * ../../index.js/nYou may need an additional loader to handle the result of these loaders./n| var a;/n> == 0;/n| \");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/errors/expectedOutput-4.1/output.txt b/test/comparison-tests/errors/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..c48ec99d2
--- /dev/null
+++ b/test/comparison-tests/errors/expectedOutput-4.1/output.txt
@@ -0,0 +1,18 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.96 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 220 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./app.ts 2:1
+Module parse failed: Unexpected token (2:1)
+File was processed with these loaders:
+ * ../../index.js
+You may need an additional loader to handle the result of these loaders.
+| var a;
+> == 0;
+|
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(1,7)[39m[22m
+[1m[31m TS1005: ',' expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/errors/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/errors/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..012797ec7
--- /dev/null
+++ b/test/comparison-tests/errors/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module parse failed: Unexpected token (2:1)/nFile was processed with these loaders:/n * ../../index.js/nYou may need an additional loader to handle the result of these loaders./n| var a;/n> == 0;/n| \");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/errors/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/errors/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ffab7fca9
--- /dev/null
+++ b/test/comparison-tests/errors/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,18 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.96 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 220 bytes {main} [built] [failed] [2 errors]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(1,7)[39m[22m
+[1m[31m TS1005: ',' expected.[39m[22m
+
+ERROR in ./app.ts 2:1
+Module parse failed: Unexpected token (2:1)
+File was processed with these loaders:
+ * ../../index.js
+You may need an additional loader to handle the result of these loaders.
+| var a;
+> == 0;
+|
\ No newline at end of file
diff --git a/test/comparison-tests/es3/expectedOutput-4.1/bundle.js b/test/comparison-tests/es3/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1ccaf64d6
--- /dev/null
+++ b/test/comparison-tests/es3/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("({ get x() { return 1; } });\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es3/expectedOutput-4.1/output.txt b/test/comparison-tests/es3/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..12a3418dd
--- /dev/null
+++ b/test/comparison-tests/es3/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.76 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 29 bytes {main} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(1,7)[39m[22m
+[1m[31m TS1056: Accessors are only available when targeting ECMAScript 5 and higher.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/es3/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/es3/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..1ccaf64d6
--- /dev/null
+++ b/test/comparison-tests/es3/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("({ get x() { return 1; } });\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es3/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/es3/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..d51d7f174
--- /dev/null
+++ b/test/comparison-tests/es3/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.76 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 29 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es5/expectedOutput-4.1/bundle.js b/test/comparison-tests/es5/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..9e16aea65
--- /dev/null
+++ b/test/comparison-tests/es5/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("({ get x() { return 1; } });\nvar mapsDontExistYet = new Map();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es5/expectedOutput-4.1/output.txt b/test/comparison-tests/es5/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..67449578b
--- /dev/null
+++ b/test/comparison-tests/es5/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.8 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 63 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es5/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/es5/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..9e16aea65
--- /dev/null
+++ b/test/comparison-tests/es5/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("({ get x() { return 1; } });\nvar mapsDontExistYet = new Map();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es5/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/es5/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..67449578b
--- /dev/null
+++ b/test/comparison-tests/es5/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.8 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 63 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es6/expectedOutput-4.1/bundle.js b/test/comparison-tests/es6/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..6b32b06c7
--- /dev/null
+++ b/test/comparison-tests/es6/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("({ get x() { return 1; } });\nSymbol;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es6/expectedOutput-4.1/output.txt b/test/comparison-tests/es6/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..e60b401c7
--- /dev/null
+++ b/test/comparison-tests/es6/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.77 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 37 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es6/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/es6/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..6b32b06c7
--- /dev/null
+++ b/test/comparison-tests/es6/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("({ get x() { return 1; } });\nSymbol;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es6/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/es6/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..e60b401c7
--- /dev/null
+++ b/test/comparison-tests/es6/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.77 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 37 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/0.bundle.js b/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/0.bundle.js
new file mode 100644
index 000000000..9a5b38037
--- /dev/null
+++ b/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/0.bundle.js
@@ -0,0 +1,27 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{
+
+/***/ "./c.ts":
+/*!**************!*\
+ !*** ./c.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'c';\n\n\n//# sourceURL=webpack:///./c.ts?");
+
+/***/ }),
+
+/***/ "./d.ts":
+/*!**************!*\
+ !*** ./d.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'd';\n\n\n//# sourceURL=webpack:///./d.ts?");
+
+/***/ })
+
+}]);
\ No newline at end of file
diff --git a/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/bundle.js b/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..4cccbf92f
--- /dev/null
+++ b/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/bundle.js
@@ -0,0 +1,240 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1];
+/******/
+/******/
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ };
+/******/
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ // Promise = chunk loading, 0 = chunk loaded
+/******/ var installedChunks = {
+/******/ "main": 0
+/******/ };
+/******/
+/******/
+/******/
+/******/ // script path function
+/******/ function jsonpScriptSrc(chunkId) {
+/******/ return __webpack_require__.p + "" + chunkId + ".bundle.js"
+/******/ }
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/ // This file contains only the entry chunk.
+/******/ // The chunk loading function for additional chunks
+/******/ __webpack_require__.e = function requireEnsure(chunkId) {
+/******/ var promises = [];
+/******/
+/******/
+/******/ // JSONP chunk loading for javascript
+/******/
+/******/ var installedChunkData = installedChunks[chunkId];
+/******/ if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ // a Promise means "currently loading".
+/******/ if(installedChunkData) {
+/******/ promises.push(installedChunkData[2]);
+/******/ } else {
+/******/ // setup Promise in chunk cache
+/******/ var promise = new Promise(function(resolve, reject) {
+/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ });
+/******/ promises.push(installedChunkData[2] = promise);
+/******/
+/******/ // start chunk loading
+/******/ var script = document.createElement('script');
+/******/ var onScriptComplete;
+/******/
+/******/ script.charset = 'utf-8';
+/******/ script.timeout = 120;
+/******/ if (__webpack_require__.nc) {
+/******/ script.setAttribute("nonce", __webpack_require__.nc);
+/******/ }
+/******/ script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ // create error before stack unwound to get useful stacktrace later
+/******/ var error = new Error();
+/******/ onScriptComplete = function (event) {
+/******/ // avoid mem leaks in IE.
+/******/ script.onerror = script.onload = null;
+/******/ clearTimeout(timeout);
+/******/ var chunk = installedChunks[chunkId];
+/******/ if(chunk !== 0) {
+/******/ if(chunk) {
+/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ var realSrc = event && event.target && event.target.src;
+/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ error.name = 'ChunkLoadError';
+/******/ error.type = errorType;
+/******/ error.request = realSrc;
+/******/ chunk[1](error);
+/******/ }
+/******/ installedChunks[chunkId] = undefined;
+/******/ }
+/******/ };
+/******/ var timeout = setTimeout(function(){
+/******/ onScriptComplete({ type: 'timeout', target: script });
+/******/ }, 120000);
+/******/ script.onerror = script.onload = onScriptComplete;
+/******/ document.head.appendChild(script);
+/******/ }
+/******/ }
+/******/ return Promise.all(promises);
+/******/ };
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // on error function for async loading
+/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'a';\n\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar a_1 = __webpack_require__(/*! ./a */ \"./a.ts\");\nvar b_1 = __webpack_require__(/*! ./b */ \"./b.ts\");\nconsole.log(a_1.default);\nconsole.log(b_1.default);\n__webpack_require__.e(/*! require.ensure */ 0).then((function (require) {\n // These require calls are emitted (note these are NOT TypeScript\n // `import ... from` statements). `require.ensure` is defined in\n // require.d.ts. Webpack sees this and automatically puts c and d\n // into a separate chunk. \n // Note that requiring an ES6 module always returns an object\n // with the named exports. This means if you want to access\n // the default export you have to do so manually.\n // Since we used syntactic sugar for the default export for c, we\n // go ahead and access the default property.\n var cDefault = __webpack_require__(/*! ./c */ \"./c.ts\")[\"default\"];\n // For d, we imported the whole module so we don't access the default\n // property yet. \n var dModule = __webpack_require__(/*! ./d */ \"./d.ts\");\n console.log(cDefault);\n console.log(dModule[\"default\"]);\n}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./b.ts":
+/*!**************!*\
+ !*** ./b.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'b';\n\n\n//# sourceURL=webpack:///./b.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/output.txt b/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..e9af4df21
--- /dev/null
+++ b/test/comparison-tests/es6codeSplitting/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+0.bundle.js 726 bytes 0 [emitted]
+ bundle.js 10.1 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./a.ts] 100 bytes {main} [built]
+[./app.ts] 1020 bytes {main} [built]
+[./b.ts] 100 bytes {main} [built]
+[./c.ts] 100 bytes {0} [built]
+[./d.ts] 100 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/0.bundle.js b/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/0.bundle.js
new file mode 100644
index 000000000..9a5b38037
--- /dev/null
+++ b/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/0.bundle.js
@@ -0,0 +1,27 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{
+
+/***/ "./c.ts":
+/*!**************!*\
+ !*** ./c.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'c';\n\n\n//# sourceURL=webpack:///./c.ts?");
+
+/***/ }),
+
+/***/ "./d.ts":
+/*!**************!*\
+ !*** ./d.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'd';\n\n\n//# sourceURL=webpack:///./d.ts?");
+
+/***/ })
+
+}]);
\ No newline at end of file
diff --git a/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4cccbf92f
--- /dev/null
+++ b/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,240 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1];
+/******/
+/******/
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ };
+/******/
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ // Promise = chunk loading, 0 = chunk loaded
+/******/ var installedChunks = {
+/******/ "main": 0
+/******/ };
+/******/
+/******/
+/******/
+/******/ // script path function
+/******/ function jsonpScriptSrc(chunkId) {
+/******/ return __webpack_require__.p + "" + chunkId + ".bundle.js"
+/******/ }
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/ // This file contains only the entry chunk.
+/******/ // The chunk loading function for additional chunks
+/******/ __webpack_require__.e = function requireEnsure(chunkId) {
+/******/ var promises = [];
+/******/
+/******/
+/******/ // JSONP chunk loading for javascript
+/******/
+/******/ var installedChunkData = installedChunks[chunkId];
+/******/ if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ // a Promise means "currently loading".
+/******/ if(installedChunkData) {
+/******/ promises.push(installedChunkData[2]);
+/******/ } else {
+/******/ // setup Promise in chunk cache
+/******/ var promise = new Promise(function(resolve, reject) {
+/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ });
+/******/ promises.push(installedChunkData[2] = promise);
+/******/
+/******/ // start chunk loading
+/******/ var script = document.createElement('script');
+/******/ var onScriptComplete;
+/******/
+/******/ script.charset = 'utf-8';
+/******/ script.timeout = 120;
+/******/ if (__webpack_require__.nc) {
+/******/ script.setAttribute("nonce", __webpack_require__.nc);
+/******/ }
+/******/ script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ // create error before stack unwound to get useful stacktrace later
+/******/ var error = new Error();
+/******/ onScriptComplete = function (event) {
+/******/ // avoid mem leaks in IE.
+/******/ script.onerror = script.onload = null;
+/******/ clearTimeout(timeout);
+/******/ var chunk = installedChunks[chunkId];
+/******/ if(chunk !== 0) {
+/******/ if(chunk) {
+/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ var realSrc = event && event.target && event.target.src;
+/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ error.name = 'ChunkLoadError';
+/******/ error.type = errorType;
+/******/ error.request = realSrc;
+/******/ chunk[1](error);
+/******/ }
+/******/ installedChunks[chunkId] = undefined;
+/******/ }
+/******/ };
+/******/ var timeout = setTimeout(function(){
+/******/ onScriptComplete({ type: 'timeout', target: script });
+/******/ }, 120000);
+/******/ script.onerror = script.onload = onScriptComplete;
+/******/ document.head.appendChild(script);
+/******/ }
+/******/ }
+/******/ return Promise.all(promises);
+/******/ };
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // on error function for async loading
+/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'a';\n\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar a_1 = __webpack_require__(/*! ./a */ \"./a.ts\");\nvar b_1 = __webpack_require__(/*! ./b */ \"./b.ts\");\nconsole.log(a_1.default);\nconsole.log(b_1.default);\n__webpack_require__.e(/*! require.ensure */ 0).then((function (require) {\n // These require calls are emitted (note these are NOT TypeScript\n // `import ... from` statements). `require.ensure` is defined in\n // require.d.ts. Webpack sees this and automatically puts c and d\n // into a separate chunk. \n // Note that requiring an ES6 module always returns an object\n // with the named exports. This means if you want to access\n // the default export you have to do so manually.\n // Since we used syntactic sugar for the default export for c, we\n // go ahead and access the default property.\n var cDefault = __webpack_require__(/*! ./c */ \"./c.ts\")[\"default\"];\n // For d, we imported the whole module so we don't access the default\n // property yet. \n var dModule = __webpack_require__(/*! ./d */ \"./d.ts\");\n console.log(cDefault);\n console.log(dModule[\"default\"]);\n}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./b.ts":
+/*!**************!*\
+ !*** ./b.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'b';\n\n\n//# sourceURL=webpack:///./b.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..e9af4df21
--- /dev/null
+++ b/test/comparison-tests/es6codeSplitting/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+0.bundle.js 726 bytes 0 [emitted]
+ bundle.js 10.1 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./a.ts] 100 bytes {main} [built]
+[./app.ts] 1020 bytes {main} [built]
+[./b.ts] 100 bytes {main} [built]
+[./c.ts] 100 bytes {0} [built]
+[./d.ts] 100 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es6withCJS/expectedOutput-4.1/bundle.js b/test/comparison-tests/es6withCJS/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2ecaec7ac
--- /dev/null
+++ b/test/comparison-tests/es6withCJS/expectedOutput-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'a';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es6withCJS/expectedOutput-4.1/output.txt b/test/comparison-tests/es6withCJS/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..d5765659c
--- /dev/null
+++ b/test/comparison-tests/es6withCJS/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.86 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 100 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/es6withCJS/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/es6withCJS/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..2ecaec7ac
--- /dev/null
+++ b/test/comparison-tests/es6withCJS/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'a';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/es6withCJS/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/es6withCJS/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..d5765659c
--- /dev/null
+++ b/test/comparison-tests/es6withCJS/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.86 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 100 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/externals/expectedOutput-4.1/bundle.js b/test/comparison-tests/externals/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..008e763d4
--- /dev/null
+++ b/test/comparison-tests/externals/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar hello = __webpack_require__(/*! hello */ \"hello\");\nvar msg = hello.sayHello('World');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "hello":
+/*!************************!*\
+ !*** external "hello" ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = hello;\n\n//# sourceURL=webpack:///external_%22hello%22?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/externals/expectedOutput-4.1/output.txt b/test/comparison-tests/externals/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..31d7acc68
--- /dev/null
+++ b/test/comparison-tests/externals/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.15 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 106 bytes {main} [built]
+[hello] external "hello" 42 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/externals/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/externals/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..3595e0ba6
--- /dev/null
+++ b/test/comparison-tests/externals/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hello = __webpack_require__(/*! hello */ \"hello\");\nvar msg = hello.sayHello('World');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "hello":
+/*!************************!*\
+ !*** external "hello" ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = hello;\n\n//# sourceURL=webpack:///external_%22hello%22?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/externals/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/externals/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..e71d89dc0
--- /dev/null
+++ b/test/comparison-tests/externals/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.19 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 142 bytes {main} [built]
+[hello] external "hello" 42 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/bundle.js b/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..c9f87f770
--- /dev/null
+++ b/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/bundle.js
@@ -0,0 +1,85 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, {
+/******/ configurable: false,
+/******/ enumerable: true,
+/******/ get: getter
+/******/ });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("console.log(\"hello\");\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/index.html b/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/index.html
new file mode 100644
index 000000000..866dfa443
--- /dev/null
+++ b/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/index.html
@@ -0,0 +1,9 @@
+
+
+
+
+ Webpack App
+
+
+
+
\ No newline at end of file
diff --git a/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/output.txt b/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..55defee69
--- /dev/null
+++ b/test/comparison-tests/html-webpack-plugin/expectedOutput-4.1/output.txt
@@ -0,0 +1,14 @@
+Built at: 2018-3-18 09:18:12
+ Asset Size Chunks Chunk Names
+ bundle.js 2.8 KiB main [emitted] main
+index.html 190 bytes [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 22 bytes {main} [built]
+Child html-webpack-plugin for "index.html":
+ Asset Size Chunks Chunk Names
+ index.html 550 KiB 0
+ Entrypoint undefined = index.html
+ [../../node_modules/html-webpack-plugin/lib/loader.js!./index.html] /node_modules/html-webpack-plugin/lib/loader.js!./index.html 509 bytes {0} [built]
+ [../../node_modules/lodash/lodash.js] /node_modules/lodash/lodash.js 527 KiB {0} [built]
+ [../../node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 489 bytes {0} [built]
+ [../../node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 497 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/ignoreDiagnostics/expectedOutput-4.1/bundle.js b/test/comparison-tests/ignoreDiagnostics/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..dba64e8d1
--- /dev/null
+++ b/test/comparison-tests/ignoreDiagnostics/expectedOutput-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.Foo = void 0;\nvar Foo = /** @class */ (function () {\n function Foo() {\n }\n return Foo;\n}());\nvar Bar = /** @class */ (function () {\n function Bar() {\n }\n return Bar;\n}());\nvar a = 'b'; // this should error with 2322\nmodule.exports = Bar;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/ignoreDiagnostics/expectedOutput-4.1/output.txt b/test/comparison-tests/ignoreDiagnostics/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..bcc531083
--- /dev/null
+++ b/test/comparison-tests/ignoreDiagnostics/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.04 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 278 bytes {main} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(9,5)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'Number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/ignoreDiagnostics/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/ignoreDiagnostics/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..dba64e8d1
--- /dev/null
+++ b/test/comparison-tests/ignoreDiagnostics/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.Foo = void 0;\nvar Foo = /** @class */ (function () {\n function Foo() {\n }\n return Foo;\n}());\nvar Bar = /** @class */ (function () {\n function Bar() {\n }\n return Bar;\n}());\nvar a = 'b'; // this should error with 2322\nmodule.exports = Bar;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/ignoreDiagnostics/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/ignoreDiagnostics/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ba753d04e
--- /dev/null
+++ b/test/comparison-tests/ignoreDiagnostics/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.04 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 278 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/importsWatch/expectedOutput-4.1/bundle.js b/test/comparison-tests/importsWatch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/importsWatch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/importsWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/importsWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/importsWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/importsWatch/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/importsWatch/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/importsWatch/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/importsWatch/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/importsWatch/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..5773b734b
--- /dev/null
+++ b/test/comparison-tests/importsWatch/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(4,1)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'boolean'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/instance/expectedOutput-4.1/bundle.js b/test/comparison-tests/instance/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..ca4accdbc
--- /dev/null
+++ b/test/comparison-tests/instance/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./a.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31mA file specified in tsconfig.json could not be found: /instance/i-dont-exist/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/instance/expectedOutput-4.1/output.txt b/test/comparison-tests/instance/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..09690c0b5
--- /dev/null
+++ b/test/comparison-tests/instance/expectedOutput-4.1/output.txt
@@ -0,0 +1,20 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4 KiB a [emitted] a
+Entrypoint a = bundle.js
+Entrypoint b =
+[./a.ts] 276 bytes {a} [built] [failed] [1 error]
+[./b.ts] 276 bytes {b} [built] [failed] [1 error]
+
+ERROR in ./a.ts
+Module build failed (from index.js):
+Error: [31mA file specified in tsconfig.json could not be found: i-dont-exist[39m
+ at Object.loader (dist/index.js:18:18)
+
+ERROR in ./b.ts
+Module build failed (from index.js):
+Error: [31mA file specified in tsconfig.json could not be found: i-dont-exist[39m
+ at Object.loader (dist/index.js:18:18)
+
+ERROR in chunk b [entry]
+bundle.js
+Conflict: Multiple chunks emit assets to the same filename bundle.js (chunks a and b)
\ No newline at end of file
diff --git a/test/comparison-tests/instance/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/instance/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..93b129d61
--- /dev/null
+++ b/test/comparison-tests/instance/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./a.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31mA file specified in tsconfig.json could not be found: /instance.transpile/i-dont-exist/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/instance/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/instance/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..1da55bdfe
--- /dev/null
+++ b/test/comparison-tests/instance/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,20 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.01 KiB a [emitted] a
+Entrypoint a = bundle.js
+Entrypoint b =
+[./a.ts] 286 bytes {a} [built] [failed] [1 error]
+[./b.ts] 286 bytes {b} [built] [failed] [1 error]
+
+ERROR in ./a.ts
+Module build failed (from index.js):
+Error: [31mA file specified in tsconfig.json could not be found: i-dont-exist[39m
+ at Object.loader (dist/index.js:18:18)
+
+ERROR in ./b.ts
+Module build failed (from index.js):
+Error: [31mA file specified in tsconfig.json could not be found: i-dont-exist[39m
+ at Object.loader (dist/index.js:18:18)
+
+ERROR in chunk b [entry]
+bundle.js
+Conflict: Multiple chunks emit assets to the same filename bundle.js (chunks a and b)
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-4.1/bundle.js b/test/comparison-tests/issue372/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..4ae1e2d80
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo_1 = __webpack_require__(/*! ./foo */ \"./foo.ts\");\nvar foo;\nfoo.bar = 'foobar' + foo_1.s;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./foo.ts":
+/*!****************!*\
+ !*** ./foo.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.s = void 0;\nvar sString = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nexports.s = sString;\n\n\n//# sourceURL=webpack:///./foo.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-4.1/output.txt b/test/comparison-tests/issue372/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..431cfdbba
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.59 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 110 bytes {main} [built]
+[./foo.ts] 110 bytes {main} [built]
+[./node_modules/a/index.js] 21 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/issue372/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..9a3ff474a
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo_1 = __webpack_require__(/*! ./foo */ \"./foo.ts\");\nvar foo;\nfoo.bar = 'foobar_patch0' + foo_1.s;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./foo.ts":
+/*!****************!*\
+ !*** ./foo.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.s = void 0;\nvar sString = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nexports.s = sString;\n\n\n//# sourceURL=webpack:///./foo.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/issue372/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..f6a943a2e
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.6 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 117 bytes {main} [built]
+[./foo.ts] 110 bytes {main}
+[./node_modules/a/index.js] 21 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..2dee6da5f
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foo_1 = __webpack_require__(/*! ./foo */ \"./foo.ts\");\nvar foo;\nfoo.bar = 'foobar' + foo_1.s;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./foo.ts":
+/*!****************!*\
+ !*** ./foo.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.s = void 0;\nvar sString = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nexports.s = sString;\n\n\n//# sourceURL=webpack:///./foo.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..a82456bf5
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.67 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 146 bytes {main} [built]
+[./foo.ts] 146 bytes {main} [built]
+[./node_modules/a/index.js] 21 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..180fedde6
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foo_1 = __webpack_require__(/*! ./foo */ \"./foo.ts\");\nvar foo;\nfoo.bar = 'foobar_patch0' + foo_1.s;\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./foo.ts":
+/*!****************!*\
+ !*** ./foo.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.s = void 0;\nvar sString = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nexports.s = sString;\n\n\n//# sourceURL=webpack:///./foo.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue372/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..e77a79930
--- /dev/null
+++ b/test/comparison-tests/issue372/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.67 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 153 bytes {main} [built]
+[./foo.ts] 146 bytes {main}
+[./node_modules/a/index.js] 21 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-4.1/bundle.js b/test/comparison-tests/issue441/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-4.1/output.txt b/test/comparison-tests/issue441/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/issue441/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/issue441/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/issue441/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/issue441/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..93a3017f9
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,101 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo;\nfoo.bar = 'foobar';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..41a3f8c48
--- /dev/null
+++ b/test/comparison-tests/issue441/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/issue71/expectedOutput-4.1/bundle.js b/test/comparison-tests/issue71/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..017549af0
--- /dev/null
+++ b/test/comparison-tests/issue71/expectedOutput-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar a = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nvar b = __webpack_require__(/*! ./b */ \"./b.ts\");\nconsole.log(a);\nconsole.log(b);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./b.ts":
+/*!**************!*\
+ !*** ./b.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nmodule.exports = 'b';\n\n\n//# sourceURL=webpack:///./b.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/issue71/expectedOutput-4.1/output.txt b/test/comparison-tests/issue71/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..e5ab4f9de
--- /dev/null
+++ b/test/comparison-tests/issue71/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.51 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 119 bytes {main} [built]
+[./b.ts] 36 bytes {main} [built]
+[./node_modules/a/index.js] 21 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-4.1/bundle.js b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..8c4f47ecc
--- /dev/null
+++ b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar myComponent = __webpack_require__(/*! api */ \"./fake.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./fake.ts":
+/*!*****************!*\
+ !*** ./fake.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.sayHello = void 0;\nfunction sayHello(name) {\n return \"Hello, \" + name + \"!\";\n}\nexports.sayHello = sayHello;\n\n\n//# sourceURL=webpack:///./fake.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-4.1/output.txt b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..7d8a40542
--- /dev/null
+++ b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.29 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 101 bytes {main} [built]
+[./fake.ts] 160 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4afe29aa9
--- /dev/null
+++ b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar myComponent = __webpack_require__(/*! api */ \"./fake.ts\");\nconsole.log(myComponent);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./fake.ts":
+/*!*****************!*\
+ !*** ./fake.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sayHello = void 0;\nfunction sayHello(name) {\n return \"Hello, \" + name + \"!\";\n}\nexports.sayHello = sayHello;\n\n\n//# sourceURL=webpack:///./fake.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ce5ae6a72
--- /dev/null
+++ b/test/comparison-tests/localTsImplementationOfTypings/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.36 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 137 bytes {main} [built]
+[./fake.ts] 196 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/node/expectedOutput-4.1/bundle.js b/test/comparison-tests/node/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f53a6e29c
--- /dev/null
+++ b/test/comparison-tests/node/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("/// \n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/node/expectedOutput-4.1/output.txt b/test/comparison-tests/node/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..9f23dfb3d
--- /dev/null
+++ b/test/comparison-tests/node/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.8 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 67 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/node/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/node/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..f53a6e29c
--- /dev/null
+++ b/test/comparison-tests/node/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("/// \n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/node/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/node/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..9f23dfb3d
--- /dev/null
+++ b/test/comparison-tests/node/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.8 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 67 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-4.1/bundle.js b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..9d75ab1f4
--- /dev/null
+++ b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar a = __webpack_require__(/*! a */ \"./node_modules/a/index.ts\");\nconsole.log(a);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.ts":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.ts ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /nodeModulesMeaningfulErrorWhenImportingTs/node_modules/a/index.ts. By default, ts-loader will not compile .ts files in node_modules./nYou should not need to recompile .ts files there, but if you really want to, use the allowTsInNodeModules option./nSee: https://github.com/Microsoft/TypeScript/issues/12358/n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./node_modules/a/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-4.1/output.txt b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..889006393
--- /dev/null
+++ b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-4.1/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.82 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 79 bytes {main} [built]
+[./node_modules/a/index.ts] 659 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./node_modules/a/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for node_modules/a/index.ts. By default, ts-loader will not compile .ts files in node_modules.
+You should not need to recompile .ts files there, but if you really want to, use the allowTsInNodeModules option.
+See: https://github.com/Microsoft/TypeScript/issues/12358
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:8-20
\ No newline at end of file
diff --git a/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..979f48b90
--- /dev/null
+++ b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar a = __webpack_require__(/*! a */ \"./node_modules/a/index.ts\");\nconsole.log(a);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.ts":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.ts ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar elephant = \"In the room\";\nmodule.exports = elephant;\n\n\n//# sourceURL=webpack:///./node_modules/a/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..6c09e2a2f
--- /dev/null
+++ b/test/comparison-tests/nodeModulesMeaningfulErrorWhenImportingTs/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.3 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 115 bytes {main} [built]
+[./node_modules/a/index.ts] 71 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/nodeResolution/expectedOutput-4.1/bundle.js b/test/comparison-tests/nodeResolution/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f62c9cd64
--- /dev/null
+++ b/test/comparison-tests/nodeResolution/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar a = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nconsole.log(a);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/nodeResolution/expectedOutput-4.1/output.txt b/test/comparison-tests/nodeResolution/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..72c093c0e
--- /dev/null
+++ b/test/comparison-tests/nodeResolution/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.19 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 79 bytes {main} [built]
+[./node_modules/a/index.js] 21 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/nodeResolution/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/nodeResolution/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..0435d4e90
--- /dev/null
+++ b/test/comparison-tests/nodeResolution/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar a = __webpack_require__(/*! a */ \"./node_modules/a/index.js\");\nconsole.log(a);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./node_modules/a/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/a/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = 'a';\n\n//# sourceURL=webpack:///./node_modules/a/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/nodeResolution/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/nodeResolution/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..c411fc347
--- /dev/null
+++ b/test/comparison-tests/nodeResolution/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.23 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 115 bytes {main} [built]
+[./node_modules/a/index.js] 21 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/nolib/expectedOutput-4.1/bundle.js b/test/comparison-tests/nolib/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2579b12ff
--- /dev/null
+++ b/test/comparison-tests/nolib/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("parseInt('10');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/nolib/expectedOutput-4.1/output.txt b/test/comparison-tests/nolib/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..8c8e530d0
--- /dev/null
+++ b/test/comparison-tests/nolib/expectedOutput-4.1/output.txt
@@ -0,0 +1,37 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.75 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 16 bytes {main} [built] [1 error]
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'Array'.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'Boolean'.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'Function'.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'IArguments'.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'Number'.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'Object'.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS2318: Cannot find global type 'RegExp'.[39m[22m
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(1,1)[39m[22m
+[1m[31m TS2304: Cannot find name 'parseInt'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/nolib/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/nolib/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..2579b12ff
--- /dev/null
+++ b/test/comparison-tests/nolib/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("parseInt('10');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/nolib/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/nolib/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ee4d4ca16
--- /dev/null
+++ b/test/comparison-tests/nolib/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.75 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 16 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/npmLink/expectedOutput-4.1/bundle.js b/test/comparison-tests/npmLink/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..287c4a520
--- /dev/null
+++ b/test/comparison-tests/npmLink/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../../test/comparison-tests/testLib/foo.ts":
+/*!******************************************************************!*\
+ !*** /workspaces/ts-loader/test/comparison-tests/testLib/foo.ts ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports[\"default\"] = 'foo';\n\n\n//# sourceURL=webpack:////workspaces/ts-loader/test/comparison-tests/testLib/foo.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar foo_1 = __webpack_require__(/*! lib/foo */ \"../../test/comparison-tests/testLib/foo.ts\");\nconsole.log(foo_1[\"default\"]);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/npmLink/expectedOutput-4.1/output.txt b/test/comparison-tests/npmLink/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..e139e212a
--- /dev/null
+++ b/test/comparison-tests/npmLink/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.45 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../../test/comparison-tests/testLib/foo.ts] test/comparison-tests/testLib/foo.ts 69 bytes {main} [built]
+[./app.ts] 104 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/npmLink/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/npmLink/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..dee869d56
--- /dev/null
+++ b/test/comparison-tests/npmLink/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../../test/comparison-tests/testLib/foo.ts":
+/*!******************************************************************!*\
+ !*** /workspaces/ts-loader/test/comparison-tests/testLib/foo.ts ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'foo';\n\n\n//# sourceURL=webpack:////workspaces/ts-loader/test/comparison-tests/testLib/foo.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foo_1 = __webpack_require__(/*! lib/foo */ \"../../test/comparison-tests/testLib/foo.ts\");\nconsole.log(foo_1.default);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/npmLink/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/npmLink/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..875e3d2db
--- /dev/null
+++ b/test/comparison-tests/npmLink/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.52 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../../test/comparison-tests/testLib/foo.ts] test/comparison-tests/testLib/foo.ts 102 bytes {main} [built]
+[./app.ts] 137 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/bundle.js b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1780017e3
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/output.txt b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..f33d2f14a
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main} [built]
+[./submodule/submodule.ts] 149 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..69c4dcc59
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething2(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..9fac8da0d
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 170 bytes {main} [built] [1 error]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,13)[39m[22m
+[1m[31m TS2551: Property 'doSomething2' does not exist on type 'typeof externalLib'. Did you mean 'doSomething'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..1780017e3
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..1afd1cf5f
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.83 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..05355f590
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..77bfaf8ba
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.87 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main} [built]
+[./submodule/submodule.ts] 149 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..8cc47b54f
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething2(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..82749e570
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.87 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 206 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..05355f590
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar submodule = __webpack_require__(/*! ./submodule/submodule */ \"./submodule/submodule.ts\");\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(submodule);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./submodule/submodule.ts":
+/*!********************************!*\
+ !*** ./submodule/submodule.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething(\"\");\nvar message = \"Hello from submodule\";\nmodule.exports = message;\n\n\n//# sourceURL=webpack:///./submodule/submodule.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..1d7ef7e16
--- /dev/null
+++ b/test/comparison-tests/onlyCompileBundledFiles/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.87 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/externalLib.js] 55 bytes {main}
+[./submodule/submodule.ts] 149 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/bundle.js b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..cc58e783f
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar message_1 = __webpack_require__(/*! ./message */ \"./message.ts\");\nconsole.log(message_1.message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./message.ts":
+/*!********************!*\
+ !*** ./message.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.message = void 0;\nexports.message = 'Hello, world!';\n\n\n//# sourceURL=webpack:///./message.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..63e64ec8d
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.25 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 111 bytes {main} [built]
+[./message.ts] 102 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..cc58e783f
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar message_1 = __webpack_require__(/*! ./message */ \"./message.ts\");\nconsole.log(message_1.message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./message.ts":
+/*!********************!*\
+ !*** ./message.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.message = void 0;\nexports.message = 'Hello, world!';\n\n\n//# sourceURL=webpack:///./message.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..d4ef941a2
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.25 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 111 bytes {main} [built]
+[./message.ts] 102 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..cc58e783f
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar message_1 = __webpack_require__(/*! ./message */ \"./message.ts\");\nconsole.log(message_1.message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./message.ts":
+/*!********************!*\
+ !*** ./message.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.message = void 0;\nexports.message = 'Hello, world!';\n\n\n//# sourceURL=webpack:///./message.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..63e64ec8d
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.25 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 111 bytes {main} [built]
+[./message.ts] 102 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..fa5830a76
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar message_1 = __webpack_require__(/*! ./message */ \"./message.ts\");\nconsole.log(message_1.message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./message.ts":
+/*!********************!*\
+ !*** ./message.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.message = void 0;\nexports.message = 'Hello, world!';\n\n\n//# sourceURL=webpack:///./message.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3acbead76
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 147 bytes {main} [built]
+[./message.ts] 138 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..fa5830a76
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar message_1 = __webpack_require__(/*! ./message */ \"./message.ts\");\nconsole.log(message_1.message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./message.ts":
+/*!********************!*\
+ !*** ./message.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.message = void 0;\nexports.message = 'Hello, world!';\n\n\n//# sourceURL=webpack:///./message.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..18a8c9e84
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 147 bytes {main} [built]
+[./message.ts] 138 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..fa5830a76
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar message_1 = __webpack_require__(/*! ./message */ \"./message.ts\");\nconsole.log(message_1.message);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./message.ts":
+/*!********************!*\
+ !*** ./message.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.message = void 0;\nexports.message = 'Hello, world!';\n\n\n//# sourceURL=webpack:///./message.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..28dfe5d87
--- /dev/null
+++ b/test/comparison-tests/otherLoadersWatch/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 147 bytes {main}
+[./message.ts] 138 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/production/expectedOutput-4.1/output.txt b/test/comparison-tests/production/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..63923ad42
--- /dev/null
+++ b/test/comparison-tests/production/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 930 bytes 0 main
+Entrypoint main = bundle.js
+[0] ./app.ts 27 bytes {0} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(4,1)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/production/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/production/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4cfdd438e
--- /dev/null
+++ b/test/comparison-tests/production/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1 @@
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t){}]);
\ No newline at end of file
diff --git a/test/comparison-tests/production/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/production/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..35ec561d3
--- /dev/null
+++ b/test/comparison-tests/production/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 930 bytes 0 [emitted] main
+Entrypoint main = bundle.js
+[0] ./app.ts 27 bytes {0} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferences/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferences/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ceca3b200
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferences/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..e72c6046a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/bundle.js
@@ -0,0 +1,123 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesMultiple/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesMultiple/utils/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/index.js
new file mode 100644
index 000000000..c561b2cc0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 30;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..94c944e85
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "83a8bcfe78ca61ceac765c205ef0435e93f65e7bc386ea12d21e0c963a7e824e",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/indirectWithError/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/indirectWithError/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..2fbc0b6ed
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/indirectWithError/tsconfig.tsbuildinfo
@@ -0,0 +1,87 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "91f3e5980bd5693ad3967c8f676eb12a37b89180be92e6fa904374132ff8920c",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./fileWithError.ts",
+ [
+ {
+ "file": "./fileWithError.ts",
+ "start": 36,
+ "length": 13,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'boolean' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./fileWithError.ts",
+ 1
+ ],
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..2fbc0b6ed
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,87 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "91f3e5980bd5693ad3967c8f676eb12a37b89180be92e6fa904374132ff8920c",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./fileWithError.ts",
+ [
+ {
+ "file": "./fileWithError.ts",
+ "start": 36,
+ "length": 13,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'boolean' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./fileWithError.ts",
+ 1
+ ],
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..4345c98ee
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/output.txt
@@ -0,0 +1,41 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.43 KiB main [emitted] main
+ common/index.d.ts 42 bytes [emitted]
+ common/index.js 128 bytes [emitted]
+ common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ indirectWithError/tsconfig.tsbuildinfo 3.1 KiB [emitted]
+ lib/tsconfig.tsbuildinfo 3.1 KiB [emitted]
+ unreferenced/index.d.ts 48 bytes [emitted]
+ unreferenced/index.js 169 bytes [emitted]
+ unreferenced/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ unreferencedIndirect/index.d.ts 56 bytes [emitted]
+ unreferencedIndirect/index.js 209 bytes [emitted]
+unreferencedIndirect/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./lib/index.ts] 475 bytes {main} [built] [failed] [1 error]
+[./utils/index.ts] 477 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in ./utils/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for utils/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 4:14-32
+
+ERROR in lib/fileWithError.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/fileWithError.ts(2,5)[39m[22m
+[1m[31m TS2322: Type 'boolean' is not assignable to type 'string'.[39m[22m
+
+ERROR in indirectWithError/fileWithError.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mindirectWithError/fileWithError.ts(2,5)[39m[22m
+[1m[31m TS2322: Type 'boolean' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..f2224a5b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesMultiple/utils/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/fileWithError.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/fileWithError.d.ts
new file mode 100644
index 000000000..27e069e94
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/fileWithError.d.ts
@@ -0,0 +1 @@
+export declare function foo(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/fileWithError.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/fileWithError.js
new file mode 100644
index 000000000..4cd8719c8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/fileWithError.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.foo = void 0;
+function foo() {
+ return "hello world";
+}
+exports.foo = foo;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d058d0599
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,61 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "0dda94f9fb4df4c74ff92d8109d8db2122e4c980bb13857b2a538c2ac0b33c64",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./fileWithError.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..53ef7bfcb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,23 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.11 KiB main [emitted] main
+ lib/fileWithError.d.ts 39 bytes [emitted]
+ lib/fileWithError.js 127 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 119 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.59 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
+[./utils/index.ts] 477 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./utils/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for utils/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 4:14-32
+
+ERROR in indirectWithError/fileWithError.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mindirectWithError/fileWithError.ts(2,5)[39m[22m
+[1m[31m TS2322: Type 'boolean' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..09c0243ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/index.ts":
+/*!*************************!*\
+ !*** ./common/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///./common/index.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"./common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/fileWithError.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/fileWithError.d.ts
new file mode 100644
index 000000000..27e069e94
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/fileWithError.d.ts
@@ -0,0 +1 @@
+export declare function foo(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/fileWithError.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/fileWithError.js
new file mode 100644
index 000000000..215cdeb2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/fileWithError.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.foo = void 0;
+function foo() {
+ return "hello i fixed this error";
+}
+exports.foo = foo;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..af7363e5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/indirectWithError/tsconfig.tsbuildinfo
@@ -0,0 +1,61 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "e8c36f5bf4681d8c0c1866ed04f823e66548c8a788b325b672026efb17e9a384",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./fileWithError.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..6c6acf232
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.27 KiB main [emitted] main
+ indirectWithError/fileWithError.d.ts 39 bytes [emitted]
+ indirectWithError/fileWithError.js 140 bytes [emitted]
+ indirectWithError/index.d.ts 84 bytes [emitted]
+ indirectWithError/index.js 119 bytes [emitted]
+indirectWithError/tsconfig.tsbuildinfo 2.59 KiB [emitted]
+ utils/index.d.ts 39 bytes [emitted]
+ utils/index.js 169 bytes [emitted]
+ utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./common/index.ts] 128 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/index.d.ts
new file mode 100644
index 000000000..590545c75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/index.d.ts
@@ -0,0 +1 @@
+export declare function utils(): void;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/index.js
new file mode 100644
index 000000000..7cde7e732
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..e96514ecb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch1/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "4c7e50bd7f85cc5d64f963157685ca8eb1223e12466f47c719aaf1af32173088",
+ "signature": "2c471583ee40dd55eed961a2de47a5014f6639fa90572027eec9139c40293e19",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..09c0243ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/index.ts":
+/*!*************************!*\
+ !*** ./common/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///./common/index.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"./common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..3198ac028
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.27 KiB main [emitted] main
+ unreferenced/index.d.ts 48 bytes [emitted]
+ unreferenced/index.js 183 bytes [emitted]
+unreferenced/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/index.d.ts
new file mode 100644
index 000000000..cd1cc7776
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferenced(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/index.js
new file mode 100644
index 000000000..184fe4303
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferenced = void 0;
+function unreferenced() {
+ return "i am unreferenced without error";
+}
+exports.unreferenced = unreferenced;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c73295e77
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch2/unreferenced/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "bb8ba6128be1271d91fd80319ca81516b664c6a68b5409b2991f70018b6c9e67",
+ "signature": "0de8093b7e96f737fa6d441f6d79e8ace62ba5d74bf9324a08fb773d8d32fc6d",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/bundle.js
new file mode 100644
index 000000000..09c0243ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/index.ts":
+/*!*************************!*\
+ !*** ./common/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///./common/index.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"./common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..b6724dc76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.27 KiB main [emitted] main
+unreferencedIndirect/tsconfig.tsbuildinfo 2.68 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
+
+ERROR in unreferencedIndirect/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36munreferencedIndirect/index.ts(2,3)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/unreferencedIndirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/unreferencedIndirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..569ce2a72
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch3/unreferencedIndirect/tsconfig.tsbuildinfo
@@ -0,0 +1,73 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d442ceff036096362114a6b3c3fc728f2631155c62bd9f9a5ba0a282d1ff6b9c",
+ "signature": "2c1fe99ebadd28030971552c5b38142ab5a93ccb879983a2cecd1ab71d777dfd",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 51,
+ "length": 48,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'string' is not assignable to type 'number'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/bundle.js
new file mode 100644
index 000000000..09c0243ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/index.ts":
+/*!*************************!*\
+ !*** ./common/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///./common/index.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"./common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..4f0b6617d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.27 KiB main [emitted] main
+ unreferencedIndirect/index.d.ts 56 bytes [emitted]
+ unreferencedIndirect/index.js 225 bytes [emitted]
+unreferencedIndirect/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/index.d.ts
new file mode 100644
index 000000000..a9c923d2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferencedIndirect(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/index.js
new file mode 100644
index 000000000..44db5b50e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferencedIndirect = void 0;
+function unreferencedIndirect() {
+ return "i am unreferencedIndirect now fixed error";
+}
+exports.unreferencedIndirect = unreferencedIndirect;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9fc8c4331
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch4/unreferencedIndirect/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "25e6889f7998ef0640339eb29cd18ffe0a26a90d6ab573c95601f51593801064",
+ "signature": "5081781ea12d9924e909db967d29184ff3e0b8ca05d30ef60b8d696e0b50013e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/bundle.js
new file mode 100644
index 000000000..09c0243ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/index.ts":
+/*!*************************!*\
+ !*** ./common/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///./common/index.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"./common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..e35154d19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.27 KiB main [emitted] main
+unreferenced/tsconfig.tsbuildinfo 2.68 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 182 bytes {main} [built]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
+
+ERROR in unreferenced/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36munreferenced/index.ts(2,3)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/unreferenced/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/unreferenced/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c820eed07
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/patch5/unreferenced/tsconfig.tsbuildinfo
@@ -0,0 +1,73 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "a37fe63cb9341169cb1ad08e3df365ac56639ae5518c883090e0dee4941a2fe1",
+ "signature": "2a0d33199723c48fa395ddf78eb2f2b8ecbed53d595ec7e591dea65384d9588b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 43,
+ "length": 38,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'string' is not assignable to type 'number'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/index.d.ts
new file mode 100644
index 000000000..cd1cc7776
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferenced(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/index.js
new file mode 100644
index 000000000..2a6e4b7c9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferenced = void 0;
+function unreferenced() {
+ return "i am unreferenced";
+}
+exports.unreferenced = unreferenced;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..a68ee6954
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferenced/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "71b9a35449a6c117c0de0bc5035eb20046c4d436d28294a9d6be2c1a9920ad98",
+ "signature": "0de8093b7e96f737fa6d441f6d79e8ace62ba5d74bf9324a08fb773d8d32fc6d",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/index.d.ts
new file mode 100644
index 000000000..a9c923d2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferencedIndirect(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/index.js
new file mode 100644
index 000000000..87bc79753
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferencedIndirect = void 0;
+function unreferencedIndirect() {
+ return "i am unreferencedIndirect";
+}
+exports.unreferencedIndirect = unreferencedIndirect;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..e91a8a1f9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-4.1/unreferencedIndirect/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d2b6e2d5879e5092e979620936598256494f23e7449ca2b326a2618f9b4488c2",
+ "signature": "5081781ea12d9924e909db967d29184ff3e0b8ca05d30ef60b8d696e0b50013e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..fd4f00580
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,123 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesMultiple.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesMultiple.transpile/utils/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/index.js
new file mode 100644
index 000000000..c561b2cc0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 30;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..94c944e85
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "83a8bcfe78ca61ceac765c205ef0435e93f65e7bc386ea12d21e0c963a7e824e",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/indirectWithError/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/indirectWithError/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..2fbc0b6ed
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/indirectWithError/tsconfig.tsbuildinfo
@@ -0,0 +1,87 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "91f3e5980bd5693ad3967c8f676eb12a37b89180be92e6fa904374132ff8920c",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./fileWithError.ts",
+ [
+ {
+ "file": "./fileWithError.ts",
+ "start": 36,
+ "length": 13,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'boolean' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./fileWithError.ts",
+ 1
+ ],
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..2fbc0b6ed
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,87 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "91f3e5980bd5693ad3967c8f676eb12a37b89180be92e6fa904374132ff8920c",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./fileWithError.ts",
+ [
+ {
+ "file": "./fileWithError.ts",
+ "start": 36,
+ "length": 13,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'boolean' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./fileWithError.ts",
+ 1
+ ],
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..b37ac0724
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,39 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.49 KiB main [emitted] main
+ common/index.d.ts 42 bytes [emitted]
+ common/index.js 128 bytes [emitted]
+ common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ indirectWithError/tsconfig.tsbuildinfo 3.1 KiB [emitted]
+ lib/tsconfig.tsbuildinfo 3.1 KiB [emitted]
+ unreferenced/index.d.ts 48 bytes [emitted]
+ unreferenced/index.js 169 bytes [emitted]
+ unreferenced/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ unreferencedIndirect/index.d.ts 56 bytes [emitted]
+ unreferencedIndirect/index.js 209 bytes [emitted]
+unreferencedIndirect/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 218 bytes {main} [built] [2 errors]
+[./lib/index.ts] 485 bytes {main} [built] [failed] [1 error]
+[./utils/index.ts] 487 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mindirectWithError/fileWithError.ts(2,5)[39m[22m
+[1m[31m TS2322: Type 'boolean' is not assignable to type 'string'.[39m[22m
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/fileWithError.ts(2,5)[39m[22m
+[1m[31m TS2322: Type 'boolean' is not assignable to type 'string'.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in ./utils/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for utils/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 4:14-32
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..97cec6b4f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,124 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesMultiple.transpile/utils/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/fileWithError.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/fileWithError.d.ts
new file mode 100644
index 000000000..27e069e94
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/fileWithError.d.ts
@@ -0,0 +1 @@
+export declare function foo(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/fileWithError.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/fileWithError.js
new file mode 100644
index 000000000..4cd8719c8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/fileWithError.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.foo = void 0;
+function foo() {
+ return "hello world";
+}
+exports.foo = foo;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d058d0599
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,61 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "0dda94f9fb4df4c74ff92d8109d8db2122e4c980bb13857b2a538c2ac0b33c64",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./fileWithError.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..d1a5de7c5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,22 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.15 KiB main [emitted] main
+ lib/fileWithError.d.ts 39 bytes [emitted]
+ lib/fileWithError.js 127 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 119 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.59 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 218 bytes {main} [built] [1 error]
+[./lib/index.ts] 119 bytes {main} [built]
+[./utils/index.ts] 487 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mindirectWithError/fileWithError.ts(2,5)[39m[22m
+[1m[31m TS2322: Type 'boolean' is not assignable to type 'string'.[39m[22m
+
+ERROR in ./utils/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for utils/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 4:14-32
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..b7c7afd02
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./common/index.ts":
+/*!*************************!*\
+ !*** ./common/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///./common/index.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ }),
+
+/***/ "./utils/index.ts":
+/*!************************!*\
+ !*** ./utils/index.ts ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"./common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///./utils/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/fileWithError.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/fileWithError.d.ts
new file mode 100644
index 000000000..27e069e94
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/fileWithError.d.ts
@@ -0,0 +1 @@
+export declare function foo(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/fileWithError.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/fileWithError.js
new file mode 100644
index 000000000..215cdeb2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/fileWithError.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.foo = void 0;
+function foo() {
+ return "hello i fixed this error";
+}
+exports.foo = foo;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..af7363e5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/indirectWithError/tsconfig.tsbuildinfo
@@ -0,0 +1,61 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./fileWithError.ts": {
+ "version": "e8c36f5bf4681d8c0c1866ed04f823e66548c8a788b325b672026efb17e9a384",
+ "signature": "3dee7bbd2b685bdcb66cfc9b45605d6689ea42852231fa79cac9a40643c0fa22",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./fileWithError.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..b960ed399
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.31 KiB main [emitted] main
+ indirectWithError/fileWithError.d.ts 39 bytes [emitted]
+ indirectWithError/fileWithError.js 140 bytes [emitted]
+ indirectWithError/index.d.ts 84 bytes [emitted]
+ indirectWithError/index.js 119 bytes [emitted]
+indirectWithError/tsconfig.tsbuildinfo 2.59 KiB [emitted]
+ utils/index.d.ts 39 bytes [emitted]
+ utils/index.js 169 bytes [emitted]
+ utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 218 bytes {main} [built]
+[./common/index.ts] 128 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/index.d.ts
new file mode 100644
index 000000000..590545c75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/index.d.ts
@@ -0,0 +1 @@
+export declare function utils(): void;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/index.js
new file mode 100644
index 000000000..7cde7e732
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..e96514ecb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch1/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "4c7e50bd7f85cc5d64f963157685ca8eb1223e12466f47c719aaf1af32173088",
+ "signature": "2c471583ee40dd55eed961a2de47a5014f6639fa90572027eec9139c40293e19",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..0afd355bc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.31 KiB main main
+unreferencedIndirect/tsconfig.tsbuildinfo 2.68 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 218 bytes {main} [built] [1 error]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36munreferencedIndirect/index.ts(2,3)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch3/unreferencedIndirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch3/unreferencedIndirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..569ce2a72
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch3/unreferencedIndirect/tsconfig.tsbuildinfo
@@ -0,0 +1,73 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d442ceff036096362114a6b3c3fc728f2631155c62bd9f9a5ba0a282d1ff6b9c",
+ "signature": "2c1fe99ebadd28030971552c5b38142ab5a93ccb879983a2cecd1ab71d777dfd",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 51,
+ "length": 48,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'string' is not assignable to type 'number'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..6fd596b79
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.31 KiB main main
+ unreferencedIndirect/index.d.ts 56 bytes [emitted]
+ unreferencedIndirect/index.js 225 bytes [emitted]
+unreferencedIndirect/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 218 bytes {main} [built]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/index.d.ts
new file mode 100644
index 000000000..a9c923d2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferencedIndirect(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/index.js
new file mode 100644
index 000000000..44db5b50e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferencedIndirect = void 0;
+function unreferencedIndirect() {
+ return "i am unreferencedIndirect now fixed error";
+}
+exports.unreferencedIndirect = unreferencedIndirect;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9fc8c4331
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch4/unreferencedIndirect/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "25e6889f7998ef0640339eb29cd18ffe0a26a90d6ab573c95601f51593801064",
+ "signature": "5081781ea12d9924e909db967d29184ff3e0b8ca05d30ef60b8d696e0b50013e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..c05b76041
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 5.31 KiB main main
+unreferenced/tsconfig.tsbuildinfo 2.68 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 218 bytes {main} [built] [1 error]
+[./common/index.ts] 128 bytes {main}
+[./lib/index.ts] 119 bytes {main}
+[./utils/index.ts] 169 bytes {main}
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36munreferenced/index.ts(2,3)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch5/unreferenced/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch5/unreferenced/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c820eed07
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/patch5/unreferenced/tsconfig.tsbuildinfo
@@ -0,0 +1,73 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "a37fe63cb9341169cb1ad08e3df365ac56639ae5518c883090e0dee4941a2fe1",
+ "signature": "2a0d33199723c48fa395ddf78eb2f2b8ecbed53d595ec7e591dea65384d9588b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 43,
+ "length": 38,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'string' is not assignable to type 'number'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/index.d.ts
new file mode 100644
index 000000000..cd1cc7776
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferenced(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/index.js
new file mode 100644
index 000000000..2a6e4b7c9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferenced = void 0;
+function unreferenced() {
+ return "i am unreferenced";
+}
+exports.unreferenced = unreferenced;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..a68ee6954
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferenced/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "71b9a35449a6c117c0de0bc5035eb20046c4d436d28294a9d6be2c1a9920ad98",
+ "signature": "0de8093b7e96f737fa6d441f6d79e8ace62ba5d74bf9324a08fb773d8d32fc6d",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/index.d.ts b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/index.d.ts
new file mode 100644
index 000000000..a9c923d2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/index.d.ts
@@ -0,0 +1 @@
+export declare function unreferencedIndirect(): string;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/index.js b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/index.js
new file mode 100644
index 000000000..87bc79753
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.unreferencedIndirect = void 0;
+function unreferencedIndirect() {
+ return "i am unreferencedIndirect";
+}
+exports.unreferencedIndirect = unreferencedIndirect;
diff --git a/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..e91a8a1f9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultiple/expectedOutput-transpile-4.1/unreferencedIndirect/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d2b6e2d5879e5092e979620936598256494f23e7449ca2b326a2618f9b4488c2",
+ "signature": "5081781ea12d9924e909db967d29184ff3e0b8ca05d30ef60b8d696e0b50013e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/app/bundle.js
new file mode 100644
index 000000000..041014d08
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/index.js
new file mode 100644
index 000000000..c561b2cc0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 30;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..94c944e85
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "83a8bcfe78ca61ceac765c205ef0435e93f65e7bc386ea12d21e0c963a7e824e",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..a58631d01
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/indirect/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..a58631d01
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..d60409bff
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/output.txt
@@ -0,0 +1,19 @@
+ Asset Size Chunks Chunk Names
+ ../common/index.d.ts 42 bytes [emitted]
+ ../common/index.js 128 bytes [emitted]
+ ../common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ ../indirect/index.d.ts 84 bytes [emitted]
+ ../indirect/index.js 119 bytes [emitted]
+../indirect/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ ../lib/index.d.ts 84 bytes [emitted]
+ ../lib/index.js 119 bytes [emitted]
+ ../lib/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ ../utils/index.d.ts 39 bytes [emitted]
+ ../utils/index.js 169 bytes [emitted]
+ ../utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ bundle.js 5.29 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main} [built]
+[../utils/index.ts] 169 bytes {main} [built]
+[./app.ts] 184 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/app/bundle.js
new file mode 100644
index 000000000..1952eb33b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/index.js
new file mode 100644
index 000000000..4fafb1dd0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 35;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4a8ba58c1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "ea4f1fab5d827d59b4b09d9e42b615faf16b08c259290b9fcb5982bb9543bd52",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..6fd7eb1b6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../common/index.d.ts 42 bytes [emitted]
+ ../common/index.js 128 bytes [emitted]
+../common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ bundle.js 5.29 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 169 bytes {main} [built]
+[./app.ts] 184 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/app/bundle.js
new file mode 100644
index 000000000..b005a7d9d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..8fcb86d52
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../utils/index.d.ts 81 bytes [emitted]
+ ../utils/index.js 249 bytes [emitted]
+../utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ bundle.js 5.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 184 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/index.d.ts
new file mode 100644
index 000000000..6ab3917bc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/index.d.ts
@@ -0,0 +1,2 @@
+export declare function utils(): void;
+export declare function utils2(): string;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/index.js
new file mode 100644
index 000000000..2ebba61c6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.utils2 = exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
+function utils2() { return "hello"; }
+exports.utils2 = utils2;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..89d54c224
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch1/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "a1dbdf6843733c9641c0dccfc0fd2ac2bc4cb630b60143672e64e0a65a8dbb7a",
+ "signature": "965912a69421fffc4b79247cd826f3e8bdb5cdbd3ab8d0b5ca57e5a40cfc5869",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch2/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch2/app/bundle.js
new file mode 100644
index 000000000..fa5a91bbf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch2/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\nutils_1.utils2();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..689d0415c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,7 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5.39 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main}
+[./app.ts] 202 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/app/bundle.js
new file mode 100644
index 000000000..fa5a91bbf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\nutils_1.utils2();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..b08876195
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/common/tsconfig.tsbuildinfo
@@ -0,0 +1,73 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "8dc151219b7f551da173dd2304fc01ffc31268701f42ee5f65b0b30138d4dd3c",
+ "signature": "233a16e654a6b6507aca0421baacb8e3a0bb95be0c1818690f06f86119b0bc43",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 37,
+ "length": 10,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..cbffd9cda
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+../common/tsconfig.tsbuildinfo 2.68 KiB [emitted]
+ bundle.js 5.39 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built] [1 error]
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 202 bytes {main} [built]
+
+ERROR in common/index.ts
+../common/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mcommon/index.ts(2,3)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/app/bundle.js
new file mode 100644
index 000000000..fa5a91bbf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\nutils_1.utils2();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/index.js
new file mode 100644
index 000000000..4fafb1dd0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 35;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4a8ba58c1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "ea4f1fab5d827d59b4b09d9e42b615faf16b08c259290b9fcb5982bb9543bd52",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..9a0bbe11c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../common/index.d.ts 42 bytes [emitted]
+ ../common/index.js 128 bytes [emitted]
+../common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ bundle.js 5.39 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 202 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/app/bundle.js
new file mode 100644
index 000000000..fa5a91bbf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\nutils_1.utils2();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..47669f95b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+../utils/tsconfig.tsbuildinfo 3.02 KiB [emitted]
+ bundle.js 5.39 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built] [1 error]
+[./app.ts] 202 bytes {main} [built]
+
+ERROR in utils/index.ts
+../utils/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mutils/index.ts(5,36)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..93726fed5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch5/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,83 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "5f3b60afa134ead3910d0edb722e281f51797b8747253688a08bced01be97e19",
+ "signature": "b45004303c96a0df80573d7d8505f23f55598a904ccea3781900f27f32ee56b2",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 111,
+ "length": 15,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'string' is not assignable to type 'number'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/app/bundle.js
new file mode 100644
index 000000000..fa5a91bbf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\nutils_1.utils2();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/output.txt
new file mode 100644
index 000000000..9ec0b9273
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../utils/index.d.ts 81 bytes [emitted]
+ ../utils/index.js 249 bytes [emitted]
+../utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ bundle.js 5.39 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 202 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/index.d.ts
new file mode 100644
index 000000000..6ab3917bc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/index.d.ts
@@ -0,0 +1,2 @@
+export declare function utils(): void;
+export declare function utils2(): string;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/index.js
new file mode 100644
index 000000000..2ebba61c6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.utils2 = exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
+function utils2() { return "hello"; }
+exports.utils2 = utils2;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..89d54c224
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/patch6/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "a1dbdf6843733c9641c0dccfc0fd2ac2bc4cb630b60143672e64e0a65a8dbb7a",
+ "signature": "965912a69421fffc4b79247cd826f3e8bdb5cdbd3ab8d0b5ca57e5a40cfc5869",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/index.d.ts
new file mode 100644
index 000000000..590545c75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/index.d.ts
@@ -0,0 +1 @@
+export declare function utils(): void;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/index.js
new file mode 100644
index 000000000..7cde7e732
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..e96514ecb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-4.1/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "4c7e50bd7f85cc5d64f963157685ca8eb1223e12466f47c719aaf1af32173088",
+ "signature": "2c471583ee40dd55eed961a2de47a5014f6639fa90572027eec9139c40293e19",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/app/bundle.js
new file mode 100644
index 000000000..d8c5605b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 30;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/index.js
new file mode 100644
index 000000000..c561b2cc0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 30;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..94c944e85
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "83a8bcfe78ca61ceac765c205ef0435e93f65e7bc386ea12d21e0c963a7e824e",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..a58631d01
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/indirect/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..b7785ef20
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..a58631d01
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..a16ead0aa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,19 @@
+ Asset Size Chunks Chunk Names
+ ../common/index.d.ts 42 bytes [emitted]
+ ../common/index.js 128 bytes [emitted]
+ ../common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ ../indirect/index.d.ts 84 bytes [emitted]
+ ../indirect/index.js 119 bytes [emitted]
+../indirect/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ ../lib/index.d.ts 84 bytes [emitted]
+ ../lib/index.js 119 bytes [emitted]
+ ../lib/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ ../utils/index.d.ts 39 bytes [emitted]
+ ../utils/index.js 169 bytes [emitted]
+ ../utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ bundle.js 5.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main} [built]
+[../utils/index.ts] 169 bytes {main} [built]
+[./app.ts] 220 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/app/bundle.js
new file mode 100644
index 000000000..d125d00b2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/index.js
new file mode 100644
index 000000000..4fafb1dd0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 35;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4a8ba58c1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "ea4f1fab5d827d59b4b09d9e42b615faf16b08c259290b9fcb5982bb9543bd52",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..697009cc5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../common/index.d.ts 42 bytes [emitted]
+ ../common/index.js 128 bytes [emitted]
+../common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ bundle.js 5.33 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 169 bytes {main} [built]
+[./app.ts] 220 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/app/bundle.js
new file mode 100644
index 000000000..242b1aa29
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..c1609783f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../utils/index.d.ts 81 bytes [emitted]
+ ../utils/index.js 249 bytes [emitted]
+../utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ bundle.js 5.41 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 220 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/index.d.ts
new file mode 100644
index 000000000..6ab3917bc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/index.d.ts
@@ -0,0 +1,2 @@
+export declare function utils(): void;
+export declare function utils2(): string;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/index.js
new file mode 100644
index 000000000..2ebba61c6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.utils2 = exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
+function utils2() { return "hello"; }
+exports.utils2 = utils2;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..89d54c224
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch1/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "a1dbdf6843733c9641c0dccfc0fd2ac2bc4cb630b60143672e64e0a65a8dbb7a",
+ "signature": "965912a69421fffc4b79247cd826f3e8bdb5cdbd3ab8d0b5ca57e5a40cfc5869",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch2/app/bundle.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch2/app/bundle.js
new file mode 100644
index 000000000..488ec7463
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch2/app/bundle.js
@@ -0,0 +1,137 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/index.ts":
+/*!**************************!*\
+ !*** ../common/index.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.common = void 0;\nfunction common() {\n return 35;\n}\nexports.common = common;\n\n\n//# sourceURL=webpack:///../common/index.ts?");
+
+/***/ }),
+
+/***/ "../lib/index.ts":
+/*!***********************!*\
+ !*** ../lib/index.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///../lib/index.ts?");
+
+/***/ }),
+
+/***/ "../utils/index.ts":
+/*!*************************!*\
+ !*** ../utils/index.ts ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.utils2 = exports.utils = void 0;\nvar common_1 = __webpack_require__(/*! ../common */ \"../common/index.ts\");\nfunction utils() {\n common_1.common();\n}\nexports.utils = utils;\nfunction utils2() { return \"hello\"; }\nexports.utils2 = utils2;\n\n\n//# sourceURL=webpack:///../utils/index.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ../lib */ \"../lib/index.ts\");\nvar utils_1 = __webpack_require__(/*! ../utils */ \"../utils/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\nutils_1.utils();\nutils_1.utils2();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..08eb706eb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,7 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5.43 KiB main [emitted] main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main}
+[./app.ts] 238 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch3/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch3/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..b08876195
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch3/common/tsconfig.tsbuildinfo
@@ -0,0 +1,73 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "8dc151219b7f551da173dd2304fc01ffc31268701f42ee5f65b0b30138d4dd3c",
+ "signature": "233a16e654a6b6507aca0421baacb8e3a0bb95be0c1818690f06f86119b0bc43",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 37,
+ "length": 10,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..0eeca0869
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+../common/tsconfig.tsbuildinfo 2.68 KiB [emitted]
+ bundle.js 5.43 KiB main main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 238 bytes {main} [built] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mcommon/index.ts(2,3)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/index.d.ts
new file mode 100644
index 000000000..78cb4cd49
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/index.d.ts
@@ -0,0 +1 @@
+export declare function common(): number;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/index.js
new file mode 100644
index 000000000..4fafb1dd0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/index.js
@@ -0,0 +1,7 @@
+"use strict";
+exports.__esModule = true;
+exports.common = void 0;
+function common() {
+ return 35;
+}
+exports.common = common;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4a8ba58c1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/common/tsconfig.tsbuildinfo
@@ -0,0 +1,55 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "ea4f1fab5d827d59b4b09d9e42b615faf16b08c259290b9fcb5982bb9543bd52",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..2f2035592
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../common/index.d.ts 42 bytes [emitted]
+ ../common/index.js 128 bytes [emitted]
+../common/tsconfig.tsbuildinfo 2.32 KiB [emitted]
+ bundle.js 5.43 KiB main main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main} [built]
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 238 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..3b91ec112
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+../utils/tsconfig.tsbuildinfo 3.02 KiB [emitted]
+ bundle.js 5.43 KiB main main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 238 bytes {main} [built] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mutils/index.ts(5,36)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch5/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch5/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..93726fed5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch5/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,83 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "5f3b60afa134ead3910d0edb722e281f51797b8747253688a08bced01be97e19",
+ "signature": "b45004303c96a0df80573d7d8505f23f55598a904ccea3781900f27f32ee56b2",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 111,
+ "length": 15,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'string' is not assignable to type 'number'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/output.txt b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/output.txt
new file mode 100644
index 000000000..8c6c39dca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ ../utils/index.d.ts 81 bytes [emitted]
+ ../utils/index.js 249 bytes [emitted]
+../utils/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ bundle.js 5.43 KiB main main
+Entrypoint main = bundle.js
+[../common/index.ts] 128 bytes {main}
+[../lib/index.ts] 119 bytes {main}
+[../utils/index.ts] 249 bytes {main} [built]
+[./app.ts] 238 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/index.d.ts
new file mode 100644
index 000000000..6ab3917bc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/index.d.ts
@@ -0,0 +1,2 @@
+export declare function utils(): void;
+export declare function utils2(): string;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/index.js
new file mode 100644
index 000000000..2ebba61c6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.utils2 = exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
+function utils2() { return "hello"; }
+exports.utils2 = utils2;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..89d54c224
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/patch6/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "a1dbdf6843733c9641c0dccfc0fd2ac2bc4cb630b60143672e64e0a65a8dbb7a",
+ "signature": "965912a69421fffc4b79247cd826f3e8bdb5cdbd3ab8d0b5ca57e5a40cfc5869",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/index.d.ts b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/index.d.ts
new file mode 100644
index 000000000..590545c75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/index.d.ts
@@ -0,0 +1 @@
+export declare function utils(): void;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/index.js b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/index.js
new file mode 100644
index 000000000..7cde7e732
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/index.js
@@ -0,0 +1,8 @@
+"use strict";
+exports.__esModule = true;
+exports.utils = void 0;
+var common_1 = require("../common");
+function utils() {
+ common_1.common();
+}
+exports.utils = utils;
diff --git a/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..e96514ecb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesMultipleDifferentInstance/expectedOutput-transpile-4.1/utils/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/index.d.ts": {
+ "version": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "signature": "43a7b48da056d56d751b52b1b22e1445fe52b56355f0adcbfd52c12ddc3e3ecb",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "4c7e50bd7f85cc5d64f963157685ca8eb1223e12466f47c719aaf1af32173088",
+ "signature": "2c471583ee40dd55eed961a2de47a5014f6639fa90572027eec9139c40293e19",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "../common/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/index.d.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..8f11986c9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/foo.ts":
+/*!********************!*\
+ !*** ./lib/foo.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.foo = void 0;\nexports.foo = 'foo';\n\n\n//# sourceURL=webpack:///./lib/foo.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar foo_1 = __webpack_require__(/*! ./foo */ \"./lib/foo.ts\");\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n foo: foo_1.foo\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/foo.d.ts b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/foo.d.ts
new file mode 100644
index 000000000..07265a895
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/foo.d.ts
@@ -0,0 +1 @@
+export declare const foo = "foo";
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/foo.js b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/foo.js
new file mode 100644
index 000000000..33e8d8400
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/foo.js
@@ -0,0 +1,4 @@
+"use strict";
+exports.__esModule = true;
+exports.foo = void 0;
+exports.foo = 'foo';
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..b05ab0fd1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ foo: string;
+};
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..36ee96b86
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var foo_1 = require("./foo");
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ foo: foo_1.foo
+};
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..dd838c80a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./foo.ts": {
+ "version": "a43230ea8da8a5ab3adc7b12f9eb9d65d1d1e5c87896fb2d8747a1a3f7a3f759",
+ "signature": "4c57bbad758e31eeba3abc8e95e00dbac67b9581c2e7d02884ffb14c672b1520",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "582b90393f0a99a0e2da27ccff010fe0b914246cc25e49da7e760543b0789cf8",
+ "signature": "822618dba4b9d398326f33458039773f2c32dc8940c6134ce0b019b1ff20d068",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./foo.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./foo.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..df257b2e9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.72 KiB main [emitted] main
+ lib/foo.d.ts 34 bytes [emitted]
+ lib/foo.js 84 bytes [emitted]
+ lib/index.d.ts 101 bytes [emitted]
+ lib/index.js 169 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.62 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/foo.ts] 84 bytes {main} [built]
+[./lib/index.ts] 169 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..0afd5f908
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/foo.ts":
+/*!********************!*\
+ !*** ./lib/foo.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.foo = void 0;\nexports.foo = 'foo';\n\n\n//# sourceURL=webpack:///./lib/foo.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar foo_1 = __webpack_require__(/*! ./foo */ \"./lib/foo.ts\");\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n foo: foo_1.foo\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/foo.d.ts b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/foo.d.ts
new file mode 100644
index 000000000..07265a895
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/foo.d.ts
@@ -0,0 +1 @@
+export declare const foo = "foo";
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/foo.js b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/foo.js
new file mode 100644
index 000000000..33e8d8400
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/foo.js
@@ -0,0 +1,4 @@
+"use strict";
+exports.__esModule = true;
+exports.foo = void 0;
+exports.foo = 'foo';
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..b05ab0fd1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ foo: string;
+};
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..36ee96b86
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var foo_1 = require("./foo");
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ foo: foo_1.foo
+};
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..dd838c80a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,65 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./foo.ts": {
+ "version": "a43230ea8da8a5ab3adc7b12f9eb9d65d1d1e5c87896fb2d8747a1a3f7a3f759",
+ "signature": "4c57bbad758e31eeba3abc8e95e00dbac67b9581c2e7d02884ffb14c672b1520",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "582b90393f0a99a0e2da27ccff010fe0b914246cc25e49da7e760543b0789cf8",
+ "signature": "822618dba4b9d398326f33458039773f2c32dc8940c6134ce0b019b1ff20d068",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./foo.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./foo.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..413c5462f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNoSourceMap/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.76 KiB main [emitted] main
+ lib/foo.d.ts 34 bytes [emitted]
+ lib/foo.js 84 bytes [emitted]
+ lib/index.d.ts 101 bytes [emitted]
+ lib/index.js 169 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.62 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/foo.ts] 84 bytes {main} [built]
+[./lib/index.ts] 169 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ceca3b200
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..f83b087db
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c6ef42e1b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "12503634626",
+ "signature": "12503634626",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f14744d77
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..67bf67e8a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-4.1/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.32 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 147 bytes {main} [built] [1 error]
+[./lib/index.ts] 119 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,46)[39m[22m
+[1m[31m TS2339: Property 'four' does not exist on type '{ one: number; two: number; three: number; }'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..9e0baa9e5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5b787614d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.36 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 183 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f14744d77
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..7d6aa5942
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,16 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.32 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 147 bytes {main} [built] [1 error]
+[./lib/index.ts] 119 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,46)[39m[22m
+[1m[31m TS2339: Property 'four' does not exist on type '{ one: number; two: number; three: number; }'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..7ddd7f8ad
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "12503634626",
+ "signature": "12503634626",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-18375343467",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..9e0baa9e5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5b787614d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.36 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 183 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f14744d77
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..67bf67e8a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.32 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 147 bytes {main} [built] [1 error]
+[./lib/index.ts] 119 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,46)[39m[22m
+[1m[31m TS2339: Property 'four' does not exist on type '{ one: number; two: number; three: number; }'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..9e0baa9e5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5b787614d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_ErrorInProject_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.36 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 183 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..738d26493
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SemanticErrorInReference/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..967fccc56
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,78 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d72617818121755fe770ae2c317e676b0d526fe8bfcd4ba4eff1762911aae1b4",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 61,
+ "length": 1,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..c74544a53
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-4.1/output.txt
@@ -0,0 +1,19 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.65 KiB main [emitted] main
+lib/tsconfig.tsbuildinfo 2.78 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 500 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,7)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..08e9b5b77
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SemanticErrorInReference.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..967fccc56
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,78 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d72617818121755fe770ae2c317e676b0d526fe8bfcd4ba4eff1762911aae1b4",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 61,
+ "length": 1,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ec4d53142
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,17 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.7 KiB main [emitted] main
+lib/tsconfig.tsbuildinfo 2.78 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built] [1 error]
+[./lib/index.ts] 510 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,7)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..632fd379b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..967fccc56
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,78 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d72617818121755fe770ae2c317e676b0d526fe8bfcd4ba4eff1762911aae1b4",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 61,
+ "length": 1,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..5eb8fe6c7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,21 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.67 KiB main [emitted] main
+lib/tsconfig.tsbuildinfo 2.78 KiB [emitted]
+ tsconfig.tsbuildinfo 1.36 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 519 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,7)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..f3d96efe7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,48 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..b2fb52c13
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..967fccc56
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,78 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d72617818121755fe770ae2c317e676b0d526fe8bfcd4ba4eff1762911aae1b4",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 61,
+ "length": 1,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5febe8f36
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,17 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.72 KiB main [emitted] main
+lib/tsconfig.tsbuildinfo 2.78 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built] [1 error]
+[./lib/index.ts] 529 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,7)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..80364d3a0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..967fccc56
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,78 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d72617818121755fe770ae2c317e676b0d526fe8bfcd4ba4eff1762911aae1b4",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 61,
+ "length": 1,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..1d22977b8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,19 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.66 KiB main [emitted] main
+lib/tsconfig.tsbuildinfo 2.78 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 509 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,7)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..2be59ba57
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SemanticErrorInReference_WatchApi.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..967fccc56
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,78 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "d72617818121755fe770ae2c317e676b0d526fe8bfcd4ba4eff1762911aae1b4",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ [
+ "./index.ts",
+ [
+ {
+ "file": "./index.ts",
+ "start": 61,
+ "length": 1,
+ "code": 2322,
+ "category": 1,
+ "messageText": "Type 'number' is not assignable to type 'string'."
+ }
+ ]
+ ],
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ],
+ "affectedFilesPendingEmit": [
+ [
+ "./index.ts",
+ 1
+ ],
+ [
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ 1
+ ]
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..9df2cc83f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SemanticErrorInReference_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,17 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.71 KiB main [emitted] main
+lib/tsconfig.tsbuildinfo 2.78 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built] [1 error]
+[./lib/index.ts] 519 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,7)[39m[22m
+[1m[31m TS2322: Type 'number' is not assignable to type 'string'.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..711e9930c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SyntaxErrorInReference/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..f190e2fea
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-4.1/output.txt
@@ -0,0 +1,18 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.65 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 498 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(4,12)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..0a52c894d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SyntaxErrorInReference.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..aad5b9eaf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,16 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.7 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built] [1 error]
+[./lib/index.ts] 508 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(4,12)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..583a3d7e0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..98fa4b8a7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,20 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.67 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.36 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 517 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(4,12)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..f3d96efe7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,48 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..b40828139
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..7675787ac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,16 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.71 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built] [1 error]
+[./lib/index.ts] 527 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(4,12)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..bdc99977b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..aaf4f848a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,18 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.66 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 507 bytes {main} [built] [failed] [2 errors]
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(4,12)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..ebf164835
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: TypeScript emitted no output for /projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi.transpile/lib/index.ts. The most common cause for this is having errors when building referenced projects./n at makeSourceMapAndFinish (/workspaces/ts-loader/dist/index.js:53:18)/n at successLoader (/workspaces/ts-loader/dist/index.js:40:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:23:5)\");\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..fb4278309
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_SyntaxErrorInReference_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,16 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.71 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built] [1 error]
+[./lib/index.ts] 517 bytes {main} [built] [failed] [1 error]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(4,12)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in ./lib/index.ts
+Module build failed (from index.js):
+Error: TypeScript emitted no output for lib/index.ts. The most common cause for this is having errors when building referenced projects.
+ at makeSourceMapAndFinish (dist/index.js:53:18)
+ at successLoader (dist/index.js:40:5)
+ at Object.loader (dist/index.js:23:5)
+ @ ./app.ts 3:12-28
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ceca3b200
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesNotBuilt_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..bd8517f9b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..50ce5d859
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..519abe0d7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.3 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 152 bytes [emitted]
+ lib/out/index.js.map 191 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..bd8517f9b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..50ce5d859
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..12e21e4d1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDir/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 152 bytes [emitted]
+ lib/out/index.js.map 191 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..792e39e13
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..bd8517f9b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..50ce5d859
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..fe096d523
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.36 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 152 bytes [emitted]
+ lib/out/index.js.map 191 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/out/index.js] 152 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..4bad700aa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.js.map
new file mode 100644
index 000000000..da47828f7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..7050b772f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..828b1eb96
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.39 KiB main [emitted] main
+ lib/out/index.d.ts 102 bytes [emitted]
+ lib/out/index.js 183 bytes [emitted]
+ lib/out/index.js.map 224 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..e0edf07a1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..5047215c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.43 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..e0edf07a1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..fd9c15542
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.43 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main}
+
+ERROR in lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/bundle.js
new file mode 100644
index 000000000..e0edf07a1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.js.map
new file mode 100644
index 000000000..6f1b651a7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4f73d6b66
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..62709cf4f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.43 KiB main [emitted] main
+ lib/out/index.d.ts 120 bytes [emitted]
+ lib/out/index.js 178 bytes [emitted]
+ lib/out/index.js.map 231 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch4/bundle.js
new file mode 100644
index 000000000..c4af1b158
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..2d914655a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.44 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 186 bytes {main} [built] [1 error]
+[./lib/out/index.js] 178 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,56)[39m[22m
+[1m[31m TS2551: Property 'ffive' does not exist on type '{ one: number; two: number; three: number; four: number; five: number; }'. Did you mean 'five'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch5/bundle.js
new file mode 100644
index 000000000..08fa55bd4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..9eee18097
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.44 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 185 bytes {main} [built]
+[./lib/out/index.js] 178 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..573327ca6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..bd8517f9b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..50ce5d859
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..54313a0fc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.4 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 152 bytes [emitted]
+ lib/out/index.js.map 191 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/out/index.js] 152 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..4b58d689a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.js.map
new file mode 100644
index 000000000..da47828f7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..7050b772f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..cdd3e7096
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.43 KiB main [emitted] main
+ lib/out/index.d.ts 102 bytes [emitted]
+ lib/out/index.js 183 bytes [emitted]
+ lib/out/index.js.map 224 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..d1901ba32
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..45ca4d5f4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.46 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..99028a1de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.46 KiB main main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built] [2 errors]
+[./lib/out/index.js] 183 bytes {main}
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.js.map
new file mode 100644
index 000000000..6f1b651a7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4f73d6b66
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..a518dadaa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.46 KiB main main
+ lib/out/index.d.ts 120 bytes [emitted]
+ lib/out/index.js 178 bytes [emitted]
+ lib/out/index.js.map 231 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch4/bundle.js
new file mode 100644
index 000000000..5ea6d562c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..e2e95d648
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.48 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 222 bytes {main} [built]
+[./lib/out/index.js] 178 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch5/bundle.js
new file mode 100644
index 000000000..632383519
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..450b169d1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJson/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.48 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 221 bytes {main} [built]
+[./lib/out/index.js] 178 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..792e39e13
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..35bc117da
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.36 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/out/index.js] 152 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..792e39e13
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.js.map
new file mode 100644
index 000000000..da47828f7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..7050b772f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..8057c0d84
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.36 KiB main [emitted] main
+ lib/out/index.d.ts 102 bytes [emitted]
+ lib/out/index.js 183 bytes [emitted]
+ lib/out/index.js.map 224 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/out/index.js] 152 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..e0edf07a1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..5047215c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.43 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..e0edf07a1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..fd9c15542
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.43 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main}
+
+ERROR in lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/bundle.js
new file mode 100644
index 000000000..e0edf07a1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.js.map
new file mode 100644
index 000000000..6f1b651a7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4f73d6b66
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..62709cf4f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.43 KiB main [emitted] main
+ lib/out/index.d.ts 120 bytes [emitted]
+ lib/out/index.js 178 bytes [emitted]
+ lib/out/index.js.map 231 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch4/bundle.js
new file mode 100644
index 000000000..c4af1b158
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..2d914655a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.44 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 186 bytes {main} [built] [1 error]
+[./lib/out/index.js] 178 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,56)[39m[22m
+[1m[31m TS2551: Property 'ffive' does not exist on type '{ one: number; two: number; three: number; four: number; five: number; }'. Did you mean 'five'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch5/bundle.js
new file mode 100644
index 000000000..08fa55bd4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..9eee18097
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.44 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 185 bytes {main} [built]
+[./lib/out/index.js] 178 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..573327ca6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..332ae20d1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.4 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/out/index.js] 152 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..d1901ba32
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..45ca4d5f4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.46 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..99028a1de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.46 KiB main main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built] [2 errors]
+[./lib/out/index.js] 183 bytes {main}
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.d.ts b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.js.map b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.js.map
new file mode 100644
index 000000000..6f1b651a7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4f73d6b66
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/lib/out/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "../tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../index.ts",
+ "../../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..a518dadaa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.46 KiB main main
+ lib/out/index.d.ts 120 bytes [emitted]
+ lib/out/index.js 178 bytes [emitted]
+ lib/out/index.js.map 231 bytes [emitted]
+lib/out/tsconfig.tsbuildinfo 2.39 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/out/index.js] 183 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch4/bundle.js
new file mode 100644
index 000000000..5ea6d562c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..e2e95d648
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.48 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 222 bytes {main} [built]
+[./lib/out/index.js] 178 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch5/bundle.js
new file mode 100644
index 000000000..632383519
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/out/index.js\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/out/index.js":
+/*!**************************!*\
+ !*** ./lib/out/index.js ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./lib/out/index.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..450b169d1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesOutDirWithPackageJsonAlreadyBuilt/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.48 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 221 bytes {main} [built]
+[./lib/out/index.js] 178 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..4cd40bf50
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_src_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/src/index */ \"./lib/src/index.ts\");\n\nconsole.log(_lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].one, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].two, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/src/index.ts":
+/*!**************************!*\
+ !*** ./lib/src/index.ts ***!
+ \**************************/
+/*! exports provided: lib */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lib\", function() { return lib; });\nconst lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.js
new file mode 100644
index 000000000..601001a45
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.js
@@ -0,0 +1,6 @@
+export const lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..e54726f0a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d8ed1c51c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,311 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts": {
+ "version": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "signature": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts": {
+ "version": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "signature": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "signature": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "signature": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts": {
+ "version": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "signature": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts": {
+ "version": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "signature": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts": {
+ "version": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "signature": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts": {
+ "version": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "signature": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts": {
+ "version": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "signature": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts": {
+ "version": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "signature": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts": {
+ "version": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "signature": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts": {
+ "version": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "signature": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts": {
+ "version": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "signature": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "target": 99,
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./out",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..1ff59ac31
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.65 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 94 bytes [emitted]
+ lib/out/index.js.map 202 bytes [emitted]
+lib/tsconfig.tsbuildinfo 17.2 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 81 bytes {main} [built]
+[./lib/src/index.ts] 61 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4cd40bf50
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_src_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/src/index */ \"./lib/src/index.ts\");\n\nconsole.log(_lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].one, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].two, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/src/index.ts":
+/*!**************************!*\
+ !*** ./lib/src/index.ts ***!
+ \**************************/
+/*! exports provided: lib */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lib\", function() { return lib; });\nconst lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.js
new file mode 100644
index 000000000..601001a45
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.js
@@ -0,0 +1,6 @@
+export const lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..e54726f0a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d8ed1c51c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,311 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts": {
+ "version": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "signature": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts": {
+ "version": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "signature": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "signature": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "signature": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts": {
+ "version": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "signature": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts": {
+ "version": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "signature": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts": {
+ "version": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "signature": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts": {
+ "version": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "signature": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts": {
+ "version": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "signature": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts": {
+ "version": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "signature": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts": {
+ "version": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "signature": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts": {
+ "version": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "signature": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts": {
+ "version": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "signature": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "target": 99,
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./out",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..1ff59ac31
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDir/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.65 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 94 bytes [emitted]
+ lib/out/index.js.map 202 bytes [emitted]
+lib/tsconfig.tsbuildinfo 17.2 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 81 bytes {main} [built]
+[./lib/src/index.ts] 61 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..4cd40bf50
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_src_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/src/index */ \"./lib/src/index.ts\");\n\nconsole.log(_lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].one, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].two, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/src/index.ts":
+/*!**************************!*\
+ !*** ./lib/src/index.ts ***!
+ \**************************/
+/*! exports provided: lib */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lib\", function() { return lib; });\nconst lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.js
new file mode 100644
index 000000000..601001a45
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.js
@@ -0,0 +1,6 @@
+export const lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..e54726f0a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d8ed1c51c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,311 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts": {
+ "version": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "signature": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts": {
+ "version": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "signature": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "signature": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "signature": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts": {
+ "version": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "signature": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts": {
+ "version": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "signature": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts": {
+ "version": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "signature": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts": {
+ "version": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "signature": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts": {
+ "version": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "signature": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts": {
+ "version": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "signature": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts": {
+ "version": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "signature": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts": {
+ "version": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "signature": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts": {
+ "version": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "signature": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "target": 99,
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./out",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..1ff59ac31
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.65 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 94 bytes [emitted]
+ lib/out/index.js.map 202 bytes [emitted]
+lib/tsconfig.tsbuildinfo 17.2 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 81 bytes {main} [built]
+[./lib/src/index.ts] 61 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4cd40bf50
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_src_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/src/index */ \"./lib/src/index.ts\");\n\nconsole.log(_lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].one, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].two, _lib_src_index__WEBPACK_IMPORTED_MODULE_0__[\"lib\"].three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/src/index.ts":
+/*!**************************!*\
+ !*** ./lib/src/index.ts ***!
+ \**************************/
+/*! exports provided: lib */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lib\", function() { return lib; });\nconst lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.d.ts b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.js b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.js
new file mode 100644
index 000000000..601001a45
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.js
@@ -0,0 +1,6 @@
+export const lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.js.map b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.js.map
new file mode 100644
index 000000000..e54726f0a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/out/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d8ed1c51c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,311 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts": {
+ "version": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "signature": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts": {
+ "version": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "signature": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "signature": "d42f4141bd9ce82b4e2902f26acb00c183e321be19a38bbc0e76a922c1724c94",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "signature": "7207e317a2cb07a177e7d963ab7b8c0e85dde7f9ddb50351f830239bf597569e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts": {
+ "version": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "signature": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts": {
+ "version": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "signature": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts": {
+ "version": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "signature": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts": {
+ "version": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "signature": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts": {
+ "version": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "signature": "31e8df2398e328077079c17ea4f1664bad0a34adf8b0608837e504e310e329a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts": {
+ "version": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "signature": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts": {
+ "version": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "signature": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts": {
+ "version": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "signature": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts": {
+ "version": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "signature": "d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "target": 99,
+ "composite": true,
+ "sourceMap": true,
+ "outDir": "./out",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.full.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.weakref.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..1ff59ac31
--- /dev/null
+++ b/test/comparison-tests/projectReferencesRootDirInvalidConfig/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.65 KiB main [emitted] main
+ lib/out/index.d.ts 84 bytes [emitted]
+ lib/out/index.js 94 bytes [emitted]
+ lib/out/index.js.map 202 bytes [emitted]
+lib/tsconfig.tsbuildinfo 17.2 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 81 bytes {main} [built]
+[./lib/src/index.ts] 61 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/app/dist/index.js
new file mode 100644
index 000000000..6536c80d5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..32831174a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..916d2f0ec
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..940647ba2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.38 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..9f5a2215c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..00f7f1ad3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..aa1e397cc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built] [1 error]
+
+ERROR in app/src/index.ts
+./src/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp/src/index.ts(1,10)[39m[22m
+[1m[31m TS2724: '"../../lib/dist"' has no exported member named 'getMeaningOfLife'. Did you mean 'getMeaningOfLife3'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/app/dist/index.js
new file mode 100644
index 000000000..ddbcf8278
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..32831174a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..916d2f0ec
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..c6b8c56bd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.38 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..7378d5df7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..00f7f1ad3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..81512575e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/app/dist/index.js
new file mode 100644
index 000000000..6536c80d5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d7bfe55e2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,58 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..06f810720
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..7a1337b43
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.41 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..9f5a2215c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..3d82dcc83
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..ce861ab73
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built] [1 error]
+
+ERROR in app/src/index.ts
+./src/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp/src/index.ts(1,10)[39m[22m
+[1m[31m TS2724: '"../../node_modules/lib/dist"' has no exported member named 'getMeaningOfLife'. Did you mean 'getMeaningOfLife3'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/app/dist/index.js
new file mode 100644
index 000000000..ddbcf8278
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d7bfe55e2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,58 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..06f810720
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ec4613cad
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.41 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..7378d5df7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..3d82dcc83
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..d0c3c585d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/app/dist/index.js
new file mode 100644
index 000000000..6536c80d5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d7bfe55e2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,58 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..06f810720
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..7a1337b43
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.41 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..9f5a2215c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..3d82dcc83
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..ce861ab73
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built] [1 error]
+
+ERROR in app/src/index.ts
+./src/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp/src/index.ts(1,10)[39m[22m
+[1m[31m TS2724: '"../../node_modules/lib/dist"' has no exported member named 'getMeaningOfLife'. Did you mean 'getMeaningOfLife3'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/app/dist/index.js
new file mode 100644
index 000000000..ddbcf8278
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d7bfe55e2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,58 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..06f810720
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ec4613cad
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.41 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..7378d5df7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..3d82dcc83
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,68 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../node_modules/common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "preserveSymlinks": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../node_modules/common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../node_modules/common/dist/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..d0c3c585d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinksPreserve_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.8 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/app/dist/index.js
new file mode 100644
index 000000000..6536c80d5
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..32831174a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..916d2f0ec
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..940647ba2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.38 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..9f5a2215c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..00f7f1ad3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..aa1e397cc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 4.98 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 108 bytes {main} [built] [1 error]
+
+ERROR in app/src/index.ts
+./src/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp/src/index.ts(1,10)[39m[22m
+[1m[31m TS2724: '"../../lib/dist"' has no exported member named 'getMeaningOfLife'. Did you mean 'getMeaningOfLife3'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/app/dist/index.js
new file mode 100644
index 000000000..ddbcf8278
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife = getMeaningOfLife;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/dist/index.d.ts
new file mode 100644
index 000000000..f5c6ea299
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife2: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/dist/index.js
new file mode 100644
index 000000000..4a8b0cf63
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/dist/index.js
@@ -0,0 +1,5 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife2 = void 0;
+var getMeaningOfLife2 = function () { return 45; };
+exports.getMeaningOfLife2 = getMeaningOfLife2;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..32831174a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/common/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./src/index.ts": {
+ "version": "04a941e6fe6c7eb7913fa3105993c5282e1401287cef79308eed0201ee2c9ef9",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.d.ts
new file mode 100644
index 000000000..fdb004ae6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.js
new file mode 100644
index 000000000..7cdad23de
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife = void 0;
+var common_1 = require("common");
+var getMeaningOfLife = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife = getMeaningOfLife;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..916d2f0ec
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "1f22ba07ef5ca5b17da3030aee4582883803beb20e5bcc5b0cb29acb0289a635",
+ "signature": "cb0c875cdccbe72f5bbcd75441105aaeeb7f2a8e425f0c4333fe810ec0259456",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..c6b8c56bd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ ../../common/dist/index.d.ts 54 bytes [emitted]
+ ../../common/dist/index.js 176 bytes [emitted]
+../../common/tsconfig.tsbuildinfo 2.38 KiB [emitted]
+ ../../lib/dist/index.d.ts 53 bytes [emitted]
+ ../../lib/dist/index.js 232 bytes [emitted]
+ ../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 232 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/app/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/app/dist/index.js
new file mode 100644
index 000000000..7378d5df7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/app/dist/index.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../common/dist/index.js":
+/*!*******************************!*\
+ !*** ../common/dist/index.js ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife2 = void 0;\nvar getMeaningOfLife2 = function () { return 45; };\nexports.getMeaningOfLife2 = getMeaningOfLife2;\n\n\n//# sourceURL=webpack:///../common/dist/index.js?");
+
+/***/ }),
+
+/***/ "../lib/dist/index.js":
+/*!****************************!*\
+ !*** ../lib/dist/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.getMeaningOfLife3 = void 0;\nvar common_1 = __webpack_require__(/*! common */ \"../common/dist/index.js\");\nvar getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };\nexports.getMeaningOfLife3 = getMeaningOfLife3;\n\n\n//# sourceURL=webpack:///../lib/dist/index.js?");
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+ !*** ./src/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! lib */ \"../lib/dist/index.js\");\nconsole.log(lib_1.getMeaningOfLife());\n\n\n//# sourceURL=webpack:///./src/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
new file mode 100644
index 000000000..c8844a138
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.d.ts
@@ -0,0 +1 @@
+export declare const getMeaningOfLife3: () => number;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.js b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
new file mode 100644
index 000000000..bb1ab736d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/dist/index.js
@@ -0,0 +1,6 @@
+"use strict";
+exports.__esModule = true;
+exports.getMeaningOfLife3 = void 0;
+var common_1 = require("common");
+var getMeaningOfLife3 = function () { return common_1.getMeaningOfLife2(); };
+exports.getMeaningOfLife3 = getMeaningOfLife3;
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..00f7f1ad3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,67 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../common/dist/index.d.ts": {
+ "version": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "signature": "ff3ea32a8da48d914c97453f41159f05f0eb54fefa17b664d412b6588d1ba729",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "852833616e510f30b68b4efa8b8f0080c0936671acbf52967e72b6c4ab0a72e9",
+ "signature": "f99922acc37970b3e751734a37d730d1382695bab7ffb6730f1aad484ef3828a",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./src/index.ts": [
+ "../common/dist/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "../common/dist/index.d.ts",
+ "./src/index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..81512575e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesSymLinks_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ ../../lib/dist/index.d.ts 54 bytes [emitted]
+ ../../lib/dist/index.js 236 bytes [emitted]
+../../lib/tsconfig.tsbuildinfo 2.73 KiB [emitted]
+ index.js 5.02 KiB main [emitted] main
+Entrypoint main = index.js
+[../common/dist/index.js] 176 bytes {main} [built]
+[../lib/dist/index.js] 236 bytes {main} [built]
+[./src/index.ts] 144 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ceca3b200
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..07f654ffd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..9032c302b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5e715510c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..2edab3ba4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.33 KiB main [emitted] main
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 183 bytes [emitted]
+ lib/index.js.map 221 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..8cf5e9561
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..3993b8991
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..8cf5e9561
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..cdf7bfbc0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built] [2 errors]
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/bundle.js
new file mode 100644
index 000000000..f95b56d68
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.js.map b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.js.map
new file mode 100644
index 000000000..6e255ed17
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..99a08ef2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..4dfbb6e5b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.37 KiB main [emitted] main
+ lib/index.d.ts 120 bytes [emitted]
+ lib/index.js 178 bytes [emitted]
+ lib/index.js.map 228 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch4/bundle.js
new file mode 100644
index 000000000..d45f528f1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..e5095f9ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.38 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 186 bytes {main} [built] [1 error]
+[./lib/index.ts] 145 bytes {main}
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,56)[39m[22m
+[1m[31m TS2551: Property 'ffive' does not exist on type '{ one: number; two: number; three: number; four: number; five: number; }'. Did you mean 'five'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch5/bundle.js
new file mode 100644
index 000000000..064d19ca9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..1bed26fd0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.38 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 185 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..746f03b67
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..9032c302b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5e715510c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..0843d3fab
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.37 KiB main [emitted] main
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 183 bytes [emitted]
+ lib/index.js.map 221 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..78ed26c6a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..cd340511e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.41 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..978b955fa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.41 KiB main main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built] [2 errors]
+[./lib/index.ts] 150 bytes {main} [built]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/bundle.js
new file mode 100644
index 000000000..ec0c99cc9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.js.map b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.js.map
new file mode 100644
index 000000000..6e255ed17
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..99a08ef2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..70c81c60c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.4 KiB main [emitted] main
+ lib/index.d.ts 120 bytes [emitted]
+ lib/index.js 178 bytes [emitted]
+ lib/index.js.map 228 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch4/bundle.js
new file mode 100644
index 000000000..c477f0bbc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..69914dca7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.42 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 222 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch5/bundle.js
new file mode 100644
index 000000000..d8959b73c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..1a00574d3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.42 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 221 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1d7adbfc8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5c601e520
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..24e223bab
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.82 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..4cb2a7cd8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4c053c314
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..e150024bd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.83 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..bac3c372e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..f739556e6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 215 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..d17d9411c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5c601e520
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5d15efcf6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.86 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..eac881063
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4c053c314
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..e939e9524
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.87 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..a83eea133
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..a01758221
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.99 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 251 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1d7adbfc8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ee41e2612
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.82 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..c142b33d8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5af984eac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..42d9d72d3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.83 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main}
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..2919f8072
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9116c105c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..80fbd3bd8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.85 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..cd02ff9fa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..76971748c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.97 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 215 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..d17d9411c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ffca29969
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.86 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..09058d361
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5af984eac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..352b01adc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.87 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main}
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..2a95f4826
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9116c105c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..649d0875c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.88 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch2/bundle.js
new file mode 100644
index 000000000..321d958fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch2/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..b1fa5e71e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 251 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1d7adbfc8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..332b6c126
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,8 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.82 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..c142b33d8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5af984eac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..e2ad0dd82
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.83 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main}
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..7aa22a7c1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch0/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11215156582",
+ "signature": "11215156582",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..2919f8072
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9116c105c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..475bc8cca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.85 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..cd02ff9fa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..0097b02fd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,8 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.97 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.72 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 215 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..0ec5162cf
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/patch2/tsconfig.tsbuildinfo
@@ -0,0 +1,63 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11215156582",
+ "signature": "11215156582",
+ "affectsGlobalScope": false
+ },
+ "./lib/helper.d.ts": {
+ "version": "7897218607",
+ "signature": "7897218607",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-12553192154",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/helper.d.ts",
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c6ef42e1b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "12503634626",
+ "signature": "12503634626",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..d17d9411c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ffca29969
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.86 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..09058d361
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5af984eac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..352b01adc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.87 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main}
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..2a95f4826
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9116c105c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..649d0875c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.88 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/bundle.js
new file mode 100644
index 000000000..321d958fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..b1fa5e71e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 251 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1d7adbfc8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ee41e2612
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.82 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..c142b33d8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5af984eac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..42d9d72d3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.83 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main}
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..2919f8072
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9116c105c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..80fbd3bd8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.85 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..cd02ff9fa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..76971748c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.97 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 215 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..d17d9411c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..ffca29969
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.86 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..09058d361
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5af984eac
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..352b01adc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.87 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main}
+[./lib/index.ts] 224 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..2a95f4826
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js
new file mode 100644
index 000000000..c526f1a8b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three,
+ four: 4
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js.map
new file mode 100644
index 000000000..75ee60e19
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;IACnB,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..9116c105c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "2433124b24fe94913871ceba0ffaaa1bb06e73b73a6f6b4181c52b6208eb922e",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..649d0875c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.88 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 257 bytes [emitted]
+ lib/index.js.map 252 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch2/bundle.js
new file mode 100644
index 000000000..321d958fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch2/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..b1fa5e71e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFilesAlreadyBuilt_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 5 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 251 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 224 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1d7adbfc8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5c601e520
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..9c6ab352c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.82 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..4cb2a7cd8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4c053c314
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..06cd61d80
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,14 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.83 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..bac3c372e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..4b6636b9a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,8 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.95 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.72 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 215 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d6515d08e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/patch1/tsconfig.tsbuildinfo
@@ -0,0 +1,63 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "12503634626",
+ "signature": "12503634626",
+ "affectsGlobalScope": false
+ },
+ "./lib/helper.d.ts": {
+ "version": "7897218607",
+ "signature": "7897218607",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-12553192154",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/helper.d.ts",
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c6ef42e1b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "12503634626",
+ "signature": "12503634626",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..d17d9411c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5c601e520
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5d15efcf6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.86 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..eac881063
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4c053c314
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..e939e9524
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.87 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..a83eea133
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..a01758221
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.99 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 251 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..1d7adbfc8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5c601e520
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..24e223bab
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.82 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..4cb2a7cd8
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4c053c314
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..e150024bd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.83 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..bac3c372e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..f739556e6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 215 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..d17d9411c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.d.ts
new file mode 100644
index 000000000..ea0d91498
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.d.ts
@@ -0,0 +1,5 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.js
new file mode 100644
index 000000000..1159a61fe
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.js.map
new file mode 100644
index 000000000..8de705855
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5c601e520
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "bd8500a78d56a07c2de3c8c735ca2ea8bfba63861da1c1e6a77f96ac5526c238",
+ "signature": "9547233658a31639485353eb30596a0329b38600ed28a2ce8d70e7f88b5a1d8c",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5d15efcf6
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.86 KiB main [emitted] main
+ lib/helper.d.ts 87 bytes [emitted]
+ lib/helper.js 159 bytes [emitted]
+ lib/helper.js.map 190 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 125 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..eac881063
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
new file mode 100644
index 000000000..c9fffcbf7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.d.ts
@@ -0,0 +1,6 @@
+export declare const helper: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
new file mode 100644
index 000000000..fd4291075
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.helper = void 0;
+exports.helper = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4
+};
+//# sourceMappingURL=helper.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
new file mode 100644
index 000000000..9bdff574b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/helper.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helper.js","sourceRoot":"","sources":["helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..2944247f2
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+var helper_1 = require("./helper");
+exports.lib = {
+ one: helper_1.helper.one,
+ two: helper_1.helper.two,
+ three: helper_1.helper.three
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..c02fb5203
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AACrB,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,GAAG,EAAE,eAAM,CAAC,GAAG;IACf,KAAK,EAAE,eAAM,CAAC,KAAK;CACpB,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..4c053c314
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,66 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./helper.ts": {
+ "version": "1fb681e6157008026aa84db0d697833c02fcb11e4b1cb011820844edbffa703c",
+ "signature": "695f3f9978b7c5a431d1c0d00791cee3d41b76f2a13fddf525fd5d34431cab6a",
+ "affectsGlobalScope": false
+ },
+ "./index.ts": {
+ "version": "bc4ed2b009cdf5f131d46c0ab70386155058ea9011c613bdf82b0b16dae6fa1c",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./index.ts": [
+ "./helper.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./helper.ts",
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..e939e9524
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,13 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.87 KiB main [emitted] main
+ lib/helper.d.ts 105 bytes [emitted]
+ lib/helper.js 172 bytes [emitted]
+ lib/helper.js.map 210 bytes [emitted]
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 244 bytes [emitted]
+ lib/index.js.map 232 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.66 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main} [built]
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..a83eea133
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nvar helper_1 = __webpack_require__(/*! ./lib/helper */ \"./lib/helper.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, helper_1.helper.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/helper.ts":
+/*!***********************!*\
+ !*** ./lib/helper.ts ***!
+ \***********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.helper = void 0;\nexports.helper = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n};\n\n\n//# sourceURL=webpack:///./lib/helper.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nvar helper_1 = __webpack_require__(/*! ./helper */ \"./lib/helper.ts\");\nexports.lib = {\n one: helper_1.helper.one,\n two: helper_1.helper.two,\n three: helper_1.helper.three\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..a01758221
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatchRefWithTwoFiles_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.99 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 251 bytes {main} [built]
+[./lib/helper.ts] 138 bytes {main}
+[./lib/index.ts] 211 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..f83b087db
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..07f654ffd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..9032c302b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5e715510c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..4ea4bea27
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.33 KiB main [emitted] main
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 183 bytes [emitted]
+ lib/index.js.map 221 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..7aa22a7c1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch0/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11215156582",
+ "signature": "11215156582",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..8cf5e9561
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..f890173c0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,7 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.37 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..833ab2384
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch1/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11215156582",
+ "signature": "11215156582",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-16299197056",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..8cf5e9561
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..6eff0cd61
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,16 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built] [2 errors]
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/bundle.js
new file mode 100644
index 000000000..f95b56d68
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.js.map
new file mode 100644
index 000000000..6e255ed17
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..99a08ef2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..8b961e865
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.37 KiB main [emitted] main
+ lib/index.d.ts 120 bytes [emitted]
+ lib/index.js 178 bytes [emitted]
+ lib/index.js.map 228 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+ tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..d08699115
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch3/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11496633944",
+ "signature": "11496633944",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-16299197056",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/bundle.js
new file mode 100644
index 000000000..d45f528f1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..5367b0c7d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,12 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.38 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 186 bytes {main} [built] [1 error]
+[./lib/index.ts] 145 bytes {main}
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,56)[39m[22m
+[1m[31m TS2551: Property 'ffive' does not exist on type '{ one: number; two: number; three: number; four: number; five: number; }'. Did you mean 'five'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..894b02034
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch4/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11496633944",
+ "signature": "11496633944",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-26657554079",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/app.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/bundle.js
new file mode 100644
index 000000000..064d19ca9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..d5d29912d
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,7 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+ bundle.js 4.38 KiB main [emitted] main
+tsconfig.tsbuildinfo 1.56 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 185 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c453c2018
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/patch5/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "11496633944",
+ "signature": "11496633944",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-21839530949",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..c6ef42e1b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-4.1/tsconfig.tsbuildinfo
@@ -0,0 +1,57 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "-10496480823",
+ "signature": "-10496480823",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "1122558515312",
+ "signature": "1122558515312",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "1735661928823",
+ "signature": "1735661928823",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "-24714112149",
+ "signature": "-24714112149",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "204309182321",
+ "signature": "204309182321",
+ "affectsGlobalScope": true
+ },
+ "./lib/index.d.ts": {
+ "version": "12503634626",
+ "signature": "12503634626",
+ "affectsGlobalScope": false
+ },
+ "./app.ts": {
+ "version": "-14331559384",
+ "signature": "-3531856636",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "types": [],
+ "composite": true,
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {
+ "./app.ts": [
+ "./lib/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": []
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..746f03b67
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..9032c302b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5e715510c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..0843d3fab
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.37 KiB main [emitted] main
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 183 bytes [emitted]
+ lib/index.js.map 221 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..78ed26c6a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..cd340511e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.41 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..978b955fa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.41 KiB main main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built] [2 errors]
+[./lib/index.ts] 150 bytes {main} [built]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/bundle.js
new file mode 100644
index 000000000..ec0c99cc9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js.map
new file mode 100644
index 000000000..6e255ed17
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..99a08ef2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..70c81c60c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.4 KiB main [emitted] main
+ lib/index.d.ts 120 bytes [emitted]
+ lib/index.js 178 bytes [emitted]
+ lib/index.js.map 228 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch4/bundle.js
new file mode 100644
index 000000000..c477f0bbc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..69914dca7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.42 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 222 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch5/bundle.js
new file mode 100644
index 000000000..d8959b73c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..1a00574d3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_Composite_WatchApi/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.42 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 221 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..2076d22c4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..ceca3b200
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.3 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..07f654ffd
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..9032c302b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5e715510c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..2edab3ba4
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.33 KiB main [emitted] main
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 183 bytes [emitted]
+ lib/index.js.map 221 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 131 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..8cf5e9561
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..3993b8991
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch2/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch2/bundle.js
new file mode 100644
index 000000000..8cf5e9561
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch2/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch2/output.txt
new file mode 100644
index 000000000..cdf7bfbc0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch2/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.37 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built] [2 errors]
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in lib/index.ts
+./lib/index.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/bundle.js
new file mode 100644
index 000000000..f95b56d68
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.js.map
new file mode 100644
index 000000000..6e255ed17
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..99a08ef2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/output.txt
new file mode 100644
index 000000000..4dfbb6e5b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.37 KiB main [emitted] main
+ lib/index.d.ts 120 bytes [emitted]
+ lib/index.js 178 bytes [emitted]
+ lib/index.js.map 228 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 169 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch4/bundle.js
new file mode 100644
index 000000000..d45f528f1
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch4/output.txt
new file mode 100644
index 000000000..e5095f9ca
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch4/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.38 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 186 bytes {main} [built] [1 error]
+[./lib/index.ts] 145 bytes {main}
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,56)[39m[22m
+[1m[31m TS2551: Property 'ffive' does not exist on type '{ one: number; two: number; three: number; four: number; five: number; }'. Did you mean 'five'?[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch5/bundle.js
new file mode 100644
index 000000000..064d19ca9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch5/output.txt
new file mode 100644
index 000000000..1bed26fd0
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.38 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 185 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..71e75f124
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
new file mode 100644
index 000000000..73d752279
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.d.ts
@@ -0,0 +1,5 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.js
new file mode 100644
index 000000000..e352a1efb
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.js
@@ -0,0 +1,9 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
new file mode 100644
index 000000000..d40fd63b7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..70c8e7a76
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "28ead8445f54a115ea5f778da4f4f80579fbae42ac6ccc3493626084ed335839",
+ "signature": "82b9c263edd140802d0afbd57d557b2c41db16c5ad9a744bca8c71ad5b10f66f",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..3c755fe2c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.34 KiB main [emitted] main
+ lib/index.d.ts 84 bytes [emitted]
+ lib/index.js 152 bytes [emitted]
+ lib/index.js.map 188 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 119 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..746f03b67
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
new file mode 100644
index 000000000..78e83617f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.d.ts
@@ -0,0 +1,6 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
new file mode 100644
index 000000000..8826dde5f
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js
@@ -0,0 +1,10 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4 // Add new number
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
new file mode 100644
index 000000000..9032c302b
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,iBAAiB;CAC1B,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..5e715510c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "244518e7eae5520d792e5c61f0be65249602dd956014a68836c0a35ed686ba28",
+ "signature": "4323a7ca8bb142ba56fd9c74334a9e3d4d521a10907662b5d9ccb24936767c1e",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..0843d3fab
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.37 KiB main [emitted] main
+ lib/index.d.ts 102 bytes [emitted]
+ lib/index.js 183 bytes [emitted]
+ lib/index.js.map 221 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 167 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..78ed26c6a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4 // Add new number\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..cd340511e
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.41 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/index.ts] 150 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
new file mode 100644
index 000000000..978b955fa
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch2/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.41 KiB main main
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built] [2 errors]
+[./lib/index.ts] 150 bytes {main} [built]
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(6,3)[39m[22m
+[1m[31m TS1136: Property assignment expected.[39m[22m
+
+ERROR in [90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mlib/index.ts(7,1)[39m[22m
+[1m[31m TS1128: Declaration or statement expected.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/bundle.js
new file mode 100644
index 000000000..ec0c99cc9
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.d.ts b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.d.ts
new file mode 100644
index 000000000..bf8664e75
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.d.ts
@@ -0,0 +1,7 @@
+export declare const lib: {
+ one: number;
+ two: number;
+ three: number;
+ four: number;
+ five: number;
+};
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js
new file mode 100644
index 000000000..2a51bc571
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js
@@ -0,0 +1,11 @@
+"use strict";
+exports.__esModule = true;
+exports.lib = void 0;
+exports.lib = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5
+};
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js.map b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js.map
new file mode 100644
index 000000000..6e255ed17
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo
new file mode 100644
index 000000000..99a08ef2a
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "signature": "69f0c334b0ee4235f6219b22f42e4fa04b414535c782b4dda793ed1918cc835c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "signature": "abadddbf660adeec27e9a56584907d52fa1d6e1e1dc49f639a921baa951b7a84",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "./index.ts": {
+ "version": "c250f21a4c1fc3baa49fd9af20e30f28a0c5a4c1ab58eead42bbca5482f3f963",
+ "signature": "64f0f3546d7b6f37dd84a10e5f8a7e22b917671569c4c3954c5a5cca5fcf74d8",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "composite": true,
+ "sourceMap": true,
+ "types": [],
+ "newLine": 1,
+ "configFilePath": "./tsconfig.json",
+ "skipLibCheck": true,
+ "suppressOutputPathCheck": true
+ },
+ "referencedMap": {},
+ "exportedModulesMap": {},
+ "semanticDiagnosticsPerFile": [
+ "./index.ts",
+ "../../../node_modules/typescript/lib/lib.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts"
+ ]
+ },
+ "version": "4.1.2"
+}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/output.txt
new file mode 100644
index 000000000..70c81c60c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch3/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 4.4 KiB main [emitted] main
+ lib/index.d.ts 120 bytes [emitted]
+ lib/index.js 178 bytes [emitted]
+ lib/index.js.map 228 bytes [emitted]
+lib/tsconfig.tsbuildinfo 2.34 KiB [emitted]
+Entrypoint main = bundle.js
+[./app.ts] 205 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch4/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch4/bundle.js
new file mode 100644
index 000000000..c477f0bbc
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch4/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.ffive); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch4/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch4/output.txt
new file mode 100644
index 000000000..69914dca7
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch4/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.42 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 222 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch5/bundle.js b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch5/bundle.js
new file mode 100644
index 000000000..d8959b73c
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch5/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lib_1 = __webpack_require__(/*! ./lib */ \"./lib/index.ts\");\nconsole.log(lib_1.lib.one, lib_1.lib.two, lib_1.lib.three, lib_1.lib.four, lib_1.lib.five); // consume new number\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./lib/index.ts":
+/*!**********************!*\
+ !*** ./lib/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.lib = void 0;\nexports.lib = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5\n};\n\n\n//# sourceURL=webpack:///./lib/index.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch5/output.txt b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch5/output.txt
new file mode 100644
index 000000000..1a00574d3
--- /dev/null
+++ b/test/comparison-tests/projectReferencesWatch_WatchApi/expectedOutput-transpile-4.1/patch5/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.42 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 221 bytes {main} [built]
+[./lib/index.ts] 145 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/replacement/expectedOutput-4.1/bundle.js b/test/comparison-tests/replacement/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..bb45415c7
--- /dev/null
+++ b/test/comparison-tests/replacement/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./dep */ \"./sub/dep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar a = __webpack_require__(/*! ./a */ \"./a.ts\");\nconsole.log(a);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./sub/dep.ts":
+/*!********************!*\
+ !*** ./sub/dep.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = 'replacement';\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./sub/dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/replacement/expectedOutput-4.1/output.txt b/test/comparison-tests/replacement/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..74e906a99
--- /dev/null
+++ b/test/comparison-tests/replacement/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.49 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./a.ts] 64 bytes {main} [built]
+[./app.ts] 81 bytes {main} [built]
+[./sub/dep.ts] 61 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/replacement/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/replacement/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..ba30e0904
--- /dev/null
+++ b/test/comparison-tests/replacement/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./dep */ \"./sub/dep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./a.ts?");
+
+/***/ }),
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar a = __webpack_require__(/*! ./a */ \"./a.ts\");\nconsole.log(a);\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./sub/dep.ts":
+/*!********************!*\
+ !*** ./sub/dep.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = 'replacement';\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./sub/dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/replacement/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/replacement/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..2083a5363
--- /dev/null
+++ b/test/comparison-tests/replacement/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.53 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./a.ts] 64 bytes {main} [built]
+[./app.ts] 117 bytes {main} [built]
+[./sub/dep.ts] 61 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/reportFiles/expectedOutput-4.1/bundle.js b/test/comparison-tests/reportFiles/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f0c912af6
--- /dev/null
+++ b/test/comparison-tests/reportFiles/expectedOutput-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.a = void 0;\n__webpack_require__(/*! ./skip */ \"./skip.ts\");\nexports.a = '10';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./skip.ts":
+/*!*****************!*\
+ !*** ./skip.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nexports.a = void 0;\nexports.a = '10';\n\n\n//# sourceURL=webpack:///./skip.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/reportFiles/expectedOutput-4.1/output.txt b/test/comparison-tests/reportFiles/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..5211bb195
--- /dev/null
+++ b/test/comparison-tests/reportFiles/expectedOutput-4.1/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.2 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 98 bytes {main} [built] [1 error]
+[./skip.ts] 79 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,1)[39m[22m
+[1m[31m TS2322: Type 'string' is not assignable to type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/reportFiles/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/reportFiles/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..a1fbc5e07
--- /dev/null
+++ b/test/comparison-tests/reportFiles/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,113 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.a = void 0;\n__webpack_require__(/*! ./skip */ \"./skip.ts\");\nexports.a = '10';\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./skip.ts":
+/*!*****************!*\
+ !*** ./skip.ts ***!
+ \*****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.a = void 0;\nexports.a = '10';\n\n\n//# sourceURL=webpack:///./skip.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/reportFiles/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/reportFiles/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..77560aba9
--- /dev/null
+++ b/test/comparison-tests/reportFiles/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.27 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 134 bytes {main} [built]
+[./skip.ts] 115 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/app.d.ts b/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/app.d.ts
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/app.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/bundle.js b/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..78e3ec85f
--- /dev/null
+++ b/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/bundle.js
@@ -0,0 +1 @@
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";t.__esModule=!0;var n=r(1);console.log(n.foo)},function(e){e.exports=JSON.parse('{"foo":"bar"}')}]);
\ No newline at end of file
diff --git a/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/output.txt b/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..74cae6627
--- /dev/null
+++ b/test/comparison-tests/resolveJsonModule/expectedOutput-4.1/output.txt
@@ -0,0 +1,10 @@
+ Asset Size Chunks Chunk Names
+ app.d.ts 11 bytes [emitted]
+bundle.js 1.02 KiB 0 [emitted] main
+Entrypoint main = bundle.js
+[0] ./app.ts 99 bytes {0} [built]
+[1] ./file.json 18 bytes {0} [built]
+
+WARNING in configuration
+The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
+You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/
\ No newline at end of file
diff --git a/test/comparison-tests/resolveJsonModule/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/resolveJsonModule/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..51ef0796e
--- /dev/null
+++ b/test/comparison-tests/resolveJsonModule/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1 @@
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(1);console.log(n.foo)},function(e){e.exports=JSON.parse('{"foo":"bar"}')}]);
\ No newline at end of file
diff --git a/test/comparison-tests/resolveJsonModule/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/resolveJsonModule/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5b907a54c
--- /dev/null
+++ b/test/comparison-tests/resolveJsonModule/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 1.05 KiB 0 [emitted] main
+Entrypoint main = bundle.js
+[0] ./app.ts 135 bytes {0} [built]
+[1] ./file.json 18 bytes {0} [built]
+
+WARNING in configuration
+The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
+You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/
\ No newline at end of file
diff --git a/test/comparison-tests/run-tests.js b/test/comparison-tests/run-tests.js
index 6bd92043c..84fced0e1 100644
--- a/test/comparison-tests/run-tests.js
+++ b/test/comparison-tests/run-tests.js
@@ -11,7 +11,7 @@ const typescriptVersion = parseFloat(
semver.major(typescript.version) + '.' + semver.minor(typescript.version)
);
// @ts-ignore
-if (typescriptVersion < 4.0 || typescriptVersion > 4.0) return;
+if (typescriptVersion < 4.1 || typescriptVersion > 4.1) return;
// Build
const program = getProgram(path.resolve(__dirname, 'tsconfig.json'));
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-4.1/bundle.js b/test/comparison-tests/simpleDependency/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..c0a362098
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\ndep('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./deeperDep.ts":
+/*!**********************!*\
+ !*** ./deeperDep.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./deeperDep.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./deeperDep */ \"./deeperDep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-4.1/output.txt b/test/comparison-tests/simpleDependency/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..a01fdfb5e
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.53 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 78 bytes {main} [built]
+[./deeperDep.ts] 76 bytes {main} [built]
+[./dep.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..c0a362098
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\ndep('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./deeperDep.ts":
+/*!**********************!*\
+ !*** ./deeperDep.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./deeperDep.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./deeperDep */ \"./deeperDep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..0f981418b
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.53 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 78 bytes {main} [1 error]
+[./deeperDep.ts] 76 bytes {main} [built]
+[./dep.ts] 70 bytes {main} [built]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(3,5)[39m[22m
+[1m[31m TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..c0a362098
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\ndep('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./deeperDep.ts":
+/*!**********************!*\
+ !*** ./deeperDep.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./deeperDep.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./deeperDep */ \"./deeperDep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..46622b920
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.53 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 78 bytes {main}
+[./deeperDep.ts] 76 bytes {main} [built]
+[./dep.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..b2030b4d6
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\ndep('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./deeperDep.ts":
+/*!**********************!*\
+ !*** ./deeperDep.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./deeperDep.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./deeperDep */ \"./deeperDep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..9205705a9
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.57 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 114 bytes {main} [built]
+[./deeperDep.ts] 76 bytes {main} [built]
+[./dep.ts] 70 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..b2030b4d6
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\ndep('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./deeperDep.ts":
+/*!**********************!*\
+ !*** ./deeperDep.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./deeperDep.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./deeperDep */ \"./deeperDep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..3e9f611a1
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.57 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 114 bytes {main}
+[./deeperDep.ts] 76 bytes {main} [built]
+[./dep.ts] 70 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..b2030b4d6
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,125 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dep = __webpack_require__(/*! ./dep */ \"./dep.ts\");\ndep('');\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ }),
+
+/***/ "./deeperDep.ts":
+/*!**********************!*\
+ !*** ./deeperDep.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nfunction doSomething(input) {\n}\nmodule.exports = doSomething;\n\n\n//# sourceURL=webpack:///./deeperDep.ts?");
+
+/***/ }),
+
+/***/ "./dep.ts":
+/*!****************!*\
+ !*** ./dep.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dep = __webpack_require__(/*! ./deeperDep */ \"./deeperDep.ts\");\nmodule.exports = dep;\n\n\n//# sourceURL=webpack:///./dep.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..3e9f611a1
--- /dev/null
+++ b/test/comparison-tests/simpleDependency/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,6 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.57 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 114 bytes {main}
+[./deeperDep.ts] 76 bytes {main} [built]
+[./dep.ts] 70 bytes {main}
\ No newline at end of file
diff --git a/test/comparison-tests/sourceMaps/expectedOutput-4.1/bundle.js b/test/comparison-tests/sourceMaps/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..f3d4c05b6
--- /dev/null
+++ b/test/comparison-tests/sourceMaps/expectedOutput-4.1/bundle.js
@@ -0,0 +1,102 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./a.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+console.log('Hello world');
+
+
+/***/ })
+
+/******/ });
+//# sourceMappingURL=bundle.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/sourceMaps/expectedOutput-4.1/bundle.js.map b/test/comparison-tests/sourceMaps/expectedOutput-4.1/bundle.js.map
new file mode 100644
index 000000000..91873324b
--- /dev/null
+++ b/test/comparison-tests/sourceMaps/expectedOutput-4.1/bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./a.ts"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./a.ts\");\n","console.log('Hello world')"],"sourceRoot":""}
\ No newline at end of file
diff --git a/test/comparison-tests/sourceMaps/expectedOutput-4.1/output.txt b/test/comparison-tests/sourceMaps/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..536e8d3a9
--- /dev/null
+++ b/test/comparison-tests/sourceMaps/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 3.74 KiB main [emitted] main
+bundle.js.map 3.61 KiB main [emitted] [dev] main
+Entrypoint main = bundle.js bundle.js.map
+[./a.ts] 28 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..f3d4c05b6
--- /dev/null
+++ b/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,102 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./a.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./a.ts":
+/*!**************!*\
+ !*** ./a.ts ***!
+ \**************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+console.log('Hello world');
+
+
+/***/ })
+
+/******/ });
+//# sourceMappingURL=bundle.js.map
\ No newline at end of file
diff --git a/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/bundle.js.map b/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/bundle.js.map
new file mode 100644
index 000000000..91873324b
--- /dev/null
+++ b/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./a.ts"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./a.ts\");\n","console.log('Hello world')"],"sourceRoot":""}
\ No newline at end of file
diff --git a/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..536e8d3a9
--- /dev/null
+++ b/test/comparison-tests/sourceMaps/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+ bundle.js 3.74 KiB main [emitted] main
+bundle.js.map 3.61 KiB main [emitted] [dev] main
+Entrypoint main = bundle.js bundle.js.map
+[./a.ts] 28 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/stub-new-version.js b/test/comparison-tests/stub-new-version.js
index 1b076cf7c..a2c342f5b 100644
--- a/test/comparison-tests/stub-new-version.js
+++ b/test/comparison-tests/stub-new-version.js
@@ -8,8 +8,8 @@ const copySync = require('./copySync');
// find ./test/comparison-tests -type d -name '*expectedOutput*3.5' -print0 | xargs -0 -I {} /bin/rm -rf "{}"
// update this manually when a new version comes out
-const OLD_VERSION = '3.9';
-const NEW_VERSION = '4.0';
+const OLD_VERSION = '4.0';
+const NEW_VERSION = '4.1';
fs.readdirSync(__dirname).forEach(function(test) {
const testPath = path.join(__dirname, test);
diff --git a/test/comparison-tests/tsconfigInvalid/expectedOutput-4.1/bundle.js b/test/comparison-tests/tsconfigInvalid/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..a7bc5cf47
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalid/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31merror while parsing tsconfig.json/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalid/expectedOutput-4.1/output.txt b/test/comparison-tests/tsconfigInvalid/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..a753c24fe
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalid/expectedOutput-4.1/output.txt
@@ -0,0 +1,17 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.94 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 206 bytes {main} [built] [failed] [3 errors]
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS5024: Compiler option 'sourceMap' requires a value of type boolean.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS6046: Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext'.[39m[22m
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: [31merror while parsing tsconfig.json[39m
+ at Object.loader (dist/index.js:18:18)
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalid/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/tsconfigInvalid/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..a7bc5cf47
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalid/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31merror while parsing tsconfig.json/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalid/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/tsconfigInvalid/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..a753c24fe
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalid/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,17 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.94 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 206 bytes {main} [built] [failed] [3 errors]
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS5024: Compiler option 'sourceMap' requires a value of type boolean.[39m[22m
+
+ERROR in tsconfig.json
+[90m[tsl] [39m[1m[31mERROR[39m[22m
+[1m[31m TS6046: Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext'.[39m[22m
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: [31merror while parsing tsconfig.json[39m
+ at Object.loader (dist/index.js:18:18)
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalidFile/expectedOutput-4.1/bundle.js b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..8b151021a
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31mA file specified in tsconfig.json could not be found: /tsconfigInvalidFile/i-am-a-file-what-does-not-exist.ts/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalidFile/expectedOutput-4.1/output.txt b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..dacba15c0
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-4.1/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.04 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 309 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: [31mA file specified in tsconfig.json could not be found: i-am-a-file-what-does-not-exist.ts[39m
+ at Object.loader (dist/index.js:18:18)
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalidFile/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..4906581d6
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigInvalidFile/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..6a1feb334
--- /dev/null
+++ b/test/comparison-tests/tsconfigInvalidFile/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.73 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 0 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigNotReadable/expectedOutput-4.1/bundle.js b/test/comparison-tests/tsconfigNotReadable/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..afda5ae2f
--- /dev/null
+++ b/test/comparison-tests/tsconfigNotReadable/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31merror while reading tsconfig.json:/u001b[39m/n/u001b[31m/u001b[90m[tsl] /u001b[31m/u001b[1m/u001b[31mERROR/u001b[31m/u001b[22m/u001b[1m/u001b[31m in /u001b[31m/u001b[22m/u001b[1m/u001b[36m/tsconfigNotReadable/tsconfig.json(5,2)/u001b[31m/u001b[22m/u001b[39m/n/u001b[31m/u001b[1m/u001b[31m TS1109: Expression expected./u001b[31m/u001b[22m/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigNotReadable/expectedOutput-4.1/output.txt b/test/comparison-tests/tsconfigNotReadable/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..cf5a33d81
--- /dev/null
+++ b/test/comparison-tests/tsconfigNotReadable/expectedOutput-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.29 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 542 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: [31merror while reading tsconfig.json:[39m
+[31m[90m[tsl] [31m[1m[31mERROR[31m[22m[1m[31m in [31m[22m[1m[36mtsconfig.json(5,2)[31m[22m[39m
+[31m[1m[31m TS1109: Expression expected.[31m[22m[39m
+ at Object.loader (dist/index.js:18:18)
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigNotReadable/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/tsconfigNotReadable/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..f4815d27a
--- /dev/null
+++ b/test/comparison-tests/tsconfigNotReadable/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: /u001b[31merror while reading tsconfig.json:/u001b[39m/n/u001b[31m/u001b[90m[tsl] /u001b[31m/u001b[1m/u001b[31mERROR/u001b[31m/u001b[22m/u001b[1m/u001b[31m in /u001b[31m/u001b[22m/u001b[1m/u001b[36m/tsconfigNotReadable.transpile/tsconfig.json(5,2)/u001b[31m/u001b[22m/u001b[39m/n/u001b[31m/u001b[1m/u001b[31m TS1109: Expression expected./u001b[31m/u001b[22m/u001b[39m/n at Object.loader (/workspaces/ts-loader/dist/index.js:18:18)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigNotReadable/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/tsconfigNotReadable/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..565d4a92d
--- /dev/null
+++ b/test/comparison-tests/tsconfigNotReadable/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,11 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.3 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 552 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: [31merror while reading tsconfig.json:[39m
+[31m[90m[tsl] [31m[1m[31mERROR[31m[22m[1m[31m in [31m[22m[1m[36mtsconfig.json(5,2)[31m[22m[39m
+[31m[1m[31m TS1109: Expression expected.[31m[22m[39m
+ at Object.loader (dist/index.js:18:18)
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigSearch/expectedOutput-4.1/bundle.js b/test/comparison-tests/tsconfigSearch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..717083d76
--- /dev/null
+++ b/test/comparison-tests/tsconfigSearch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./src/app.ts":
+/*!********************!*\
+ !*** ./src/app.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nexports.__esModule = true;\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething('');\n\n\n//# sourceURL=webpack:///./src/app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigSearch/expectedOutput-4.1/output.txt b/test/comparison-tests/tsconfigSearch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..976f0477d
--- /dev/null
+++ b/test/comparison-tests/tsconfigSearch/expectedOutput-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.25 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./lib/externalLib.js] 55 bytes {main} [built]
+[./src/app.ts] 112 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigSearch/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/tsconfigSearch/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..2ad0074c0
--- /dev/null
+++ b/test/comparison-tests/tsconfigSearch/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,112 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./lib/externalLib.js":
+/*!****************************!*\
+ !*** ./lib/externalLib.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {\n doSomething: function() { } \n}\n\n//# sourceURL=webpack:///./lib/externalLib.js?");
+
+/***/ }),
+
+/***/ "./src/app.ts":
+/*!********************!*\
+ !*** ./src/app.ts ***!
+ \********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar externalLib = __webpack_require__(/*! externalLib */ \"./lib/externalLib.js\");\nexternalLib.doSomething('');\n\n\n//# sourceURL=webpack:///./src/app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/tsconfigSearch/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/tsconfigSearch/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..5a910fad6
--- /dev/null
+++ b/test/comparison-tests/tsconfigSearch/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,5 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.29 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./lib/externalLib.js] 55 bytes {main} [built]
+[./src/app.ts] 148 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/bundle.js b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..94f8c68e2
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var Foo = /** @class */ (function () {\n function Foo() {\n }\n Foo.prototype.getSomething = function () {\n return null;\n };\n return Foo;\n}());\nvar foo = new Foo();\nvar x = foo.getSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/output.txt b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..1b16d8347
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 212 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch0/bundle.js b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch0/bundle.js
new file mode 100644
index 000000000..94f8c68e2
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch0/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var Foo = /** @class */ (function () {\n function Foo() {\n }\n Foo.prototype.getSomething = function () {\n return null;\n };\n return Foo;\n}());\nvar foo = new Foo();\nvar x = foo.getSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch0/output.txt b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch0/output.txt
new file mode 100644
index 000000000..3de8aa6e6
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch0/output.txt
@@ -0,0 +1,9 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 212 bytes {main} [built] [1 error]
+
+ERROR in app.ts
+./app.ts
+[90m[tsl] [39m[1m[31mERROR[39m[22m[1m[31m in [39m[22m[1m[36mapp.ts(11,5)[39m[22m
+[1m[31m TS2741: Property 'b' is missing in type 'AType' but required in type 'BType'.[39m[22m
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch1/bundle.js b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch1/bundle.js
new file mode 100644
index 000000000..94f8c68e2
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var Foo = /** @class */ (function () {\n function Foo() {\n }\n Foo.prototype.getSomething = function () {\n return null;\n };\n return Foo;\n}());\nvar foo = new Foo();\nvar x = foo.getSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch1/output.txt b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch1/output.txt
new file mode 100644
index 000000000..1b16d8347
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 212 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..94f8c68e2
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var Foo = /** @class */ (function () {\n function Foo() {\n }\n Foo.prototype.getSomething = function () {\n return null;\n };\n return Foo;\n}());\nvar foo = new Foo();\nvar x = foo.getSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..1b16d8347
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 212 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch0/bundle.js b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch0/bundle.js
new file mode 100644
index 000000000..94f8c68e2
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch0/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var Foo = /** @class */ (function () {\n function Foo() {\n }\n Foo.prototype.getSomething = function () {\n return null;\n };\n return Foo;\n}());\nvar foo = new Foo();\nvar x = foo.getSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch0/output.txt b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch0/output.txt
new file mode 100644
index 000000000..1b16d8347
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch0/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 212 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch1/bundle.js b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch1/bundle.js
new file mode 100644
index 000000000..94f8c68e2
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var Foo = /** @class */ (function () {\n function Foo() {\n }\n Foo.prototype.getSomething = function () {\n return null;\n };\n return Foo;\n}());\nvar foo = new Foo();\nvar x = foo.getSomething();\n\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch1/output.txt b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch1/output.txt
new file mode 100644
index 000000000..1b16d8347
--- /dev/null
+++ b/test/comparison-tests/typeSystemWatch/expectedOutput-transpile-4.1/patch1/output.txt
@@ -0,0 +1,4 @@
+ Asset Size Chunks Chunk Names
+bundle.js 3.95 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 212 bytes {main} [built]
\ No newline at end of file
diff --git a/test/comparison-tests/validateLoaderOptionNames/expectedOutput-4.1/bundle.js b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-4.1/bundle.js
new file mode 100644
index 000000000..911e3ac4c
--- /dev/null
+++ b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: ts-loader was supplied with an unexpected loader option: notRealOption/n/nPlease take a look at the options you are supplying; the following are valid options:/nsilent / logLevel / logInfoToStdOut / instance / compiler / context / configFile / transpileOnly / ignoreDiagnostics / errorFormatter / colors / compilerOptions / appendTsSuffixTo / appendTsxSuffixTo / onlyCompileBundledFiles / happyPackMode / getCustomTransformers / reportFiles / experimentalWatchApi / allowTsInNodeModules / experimentalFileCaching / projectReferences / resolveModuleName / resolveTypeReferenceDirective / useCaseSensitiveFileNames/n/n at validateLoaderOptions (/workspaces/ts-loader/dist/index.js:146:19)/n at getLoaderOptions (/workspaces/ts-loader/dist/index.js:103:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:15:21)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/validateLoaderOptionNames/expectedOutput-4.1/output.txt b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-4.1/output.txt
new file mode 100644
index 000000000..615479d64
--- /dev/null
+++ b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-4.1/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.63 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 911 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: ts-loader was supplied with an unexpected loader option: notRealOption
+
+Please take a look at the options you are supplying; the following are valid options:
+silent / logLevel / logInfoToStdOut / instance / compiler / context / configFile / transpileOnly / ignoreDiagnostics / errorFormatter / colors / compilerOptions / appendTsSuffixTo / appendTsxSuffixTo / onlyCompileBundledFiles / happyPackMode / getCustomTransformers / reportFiles / experimentalWatchApi / allowTsInNodeModules / experimentalFileCaching / projectReferences / resolveModuleName / resolveTypeReferenceDirective / useCaseSensitiveFileNames
+
+ at validateLoaderOptions (dist/index.js:146:19)
+ at getLoaderOptions (dist/index.js:103:5)
+ at Object.loader (dist/index.js:15:21)
\ No newline at end of file
diff --git a/test/comparison-tests/validateLoaderOptionNames/expectedOutput-transpile-4.1/bundle.js b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-transpile-4.1/bundle.js
new file mode 100644
index 000000000..911e3ac4c
--- /dev/null
+++ b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-transpile-4.1/bundle.js
@@ -0,0 +1,100 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./app.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./app.ts":
+/*!****************!*\
+ !*** ./app.ts ***!
+ \****************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("throw new Error(\"Module build failed (from /workspaces/ts-loader/index.js):/nError: ts-loader was supplied with an unexpected loader option: notRealOption/n/nPlease take a look at the options you are supplying; the following are valid options:/nsilent / logLevel / logInfoToStdOut / instance / compiler / context / configFile / transpileOnly / ignoreDiagnostics / errorFormatter / colors / compilerOptions / appendTsSuffixTo / appendTsxSuffixTo / onlyCompileBundledFiles / happyPackMode / getCustomTransformers / reportFiles / experimentalWatchApi / allowTsInNodeModules / experimentalFileCaching / projectReferences / resolveModuleName / resolveTypeReferenceDirective / useCaseSensitiveFileNames/n/n at validateLoaderOptions (/workspaces/ts-loader/dist/index.js:146:19)/n at getLoaderOptions (/workspaces/ts-loader/dist/index.js:103:5)/n at Object.loader (/workspaces/ts-loader/dist/index.js:15:21)\");\n\n//# sourceURL=webpack:///./app.ts?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/test/comparison-tests/validateLoaderOptionNames/expectedOutput-transpile-4.1/output.txt b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-transpile-4.1/output.txt
new file mode 100644
index 000000000..615479d64
--- /dev/null
+++ b/test/comparison-tests/validateLoaderOptionNames/expectedOutput-transpile-4.1/output.txt
@@ -0,0 +1,15 @@
+ Asset Size Chunks Chunk Names
+bundle.js 4.63 KiB main [emitted] main
+Entrypoint main = bundle.js
+[./app.ts] 911 bytes {main} [built] [failed] [1 error]
+
+ERROR in ./app.ts
+Module build failed (from index.js):
+Error: ts-loader was supplied with an unexpected loader option: notRealOption
+
+Please take a look at the options you are supplying; the following are valid options:
+silent / logLevel / logInfoToStdOut / instance / compiler / context / configFile / transpileOnly / ignoreDiagnostics / errorFormatter / colors / compilerOptions / appendTsSuffixTo / appendTsxSuffixTo / onlyCompileBundledFiles / happyPackMode / getCustomTransformers / reportFiles / experimentalWatchApi / allowTsInNodeModules / experimentalFileCaching / projectReferences / resolveModuleName / resolveTypeReferenceDirective / useCaseSensitiveFileNames
+
+ at validateLoaderOptions (dist/index.js:146:19)
+ at getLoaderOptions (dist/index.js:103:5)
+ at Object.loader (dist/index.js:15:21)
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 64277017c..0edea0a02 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6248,9 +6248,9 @@ typedarray@^0.0.6:
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5"
- integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9"
+ integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==
uglify-js@3.3.x:
version "3.3.9"