aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack/utils
diff options
context:
space:
mode:
Diffstat (limited to 'config/webpack/utils')
-rw-r--r--config/webpack/utils/generate-script-build-config.js64
-rw-r--r--config/webpack/utils/inline-javascript.js5
-rw-r--r--config/webpack/utils/script-runtime.js15
3 files changed, 16 insertions, 68 deletions
diff --git a/config/webpack/utils/generate-script-build-config.js b/config/webpack/utils/generate-script-build-config.js
deleted file mode 100644
index a6f9f54..0000000
--- a/config/webpack/utils/generate-script-build-config.js
+++ /dev/null
@@ -1,64 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const SanitizeScriptsImportPlugin = require("../plugins/sanitize-scripts-import-webpack-plugin");
-const InjectScriptPlugin = require("../plugins/inject-script-webpack-plugin");
-const inlineJavascript = require("./inline-javascript");
-
-const scripts = require(path.resolve(process.env.SOURCE_DIR, "scripts.json"));
-
-const getImportStatementForScript = script => {
- const importPath = path.resolve(process.env.SOURCE_DIR, "scripts", script);
- return `import "${importPath}";`;
-};
-
-const getVirtualEntry = scriptType => {
- const importStatements = Object.keys(scripts[scriptType]).map(getImportStatementForScript).join("\n");
-
- return inlineJavascript(importStatements);
-}
-
-let injectedScriptsCount = 0;
-const generateScriptBuildConfig = scriptType => {
- return {
- entry: getVirtualEntry(scriptType),
- name: scriptType,
- mode: "production",
- output: {
- filename: `${scriptType}.js`
- },
- resolve: {
- extensions: ["", ".ts", ".js"],
- alias: {
- "@": process.env.SOURCE_DIR
- }
- },
- module: {
- rules: [
- {
- test: /\.tsx?$/,
- loader: "ts-loader",
- options: {
- configFile: "config/tsconfig.json"
- }
- },
- {
- test: new RegExp(`^${path.resolve(process.env.SOURCE_DIR, "scripts")}`),
- loader: path.resolve(process.env.CONFIG_DIR, "webpack/loaders/scoped-loader")
- }
- ]
- },
- plugins: [
- new SanitizeScriptsImportPlugin()
- ].concat(
- scriptType.startsWith("injected")
- ? [new InjectScriptPlugin({
- onload: scriptType === "injected_and_loaded",
- isFirst: injectedScriptsCount++ <= 0
- })]
- : []
- )
- };
-};
-
-module.exports = generateScriptBuildConfig;
diff --git a/config/webpack/utils/inline-javascript.js b/config/webpack/utils/inline-javascript.js
index b9348cc..ea344a4 100644
--- a/config/webpack/utils/inline-javascript.js
+++ b/config/webpack/utils/inline-javascript.js
@@ -1,4 +1 @@
-module.exports = code => {
- const base64 = Buffer.from(code).toString("base64");
- return `data:text/javascript;base64,${base64}`;
-};
+module.exports.inlineJavascript = code => `data:text/javascript;base64,${Buffer.from(code).toString("base64")}`;
diff --git a/config/webpack/utils/script-runtime.js b/config/webpack/utils/script-runtime.js
new file mode 100644
index 0000000..394e87e
--- /dev/null
+++ b/config/webpack/utils/script-runtime.js
@@ -0,0 +1,15 @@
+module.exports.getScriptRuntimeFromType = scriptType => {
+ switch (scriptType) {
+ case "before":
+ case "injected":
+ case "injected_and_loaded":
+ return "document_start";
+
+ case "rendered":
+ return "document_end";
+
+ case "loaded":
+ default:
+ return "document_idle";
+ }
+};