#!/bin/bash # Emergency patch for lodash.template@4.18.x only. Skip when overrides pin 4.5.0. # Run after npm install on Linux/Mac if needed. if [ -f "node_modules/lodash.template/package.json" ]; then VER=$(node -p "require('./node_modules/lodash.template/package.json').version" 2>/dev/null || echo "") case "$VER" in 4.5.*) echo "✓ lodash.template is $VER; skip manual patch"; exit 0 ;; esac fi 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)"