diff --git a/README.md b/README.md index f25399e..27a0a9f 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,13 @@ The end result is that you setup a multi compiler (as shown below) and you can s The `` tag can be used along with the plugin in a multi-compiler setup. This tag allows you to inject ` + + + + + `); + + if (inline) { + marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7___default()(marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6___default.a, { + "_provider": fs_promises__WEBPACK_IMPORTED_MODULE_1___default.a.readFile(outputPath + js, "utf-8"), + "_name": "fs.readFile(outputPath + js, \"utf-8\")", + "then": { + "renderBody": (out, code) => { + out.w(`${marko_dist_runtime_html_helpers_escape_script_placeholder__WEBPACK_IMPORTED_MODULE_3___default()(code)}`); + } + } + }, out, _component, "0" + _keyScope); + } else { + out.w(``); + } } } } @@ -150,11 +183,24 @@ _marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MOD if (!written.has(css)) { written.add(css); - out.w(``); + + if (inline) { + marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7___default()(marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6___default.a, { + "_provider": fs_promises__WEBPACK_IMPORTED_MODULE_1___default.a.readFile(outputPath + css, "utf-8"), + "_name": "fs.readFile(outputPath + css, \"utf-8\")", + "then": { + "renderBody": (out, code) => { + out.w(`${marko_dist_runtime_html_helpers_escape_style_placeholder__WEBPACK_IMPORTED_MODULE_8___default()(code)}`); + } + } + }, out, _component, "4" + _keyScope2); + } else { + out.w(``); + } } } } @@ -334,11 +380,26 @@ _marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MOD "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ({ - getAssets(entry) { - return this.build[entry]; - }, - build: {"other":{"js":["other.js"]},"test_wUwF":{"js":["test_wUwF.js"]}} -}); + getAssets(entry) { + return this.build[entry]; + }, + getOutputPath() { + return this.buildOutputPath; + }, + build: {"other":{"js":["other.js"]},"test_wUwF":{"js":["test_wUwF.js"]}}, + buildOutputPath: "_PROJECT/dist" + }); + +/***/ }), + +/***/ "fs/promises": +/*!******************************!*\ + !*** external "fs/promises" ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("fs/promises"); /***/ }), @@ -375,6 +436,17 @@ module.exports = require("marko/dist/core-tags/core/__flush_here_and_after__.js" /***/ }), +/***/ "marko/dist/core-tags/core/await/renderer.js": +/*!**************************************************************!*\ + !*** external "marko/dist/core-tags/core/await/renderer.js" ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("marko/dist/core-tags/core/await/renderer.js"); + +/***/ }), + /***/ "marko/dist/core-tags/core/await/reorderer-renderer.js": /*!************************************************************************!*\ !*** external "marko/dist/core-tags/core/await/reorderer-renderer.js" ***! @@ -439,6 +511,28 @@ module.exports = require("marko/dist/runtime/html/helpers/attr"); module.exports = require("marko/dist/runtime/html/helpers/attrs"); +/***/ }), + +/***/ "marko/dist/runtime/html/helpers/escape-script-placeholder": +/*!****************************************************************************!*\ + !*** external "marko/dist/runtime/html/helpers/escape-script-placeholder" ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("marko/dist/runtime/html/helpers/escape-script-placeholder"); + +/***/ }), + +/***/ "marko/dist/runtime/html/helpers/escape-style-placeholder": +/*!***************************************************************************!*\ + !*** external "marko/dist/runtime/html/helpers/escape-style-placeholder" ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("marko/dist/runtime/html/helpers/escape-style-placeholder"); + /***/ }) /******/ }); \ No newline at end of file diff --git a/src/__tests__/fixtures/asset-tag/__snapshots__/webpack5/server--main.js b/src/__tests__/fixtures/asset-tag/__snapshots__/webpack5/server--main.js index 787f6b5..f85e55d 100644 --- a/src/__tests__/fixtures/asset-tag/__snapshots__/webpack5/server--main.js +++ b/src/__tests__/fixtures/asset-tag/__snapshots__/webpack5/server--main.js @@ -14,13 +14,23 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var marko_dist_runtime_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! marko/dist/runtime/html */ "marko/dist/runtime/html"); /* harmony import */ var marko_dist_runtime_html__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _marko_webpack_loader_manifest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!@marko/webpack/loader!?manifest */ "./src/loader/index.ts!?manifest"); -/* harmony import */ var marko_dist_runtime_html_helpers_attr__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! marko/dist/runtime/html/helpers/attr */ "marko/dist/runtime/html/helpers/attr"); -/* harmony import */ var marko_dist_runtime_html_helpers_attr__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html_helpers_attr__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var marko_dist_runtime_html_helpers_attrs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! marko/dist/runtime/html/helpers/attrs */ "marko/dist/runtime/html/helpers/attrs"); -/* harmony import */ var marko_dist_runtime_html_helpers_attrs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html_helpers_attrs__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! marko/dist/runtime/components/renderer */ "marko/dist/runtime/components/renderer"); -/* harmony import */ var marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs/promises */ "fs/promises"); +/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _marko_webpack_loader_manifest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !!@marko/webpack/loader!?manifest */ "./src/loader/index.ts!?manifest"); +/* harmony import */ var marko_dist_runtime_html_helpers_escape_script_placeholder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! marko/dist/runtime/html/helpers/escape-script-placeholder */ "marko/dist/runtime/html/helpers/escape-script-placeholder"); +/* harmony import */ var marko_dist_runtime_html_helpers_escape_script_placeholder__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html_helpers_escape_script_placeholder__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var marko_dist_runtime_html_helpers_attr__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! marko/dist/runtime/html/helpers/attr */ "marko/dist/runtime/html/helpers/attr"); +/* harmony import */ var marko_dist_runtime_html_helpers_attr__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html_helpers_attr__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var marko_dist_runtime_html_helpers_attrs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! marko/dist/runtime/html/helpers/attrs */ "marko/dist/runtime/html/helpers/attrs"); +/* harmony import */ var marko_dist_runtime_html_helpers_attrs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html_helpers_attrs__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! marko/dist/core-tags/core/await/renderer.js */ "marko/dist/core-tags/core/await/renderer.js"); +/* harmony import */ var marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! marko/dist/runtime/helpers/render-tag */ "marko/dist/runtime/helpers/render-tag"); +/* harmony import */ var marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var marko_dist_runtime_html_helpers_escape_style_placeholder__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! marko/dist/runtime/html/helpers/escape-style-placeholder */ "marko/dist/runtime/html/helpers/escape-style-placeholder"); +/* harmony import */ var marko_dist_runtime_html_helpers_escape_style_placeholder__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_html_helpers_escape_style_placeholder__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! marko/dist/runtime/components/renderer */ "marko/dist/runtime/components/renderer"); +/* harmony import */ var marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_9__); const _marko_template = (0,marko_dist_runtime_html__WEBPACK_IMPORTED_MODULE_0__.t)(); @@ -30,15 +40,22 @@ const _marko_template = (0,marko_dist_runtime_html__WEBPACK_IMPORTED_MODULE_0__. + + + + + const _marko_componentType = "GHIxthSC", _marko_component = {}; -_marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_4___default()(function (input, out, _component, component, state) { +_marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MODULE_9___default()(function (input, out, _component, component, state) { const { entry, + inline, scriptAttrs, styleAttrs } = input; - const assets = _marko_webpack_loader_manifest__WEBPACK_IMPORTED_MODULE_1__.default.getAssets(entry, out.global.buildName); + const assets = _marko_webpack_loader_manifest__WEBPACK_IMPORTED_MODULE_2__.default.getAssets(entry, out.global.buildName); + const outputPath = _marko_webpack_loader_manifest__WEBPACK_IMPORTED_MODULE_2__.default.getOutputPath(out.global.buildName); const written = out.global.___writtenAssets || (out.global.___writtenAssets = new Set()); if (assets.js) { @@ -50,11 +67,27 @@ _marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MOD if (!written.has(js)) { written.add(js); - out.w(``); + + if (inline) { + marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7___default()((marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6___default()), { + "_provider": fs_promises__WEBPACK_IMPORTED_MODULE_1___default().readFile(outputPath + js, "utf-8"), + "_name": "fs.readFile(outputPath + js, \"utf-8\")", + "then": { + "renderBody": (out, code) => { + out.w(`${marko_dist_runtime_html_helpers_escape_script_placeholder__WEBPACK_IMPORTED_MODULE_3___default()(code)}`); + } + } + }, out, _component, "0" + _keyScope); + } else { + out.w(``); + } } } } @@ -67,11 +100,24 @@ _marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MOD if (!written.has(css)) { written.add(css); - out.w(``); + + if (inline) { + marko_dist_runtime_helpers_render_tag__WEBPACK_IMPORTED_MODULE_7___default()((marko_dist_core_tags_core_await_renderer_js__WEBPACK_IMPORTED_MODULE_6___default()), { + "_provider": fs_promises__WEBPACK_IMPORTED_MODULE_1___default().readFile(outputPath + css, "utf-8"), + "_name": "fs.readFile(outputPath + css, \"utf-8\")", + "then": { + "renderBody": (out, code) => { + out.w(`${marko_dist_runtime_html_helpers_escape_style_placeholder__WEBPACK_IMPORTED_MODULE_8___default()(code)}`); + } + } + }, out, _component, "4" + _keyScope2); + } else { + out.w(``); + } } } } @@ -239,11 +285,26 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - getAssets(entry) { - return this.build[entry]; - }, - build: {"other":{"js":["other.js"]},"test_wUwF":{"js":["test_wUwF.js"]}} -}); + getAssets(entry) { + return this.build[entry]; + }, + getOutputPath() { + return this.buildOutputPath; + }, + build: {"other":{"js":["other.js"]},"test_wUwF":{"js":["test_wUwF.js"]}}, + buildOutputPath: "_PROJECT/dist" + }); + +/***/ }), + +/***/ "fs/promises": +/*!******************************!*\ + !*** external "fs/promises" ***! + \******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs/promises");; /***/ }), @@ -280,6 +341,17 @@ module.exports = require("marko/dist/core-tags/core/__flush_here_and_after__.js" /***/ }), +/***/ "marko/dist/core-tags/core/await/renderer.js": +/*!**************************************************************!*\ + !*** external "marko/dist/core-tags/core/await/renderer.js" ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("marko/dist/core-tags/core/await/renderer.js");; + +/***/ }), + /***/ "marko/dist/core-tags/core/await/reorderer-renderer.js": /*!************************************************************************!*\ !*** external "marko/dist/core-tags/core/await/reorderer-renderer.js" ***! @@ -344,6 +416,28 @@ module.exports = require("marko/dist/runtime/html/helpers/attr");; "use strict"; module.exports = require("marko/dist/runtime/html/helpers/attrs");; +/***/ }), + +/***/ "marko/dist/runtime/html/helpers/escape-script-placeholder": +/*!****************************************************************************!*\ + !*** external "marko/dist/runtime/html/helpers/escape-script-placeholder" ***! + \****************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("marko/dist/runtime/html/helpers/escape-script-placeholder");; + +/***/ }), + +/***/ "marko/dist/runtime/html/helpers/escape-style-placeholder": +/*!***************************************************************************!*\ + !*** external "marko/dist/runtime/html/helpers/escape-style-placeholder" ***! + \***************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("marko/dist/runtime/html/helpers/escape-style-placeholder");; + /***/ }) /******/ }); diff --git a/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack4/server--main.js b/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack4/server--main.js index 1d285dd..b5be112 100644 --- a/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack4/server--main.js +++ b/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack4/server--main.js @@ -247,11 +247,15 @@ _marko_template._ = marko_dist_runtime_components_renderer__WEBPACK_IMPORTED_MOD "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ({ - getAssets(entry) { - return this.build[entry]; - }, - build: {"test_8XgZ":{"js":["test_8XgZ.js"]}} -}); + getAssets(entry) { + return this.build[entry]; + }, + getOutputPath() { + return this.buildOutputPath; + }, + build: {"test_8XgZ":{"js":["test_8XgZ.js"]}}, + buildOutputPath: "_PROJECT/dist" + }); /***/ }), diff --git a/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack5/server--main.js b/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack5/server--main.js index 06b1485..d421496 100644 --- a/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack5/server--main.js +++ b/src/__tests__/fixtures/basic-template-plugin-custom-runtime-id/__snapshots__/webpack5/server--main.js @@ -149,11 +149,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - getAssets(entry) { - return this.build[entry]; - }, - build: {"test_8XgZ":{"js":["test_8XgZ.js"]}} -}); + getAssets(entry) { + return this.build[entry]; + }, + getOutputPath() { + return this.buildOutputPath; + }, + build: {"test_8XgZ":{"js":["test_8XgZ.js"]}}, + buildOutputPath: "_PROJECT/dist" + }); /***/ }), diff --git a/src/__tests__/fixtures/basic-template-plugin-production/__snapshots__/webpack4/server--main.js b/src/__tests__/fixtures/basic-template-plugin-production/__snapshots__/webpack4/server--main.js index fb30a65..a3133fc 100644 --- a/src/__tests__/fixtures/basic-template-plugin-production/__snapshots__/webpack4/server--main.js +++ b/src/__tests__/fixtures/basic-template-plugin-production/__snapshots__/webpack4/server--main.js @@ -1 +1 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.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 s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));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=6)}([function(e,t){e.exports=require("marko/dist/runtime/helpers/render-tag")},function(e,t){e.exports=require("marko/dist/runtime/html")},function(e,t){e.exports=require("marko/dist/runtime/components/renderer")},function(e,t){e.exports=require("marko/dist/core-tags/core/__flush_here_and_after__.js")},function(e,t){e.exports=require("marko/dist/core-tags/components/init-components-tag.js")},function(e,t){e.exports=require("marko/dist/core-tags/core/await/reorderer-renderer.js")},function(e,t,r){const n=r(7),s=r(8);n.createServer((e,t)=>{s.render({},t)}).listen(0)},function(e,t){e.exports=require("http")},function(e,t,r){"use strict";r.r(t);var n=r(1),s=r(2),o=r.n(s);const i=Object(n.t)();var c=i;i._=o()((function(e,t,r,n,s){t.w("

Hello World

")}),{t:"7Fk+kAfP",i:!0},{});var u={getAssets(e){return this.build[e]},build:{"test_7Fk-":{js:["test_7Fk-.js"]}}},f=r(3),a=r.n(f),l=r(0),_=r.n(l),d=r(4),p=r.n(d),b=r(5),g=r.n(b);const m=Object(n.t)();t.default=m;const h="file:"===new URL(r.p,"file:").protocol?"":" crossorigin";function y(e){const t=this.___entries;if(this.___entries=void 0,t){r.p&&e.script("$mwp="+JSON.stringify(r.p));const n=this.buildName,s=this.cspNonce,o=s?" nonce="+JSON.stringify(s):"",i=this.___writtenAssets||(this.___writtenAssets=new Set);let c="",f="";for(const e of t){const t=u.getAssets(e,n);if(t.js)for(const e of t.js)i.has(e)||(i.add(e),c+=`