#!/bin/bash # Fix lodash.template assignWith issue for Linux/Mac servers - V2 # Run this script after npm/yarn install LODGASH_TEMPLATE="node_modules/lodash.template/index.js" if [ ! -f "$LODGASH_TEMPLATE" ]; then echo "❌ lodash.template not found. Please run npm install or yarn install first." exit 1 fi # Check if already patched with v2 if grep -q "LODASH_TEMPLATE_PATCHED_V2" "$LODGASH_TEMPLATE"; then echo "✓ lodash.template already patched with v2" exit 0 fi # Remove old patch if exists if grep -q "LODASH_TEMPLATE_PATCHED" "$LODGASH_TEMPLATE"; then echo "🔄 Removing old patch..." # Use sed to remove old patch (multi-line) sed -i '/\/\* LODASH_TEMPLATE_PATCHED \*\//,/^}$/d' "$LODGASH_TEMPLATE" fi echo "🔧 Patching lodash.template with v2..." # Create a temporary file with the patch PATCH='/* LODASH_TEMPLATE_PATCHED_V2 */ // assignWith polyfill for lodash.template - Fixed version function assignWith(object, source, customizer) { if (object == null) return object; if (typeof customizer !== "function") { customizer = function(objValue, srcValue) { return srcValue; }; } var props = Object.keys(Object(source)); for (var i = 0; i < props.length; i++) { var key = props[i]; var value = source[key]; var assignedValue = customizer(object[key], value, key, object, source); if (assignedValue !== undefined) { object[key] = assignedValue; } } return object; } ' # Insert after the first line (license comment) { head -n 1 "$LODGASH_TEMPLATE" echo "$PATCH" tail -n +2 "$LODGASH_TEMPLATE" } > "$LODGASH_TEMPLATE.tmp" && mv "$LODGASH_TEMPLATE.tmp" "$LODGASH_TEMPLATE" echo "✅ Successfully patched lodash.template with assignWith function (v2)"