I searched for the layout file where the template vendor\magento\module-checkout\view\frontend\web\template\minicart\item\default.html is getting called, to figure out the block class.
I found one reference in the layout file vendor\magento\module-checkout\view\frontend\layout\checkout_cart_item_renderers.xml:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="checkout_item_price_renderers"/>
<body>
<referenceBlock name="checkout.cart.item.renderers">
<block class="Magento\Checkout\Block\Cart\Item\Renderer" name="checkout.cart.item.renderers.default" as="default" template="Magento_Checkout::cart/item/default.phtml">
<block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.default.actions" as="actions">
<block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.default.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
<block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.default.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
</block>
</block>
As you can see it uses the block class Magento\Checkout\Block\Cart\Item\Renderer, where the methods getProductName() and getProductUrl() are defined. So calling product_name in knockoutjs, leads to the fucntion getProductName getting called. Not sure where the logic about this is located though.
/**
* Retrieve URL to item Product
*
* @return string
*/
public function getProductUrl()
{
if ($this->_productUrl !== null) {
return $this->_productUrl;
}
if ($this->getItem()->getRedirectUrl()) {
return $this->getItem()->getRedirectUrl();
}
$product = $this->getProduct();
$option = $this->getItem()->getOptionByCode('product_type');
if ($option) {
$product = $option->getProduct();
}
return $product->getUrlModel()->getUrl($product);
}
/**
* Get item product name
*
* @return string
*/
public function getProductName()
{
if ($this->hasProductName()) {
return $this->getData('product_name');
}
return $this->getProduct()->getName();
}