From 74bb4fd9ff0982a395046f534f122f44fa9ae64a Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Sat, 17 May 2025 01:29:26 +0200
Subject: [PATCH] feat: add alias attriburte

---
 source/go.mod                                 |  2 +-
 source/go.sum                                 |  2 ++
 source/javascript/generate.go                 | 20 +++++++++++--
 .../charmbracelet/log/.golangci.yml           | 28 +++++++++----------
 .../github.com/charmbracelet/log/json.go      |  8 +++++-
 .../charmbracelet/log/logger_121.go           |  2 ++
 .../charmbracelet/log/logger_no121.go         |  2 ++
 source/vendor/modules.txt                     |  2 +-
 8 files changed, 47 insertions(+), 19 deletions(-)

diff --git a/source/go.mod b/source/go.mod
index 536064d..b0ff802 100644
--- a/source/go.mod
+++ b/source/go.mod
@@ -4,7 +4,7 @@ go 1.23.0
 
 require (
 	github.com/andybalholm/cascadia v1.3.3
-	github.com/charmbracelet/log v0.4.1
+	github.com/charmbracelet/log v0.4.2
 	github.com/evanw/esbuild v0.25.4
 	github.com/tdewolff/parse/v2 v2.8.0
 	gitlab.schukai.com/oss/libraries/go/application/xflags.git v1.16.5
diff --git a/source/go.sum b/source/go.sum
index 8d5eae4..d312174 100644
--- a/source/go.sum
+++ b/source/go.sum
@@ -68,6 +68,8 @@ github.com/charmbracelet/log v0.4.0 h1:G9bQAcx8rWA2T3pWvx7YtPTPwgqpk7D68BX21IRW8
 github.com/charmbracelet/log v0.4.0/go.mod h1:63bXt/djrizTec0l11H20t8FDSvA4CRZJ1KH22MdptM=
 github.com/charmbracelet/log v0.4.1 h1:6AYnoHKADkghm/vt4neaNEXkxcXLSV2g1rdyFDOpTyk=
 github.com/charmbracelet/log v0.4.1/go.mod h1:pXgyTsqsVu4N9hGdHmQ0xEA4RsXof402LX9ZgiITn2I=
+github.com/charmbracelet/log v0.4.2 h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsyig=
+github.com/charmbracelet/log v0.4.2/go.mod h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw=
 github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
 github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
 github.com/charmbracelet/x/ansi v0.9.2 h1:92AGsQmNTRMzuzHEYfCdjQeUzTrgE1vfO5/7fEVoXdY=
diff --git a/source/javascript/generate.go b/source/javascript/generate.go
index fb3508f..a628104 100644
--- a/source/javascript/generate.go
+++ b/source/javascript/generate.go
@@ -27,6 +27,9 @@ func ParseHTMLFile(p string, development bool) error {
 		var src, source, scriptDist, styleDist, target string
 
 		if n.Type == html.ElementNode && n.Data == "script" {
+
+			aliases := make(map[string]string)
+
 			for _, attr := range n.Attr {
 				if attr.Key == "data-bob-source" {
 					source = attr.Val
@@ -36,6 +39,17 @@ func ParseHTMLFile(p string, development bool) error {
 					styleDist = attr.Val
 				} else if attr.Key == "data-bob-target" {
 					target = attr.Val
+				} else if attr.Key == "data-bob-alias" {
+					val := strings.Split(attr.Val, ",")
+					for _, alias := range val {
+						parts := strings.Split(alias, ":")
+						if len(parts) == 2 {
+							aliases[strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1])
+						} else {
+							log.Error("Invalid alias format: " + alias)
+						}
+					}
+
 				} else if attr.Key == "src" {
 					src = attr.Val
 				}
@@ -68,7 +82,7 @@ func ParseHTMLFile(p string, development bool) error {
 
 				log.Info("Script: " + src + " " + source + " " + scriptDist + " " + styleDist)
 
-				runESBuild(source, path.Dir(p), scriptDist, styleDist, development, target)
+				runESBuild(source, path.Dir(p), scriptDist, styleDist, development, target, aliases)
 
 			}
 
@@ -83,7 +97,7 @@ func ParseHTMLFile(p string, development bool) error {
 	return nil
 }
 
-func runESBuild(source, dist, scriptDist, styleDist string, development bool, target string) {
+func runESBuild(source, dist, scriptDist, styleDist string, development bool, target string, aliases map[string]string) {
 
 	var treeShaking = api.TreeShakingTrue
 	if development {
@@ -158,6 +172,8 @@ func runESBuild(source, dist, scriptDist, styleDist string, development bool, ta
 		LogLevel:    api.LogLevelError,
 		Target:      esbuildTarget,
 
+		Alias: aliases,
+
 		MinifySyntax:      !development,
 		MinifyWhitespace:  !development,
 		MinifyIdentifiers: !development,
diff --git a/source/vendor/github.com/charmbracelet/log/.golangci.yml b/source/vendor/github.com/charmbracelet/log/.golangci.yml
index 90c5c08..be61d89 100644
--- a/source/vendor/github.com/charmbracelet/log/.golangci.yml
+++ b/source/vendor/github.com/charmbracelet/log/.golangci.yml
@@ -1,17 +1,6 @@
+version: "2"
 run:
   tests: false
-
-issues:
-  include:
-    - EXC0001
-    - EXC0005
-    - EXC0011
-    - EXC0012
-    - EXC0013
-
-  max-issues-per-linter: 0
-  max-same-issues: 0
-
 linters:
   enable:
     - bodyclose
@@ -19,8 +8,6 @@ linters:
     - goconst
     - godot
     - godox
-    - gofumpt
-    - goimports
     - gomoddirectives
     - goprintffuncname
     - gosec
@@ -39,3 +26,16 @@ linters:
     - unparam
     - whitespace
     - wrapcheck
+  exclusions:
+    generated: lax
+    presets:
+      - common-false-positives
+issues:
+  max-issues-per-linter: 0
+  max-same-issues: 0
+formatters:
+  enable:
+    - gofumpt
+    - goimports
+  exclusions:
+    generated: lax
diff --git a/source/vendor/github.com/charmbracelet/log/json.go b/source/vendor/github.com/charmbracelet/log/json.go
index 19d4ddd..f84083d 100644
--- a/source/vendor/github.com/charmbracelet/log/json.go
+++ b/source/vendor/github.com/charmbracelet/log/json.go
@@ -88,7 +88,13 @@ func (l *Logger) writeSlogValue(jw *jsonWriter, v slogValue) {
 		}
 		jw.end()
 	default:
-		jw.objectValue(v.Any())
+		a := v.Any()
+		_, jm := a.(json.Marshaler)
+		if err, ok := a.(error); ok && !jm {
+			jw.objectValue(err.Error())
+		} else {
+			jw.objectValue(a)
+		}
 	}
 }
 
diff --git a/source/vendor/github.com/charmbracelet/log/logger_121.go b/source/vendor/github.com/charmbracelet/log/logger_121.go
index b5cf956..478e1a0 100644
--- a/source/vendor/github.com/charmbracelet/log/logger_121.go
+++ b/source/vendor/github.com/charmbracelet/log/logger_121.go
@@ -17,6 +17,8 @@ type (
 	slogLogValuer = slog.LogValuer
 )
 
+var slogAnyValue = slog.AnyValue
+
 const slogKindGroup = slog.KindGroup
 
 // Enabled reports whether the logger is enabled for the given level.
diff --git a/source/vendor/github.com/charmbracelet/log/logger_no121.go b/source/vendor/github.com/charmbracelet/log/logger_no121.go
index ce8b8a2..ea8bb10 100644
--- a/source/vendor/github.com/charmbracelet/log/logger_no121.go
+++ b/source/vendor/github.com/charmbracelet/log/logger_no121.go
@@ -18,6 +18,8 @@ type (
 	slogLogValuer = slog.LogValuer
 )
 
+var slogAnyValue = slog.AnyValue
+
 const slogKindGroup = slog.KindGroup
 
 // Enabled reports whether the logger is enabled for the given level.
diff --git a/source/vendor/modules.txt b/source/vendor/modules.txt
index 2f6df74..57bc76c 100644
--- a/source/vendor/modules.txt
+++ b/source/vendor/modules.txt
@@ -111,7 +111,7 @@ github.com/charmbracelet/colorprofile
 # github.com/charmbracelet/lipgloss v1.1.0
 ## explicit; go 1.18
 github.com/charmbracelet/lipgloss
-# github.com/charmbracelet/log v0.4.1
+# github.com/charmbracelet/log v0.4.2
 ## explicit; go 1.19
 github.com/charmbracelet/log
 # github.com/charmbracelet/x/ansi v0.9.2
-- 
GitLab