penguin/AstroJS

Javascript framework for my blog

commit 021655464d8335de2895d3b1b5a296a1f37dcfb6

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-13T01:48:40Z
subjectFixed resolver incorrectly stripping class names
commit 021655464d8335de2895d3b1b5a296a1f37dcfb6
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-13T01:48:40Z

    Fixed resolver incorrectly stripping class names
---
 .../AstroEdit/Visualizer/Snippet/ArticleLink.js    |  2 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Code.js      |  3 +-
 .../Blog/AstroEdit/Visualizer/Snippet/SiteFile.js  |  2 +-
 botanjs/src/Components/MessageBox.js               |  1 +
 botanjs/src/externs/_AstConf_.AstroEdit.js         |  2 +-
 resolver-go/internal/generated/buildinfo_gen.go    |  2 +-
 resolver-go/internal/generated/classmap_gen.go     | 16 +++---
 resolver-go/internal/resolver/resolver.go          | 67 +++++++++++++++-------
 8 files changed, 60 insertions(+), 35 deletions(-)

diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
index c3c5b54..a102e07 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
@@ -69,7 +69,7 @@
 		, visualizer = function ( submitted, override )
 		{
 
-			var id, stage = this.stage;
+			var id, title, stage = this.stage;
 
 			if( override )
 			{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
index 9dfdfee..ed65f70 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
@@ -103,8 +103,7 @@
 		/* @type override {_AstXObject_.AstroEdit.Visualizer.Snippet.Code.Override} */
 		, visualizer = function( submitted, override )
 		{
-			var lang, code, inline
-			, stage = this.stage;
+			var lang, code, inline, stage = this && this.stage;
 			
 			if( override )
 			{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
index 19bcb34..d6c61ae 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
@@ -181,7 +181,7 @@
 
 		, visualizer = function ( submitted, override )
 		{
-			var hash, _obj, stage = this.stage;
+			var hash, preferred, _obj, stage = this.stage;
 
 			if( override )
 			{
diff --git a/botanjs/src/Components/MessageBox.js b/botanjs/src/Components/MessageBox.js
index d690063..1e533ee 100644
--- a/botanjs/src/Components/MessageBox.js
+++ b/botanjs/src/Components/MessageBox.js
@@ -26,6 +26,7 @@
 		var keyBinding = new EventKey(
 			"KeyDown", function ( e )
 			{
+				var code;
 				e = e || window.event;
 				if ( e.keyCode ) code = e.keyCode;
 				else if ( e.which ) code = e.which;
diff --git a/botanjs/src/externs/_AstConf_.AstroEdit.js b/botanjs/src/externs/_AstConf_.AstroEdit.js
index 447d9bf..e167e98 100644
--- a/botanjs/src/externs/_AstConf_.AstroEdit.js
+++ b/botanjs/src/externs/_AstConf_.AstroEdit.js
@@ -22,7 +22,7 @@ _AstConf_.AstroEdit.paths = {};
 	/** @type {object} */
 	_AstConf_.AstroEdit.sections;
 
-/** @type {object} */
+/** @type {!Object<string, *>} */
 _AstConf_.AstroEdit.flags = {};
 /** @type {string} */
 _AstConf_.AstroEdit.flags.URICount;
diff --git a/resolver-go/internal/generated/buildinfo_gen.go b/resolver-go/internal/generated/buildinfo_gen.go
index fc6b5e0..1d2e564 100644
--- a/resolver-go/internal/generated/buildinfo_gen.go
+++ b/resolver-go/internal/generated/buildinfo_gen.go
@@ -2,5 +2,5 @@ package generated
 
 const (
 	IMAGE_TAG   = "dev"
-	Timestamp   = "20260612.044857"
+	Timestamp   = "20260613.014630"
 )
diff --git a/resolver-go/internal/generated/classmap_gen.go b/resolver-go/internal/generated/classmap_gen.go
index d905088..88159d7 100644
--- a/resolver-go/internal/generated/classmap_gen.go
+++ b/resolver-go/internal/generated/classmap_gen.go
@@ -23,8 +23,8 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.AstroEdit.Visualizer.Snippet":                          {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js", JSHash: "38f5d8512eabf1ffb4249b1414efd2362af8dc5c", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib":               {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "2d9450e8551d6cf33aba8c6277b3b657dd8f88b7", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent":           {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "9b7b814b643d47b760d4ebd8bdfc245b68f29c18", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink":              {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "c5fb71721e8edb7be31181ccefbee12b83ce08ff", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Code":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Code", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "4862ea23df220145aaf8b9914554f3feb0d2a67d", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink":              {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "8d1fc537add5e0572f7cb971819de2a9073c0533", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Code":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Code", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "06bdde157c5abefe6580ba768435acdda930b44b", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Footnote":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Footnote", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "e0e3593457533a3d4c27a1abcc172c2a21427775", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Heading":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Heading", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "7021e1443f4e3bf6a505fbd1a7dd40f84e871bc0", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Html":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Html", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "ebe3b346c9b59026b6b85e100b8e987d80ba28c1", CSSHash: "1"}},
@@ -32,7 +32,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Link":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Link", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "cefacf44112324620e1eeb7a659a791a9d22426a", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Meta":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Meta", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "e4de1e58e9a40e94e9304abf7edf5926a74e8fed", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.RespH":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.RespH", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "baa3f89f1c369b0c85ad827153ee2e510bf2598a", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "System.Cycle.Trigger", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "a503d87b94573aee5570800cf6dd35056d370c19", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "System.Cycle.Trigger", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "5c35958f82cfe78e50b4daff3ddad59f39d49cb0", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Sound":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Sound", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "28242ff124de631ac76a6bb59c507f98727fafc8", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "c1fb99bebb735e8941ebb4e4734c2d3ed41f892c", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Video":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Video", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "System.Net.getData", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "8b288548013b04bd869e669fa52d6e2ef155d2be", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"}},
@@ -119,7 +119,7 @@ var ClassMap = &classmap.Map{
 		"Components":                                                       {Name: "Components", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/_this.js", JSHash: "f4cb7babe62a5cdae34d2c4ebcb55071e81da4ff", CSSHash: "1"}},
 		"Components.Console":                                               {Name: "Components.Console", Kind: "class", Parent: "Components", Imports: []string{"System.utils.Perf", "System.Cycle", "System.Cycle.TICK", "System.Global", "System.Log", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Components.DockPanel"}, Resource: classmap.Resource{Src: "Components/Console.js", JSHash: "348c0ff1762c0a00ed813e3419f17ed695399ec3", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"}},
 		"Components.DockPanel":                                             {Name: "Components.DockPanel", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Components/DockPanel.js", JSHash: "b11318868cba7e297dd61b66abfc038b27a4f6d8", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"}},
-		"Components.MessageBox":                                            {Name: "Components.MessageBox", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMObject", "System.utils.EventKey", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Components/MessageBox.js", JSHash: "c9950277a095d74885d188a518e5c0de09679091", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"}},
+		"Components.MessageBox":                                            {Name: "Components.MessageBox", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMObject", "System.utils.EventKey", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"}},
 		"Components.Mouse":                                                 {Name: "Components.Mouse", Kind: "class", Parent: "Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"}},
 		"Components.Mouse.Clipboard":                                       {Name: "Components.Mouse.Clipboard", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.Global", "System.Debug", "System.utils.Perf", "System.Cycle", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Components/Mouse/Clipboard.js", JSHash: "742b2522cd0d5dad897d5c3afa2d568494661912", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"}},
 		"Components.Mouse.Clipboard.capture":                               {Name: "Components.Mouse.Clipboard.capture", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -326,8 +326,8 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/AstroEdit/Uploader.js":                                    {Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "bb696230f4ae9785fc482b761f97afd88a1fe993", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js":               {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "2d9450e8551d6cf33aba8c6277b3b657dd8f88b7", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js":           {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "9b7b814b643d47b760d4ebd8bdfc245b68f29c18", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js":              {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "c5fb71721e8edb7be31181ccefbee12b83ce08ff", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "4862ea23df220145aaf8b9914554f3feb0d2a67d", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js":              {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "8d1fc537add5e0572f7cb971819de2a9073c0533", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "06bdde157c5abefe6580ba768435acdda930b44b", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "e0e3593457533a3d4c27a1abcc172c2a21427775", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "7021e1443f4e3bf6a505fbd1a7dd40f84e871bc0", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "ebe3b346c9b59026b6b85e100b8e987d80ba28c1", CSSHash: "1"},
@@ -335,7 +335,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "cefacf44112324620e1eeb7a659a791a9d22426a", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "e4de1e58e9a40e94e9304abf7edf5926a74e8fed", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "baa3f89f1c369b0c85ad827153ee2e510bf2598a", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "a503d87b94573aee5570800cf6dd35056d370c19", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "5c35958f82cfe78e50b4daff3ddad59f39d49cb0", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "28242ff124de631ac76a6bb59c507f98727fafc8", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "c1fb99bebb735e8941ebb4e4734c2d3ed41f892c", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "8b288548013b04bd869e669fa52d6e2ef155d2be", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"},
@@ -395,7 +395,7 @@ var ClassMap = &classmap.Map{
 		"Astro/utils/_this.js":                                                {Src: "Astro/utils/_this.js", JSHash: "21e99449ec5c1a4b6d25164db9434132aeea5ad3", CSSHash: "1"},
 		"Components/Console.js":                                               {Src: "Components/Console.js", JSHash: "348c0ff1762c0a00ed813e3419f17ed695399ec3", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"},
 		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "b11318868cba7e297dd61b66abfc038b27a4f6d8", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
-		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "c9950277a095d74885d188a518e5c0de09679091", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
+		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
 		"Components/Mouse/Clipboard.js":                                       {Src: "Components/Mouse/Clipboard.js", JSHash: "742b2522cd0d5dad897d5c3afa2d568494661912", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"},
 		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "5f060fc046686fc71ec1a6c0742407fc902387c5", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"},
 		"Components/Mouse/_this.js":                                           {Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"},
diff --git a/resolver-go/internal/resolver/resolver.go b/resolver-go/internal/resolver/resolver.go
index 4d6e653..4815ddc 100644
--- a/resolver-go/internal/resolver/resolver.go
+++ b/resolver-go/internal/resolver/resolver.go
@@ -113,52 +113,77 @@ func (r *Resolver) ResolveRequest(code string, mode OutputMode, excludes []strin
 func (r *Resolver) ResolveSymbol(name string) ([]classmap.Symbol, error) {
 	seen := map[string]bool{}
 	var out []classmap.Symbol
+
+	if err := r.resolveImport(name, seen, &out); err != nil {
+		return nil, err
+	}
+
+	return out, nil
+}
+
+func (r *Resolver) resolveImport(name string, seen map[string]bool, out *[]classmap.Symbol) error {
 	if strings.HasSuffix(name, ".*") {
-		prefix := strings.TrimSuffix(name, "*")
-		var keys []string
-		for k, s := range r.Map.Symbols {
-			if strings.HasPrefix(k, prefix) && s.Kind == classmap.KindClass && k != strings.TrimSuffix(prefix, ".") {
-				keys = append(keys, k)
-			}
-		}
-		if len(keys) == 0 {
-			return nil, fmt.Errorf("namespace does not exist or contains no classes: %s", name)
-		}
-		sort.Strings(keys)
-		for _, k := range keys {
-			if err := r.resolveOne(k, seen, &out); err != nil {
-				return nil, err
-			}
+		return r.resolveWildcard(name, seen, out)
+	}
+
+	return r.resolveOne(name, seen, out)
+}
+
+func (r *Resolver) resolveWildcard(name string, seen map[string]bool, out *[]classmap.Symbol) error {
+	prefix := strings.TrimSuffix(name, "*")
+	namespace := strings.TrimSuffix(prefix, ".")
+
+	var keys []string
+	for k, s := range r.Map.Symbols {
+		if strings.HasPrefix(k, prefix) &&
+			s.Kind == classmap.KindClass &&
+			k != namespace {
+			keys = append(keys, k)
 		}
-		return out, nil
 	}
-	if err := r.resolveOne(name, seen, &out); err != nil {
-		return nil, err
+
+	if len(keys) == 0 {
+		return fmt.Errorf("namespace does not exist or contains no classes: %s", name)
 	}
-	return out, nil
+
+	sort.Strings(keys)
+
+	for _, k := range keys {
+		if err := r.resolveOne(k, seen, out); err != nil {
+			return err
+		}
+	}
+
+	return nil
 }
 
 func (r *Resolver) resolveOne(name string, seen map[string]bool, out *[]classmap.Symbol) error {
 	if seen[name] {
 		return nil
 	}
+
 	sym, ok := r.Map.Symbols[name]
 	if !ok {
 		return fmt.Errorf("no such class: %s", name)
 	}
+
 	seen[name] = true
+
 	imports := sym.Imports
+
 	// Old resolver uses parent imports when the found node is prop/method.
 	if sym.Kind != classmap.KindClass && sym.Parent != "" {
 		if p, ok := r.Map.Symbols[sym.Parent]; ok {
 			imports = p.Imports
 		}
 	}
+
 	for _, imp := range imports {
-		if err := r.resolveOne(imp, seen, out); err != nil {
+		if err := r.resolveImport(imp, seen, out); err != nil {
 			return err
 		}
 	}
+
 	*out = append(*out, sym)
 	return nil
 }
@@ -315,7 +340,7 @@ func DecodeRequest(code string) ([]string, error) {
 			sep = ","
 		}
 	}
-	cleaner := regexp.MustCompile(`[^A-Za-z.\*\-_/ ,]`)
+	cleaner := regexp.MustCompile(`[^A-Za-z0-9.\*\-_/ ,]`)
 	decoded = cleaner.ReplaceAllString(decoded, "")
 	var fields []string
 	for _, p := range strings.Split(decoded, sep) {