#!/usr/bin/env bash
# shellcheck disable=SC2086

# CLI options for esbuild
log="--log-level=error"
production_node_opts="--bundle --platform=node --minify --sourcemap --external:@kreuzberg/html-to-markdown --external:jiti --outfile=./build/commands/"
debugging_node_opts="--bundle --platform=node --sourcemap --external:@kreuzberg/html-to-markdown --external:jiti --outfile=./build/commands/"
react_opts="--platform=node --external:@griddo-instance --external:react --external:react-dom --external:@kreuzberg/html-to-markdown --bundle --minify"

# Manage --minify for debugging
bundle_node_opts=$production_node_opts
if [ "$1" = "--debug" ]; then
    bundle_node_opts=$debugging_node_opts
fi

# library
esbuild ${log} ./exporter/index.ts --bundle --platform=node --external:@kreuzberg/html-to-markdown --outfile=./build/index.js
esbuild ${log} ./exporter/react/index.tsx ${react_opts} --outfile=./build/react/index.js

# This .sh needs to be run from a npm script, so esbuild dependency is available
esbuild ${log} ./exporter/commands/end-render.ts ${bundle_node_opts}end-render.js
esbuild ${log} ./exporter/commands/upload-search-content.ts ${bundle_node_opts}upload-search-content.js
esbuild ${log} ./exporter/commands/update-embeddings.ts ${bundle_node_opts}update-embeddings.js
esbuild ${log} ./exporter/commands/reset-render.ts ${bundle_node_opts}reset-render.js
esbuild ${log} ./exporter/commands/start-render.ts ${bundle_node_opts}start-render.js
esbuild ${log} ./exporter/commands/prepare-render.ts ${bundle_node_opts}prepare-render.js
esbuild ${log} ./exporter/commands/get-render-mode.ts ${bundle_node_opts}get-render-mode.js
esbuild ${log} ./exporter/commands/mark-error.ts ${bundle_node_opts}mark-error.js

# Legacy infra entry points (infra python antigua; ver exporter/commands/legacy/).
# Salida plana legacy-*.js para conservar la profundidad de __dirname en runtime.
esbuild ${log} ./exporter/commands/legacy/prepare-domains-render.ts ${bundle_node_opts}legacy-prepare-domains-render.js
esbuild ${log} ./exporter/commands/legacy/start-render.ts ${bundle_node_opts}legacy-start-render.js
esbuild ${log} ./exporter/commands/legacy/end-render.ts ${bundle_node_opts}legacy-end-render.js
esbuild ${log} ./exporter/commands/legacy/upload-search-content.ts ${bundle_node_opts}legacy-upload-search-content.js
esbuild ${log} ./exporter/commands/legacy/notify-indexnow.ts ${bundle_node_opts}legacy-notify-indexnow.js
esbuild ${log} ./exporter/commands/legacy/reset-render.ts ${bundle_node_opts}legacy-reset-render.js

# types
tsgo --emitDeclarationOnly --declaration --outDir build --project tsconfig.exporter.json

echo "Build completed successfully!"