UNPKG

wordpress-shortcode-webpack-plugin

Version:
147 lines (146 loc) 6.43 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLoaderUtils = exports.createShortcodeRegistration = exports.createShortcodeDefinitions = exports.createAddAction = exports.createAssetManifest = exports.createPluginHeader = exports.generatePluginFile = void 0; var utils_1 = require("./utils"); var path_1 = require("path"); function generatePluginFile(wpPluginName, manifest, options, compiler) { // Read in our template file var pluginFileContent = utils_1.readFile(compiler.inputFileSystem, options.pluginTemplate); var templatedFile = pluginFileContent .replace('{{plugin_header}}', createPluginHeader(__assign(__assign({}, options.headerFields), { pluginName: wpPluginName }))) .replace('{{asset_manifest}}', createAssetManifest(manifest)) .replace('{{shortcode_definitions}}', createShortcodeDefinitions(manifest, options.entryToRootId)) .replace('{{shortcode_registration}}', createShortcodeRegistration(options.shortcodePrefix, wpPluginName, manifest)) .replace('{{loading_script_utils}}', createLoaderUtils(wpPluginName, compiler.inputFileSystem)) .replace('{{add_action}}', createAddAction(wpPluginName)); return templatedFile; } exports.generatePluginFile = generatePluginFile; // Creates the Wordpress format plugin header so that // Wordpress knows the plugin metadata. function createPluginHeader(opts) { var header = " /**\n * Plugin Name: " + utils_1.kebabToTitle(opts.pluginName); if (opts.pluginUri) { header += "\n * Plugin URI: " + opts.pluginUri; } if (opts.description) { header += "\n * Description: " + opts.description; } if (opts.version) { header += "\n * Version: " + opts.version; } if (opts.requiredWordpressVersion) { header += "\n * Requires at least: " + opts.requiredWordpressVersion; } if (opts.requiredWordpressVersion) { header += "\n * Requires PHP: " + opts.requiredPHPVersion; } if (opts.author) { header += "\n * Author: " + opts.author; } if (opts.authorUri) { header += "\n * Author URI: " + opts.authorUri; } if (opts.license) { header += "\n * License: " + opts.license; } if (opts.licenseUri) { header += "\n * License URI: " + opts.licenseUri; } if (opts.textDomain) { header += "\n * Text Domain: " + opts.textDomain; } if (opts.domainPath) { header += "\n * Domain Path: " + opts.domainPath; } if (opts.isNetworkWide) { header += "\n * Network: " + opts.isNetworkWide; } header += "\n */"; return header; } exports.createPluginHeader = createPluginHeader; // Creates an asset manifest associative array as a PHP string function createAssetManifest(manifest) { return " $manifest = " + utils_1.jsObjectToPhpArray(manifest.entries, 1, true); } exports.createAssetManifest = createAssetManifest; function createAddAction(pluginName) { return " add_action('init', 'register_" + utils_1.kebabToSnake(pluginName) + "_entries');"; } exports.createAddAction = createAddAction; function createShortcodeDefinitions(manifest, entryToRootId) { var e_1, _a; if (entryToRootId === void 0) { entryToRootId = {}; } var functions = []; try { for (var _b = __values(Object.keys(manifest.entries)), _c = _b.next(); !_c.done; _c = _b.next()) { var entryName = _c.value; var rootId = entryToRootId[entryName] || 'root'; // Write a function that creates the root element and enqueues the // assets for that entrypoint. var newFunc = " function create_" + entryName + "_app() {\n enqueue_assets('" + entryName + "');\n\n return '<div id=\"" + rootId + "\"></div>';\n }"; functions.push(newFunc); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } return functions.join('\n'); } exports.createShortcodeDefinitions = createShortcodeDefinitions; function createShortcodeRegistration(shortcodePrefix, pluginName, manifest) { var e_2, _a; var addShortcodes = []; var registerAssets = []; try { for (var _b = __values(Object.keys(manifest.entries)), _c = _b.next(); !_c.done; _c = _b.next()) { var entryName = _c.value; addShortcodes.push("add_shortcode('" + shortcodePrefix + "-" + entryName + "', 'create_" + entryName + "_app');"); registerAssets.push("register_assets('" + entryName + "');"); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } // Write a function that creates the root element and enqueues the // assets for that entrypoint. return " function register_" + utils_1.kebabToSnake(pluginName) + "_entries() {\n" + utils_1.indentText(addShortcodes.join('\n'), 2) + "\n" + utils_1.indentText(registerAssets.join('\n'), 2) + "\n }"; } exports.createShortcodeRegistration = createShortcodeRegistration; function createLoaderUtils(pluginName, fs) { var utilsPath = path_1.resolve(__dirname, 'load-assets.php'); var loadAssetsUtils = utils_1.readFile(fs, utilsPath); return loadAssetsUtils.replace(/{{pluginName}}/g, pluginName); } exports.createLoaderUtils = createLoaderUtils;