penguin/AstroJS

Javascript framework for my blog

commit c98fcfb64086ea102217fae225dbefbde8a36eca

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-11T20:52:10Z
subjectMigrate old externs 1/x
commit c98fcfb64086ea102217fae225dbefbde8a36eca
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-11T20:52:10Z

    Migrate old externs 1/x
---
 botanjs/src/Astro/Blog/AstroEdit/Article.js        |  4 +--
 botanjs/src/Astro/Blog/AstroEdit/Draft.js          |  2 +-
 botanjs/src/Astro/Blog/AstroEdit/Flag.js           |  4 +--
 botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js    |  4 +--
 .../SmartInput/CandidateAction/Footnote.js         |  4 +--
 .../src/Astro/Blog/AstroEdit/SmartInput/_this.js   |  4 +--
 botanjs/src/Astro/Blog/AstroEdit/Uploader.js       |  2 +-
 .../AstroEdit/Visualizer/Snippet/AcquireLib.js     |  4 +--
 .../AstroEdit/Visualizer/Snippet/ArticleContent.js |  4 +--
 .../AstroEdit/Visualizer/Snippet/ArticleLink.js    |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Code.js      |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Footnote.js  |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Heading.js   |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Html.js      |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Image.js     |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Link.js      |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Meta.js      |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/RespH.js     |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/SiteFile.js  |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Sound.js     |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Spoiler.js   |  4 +--
 .../Blog/AstroEdit/Visualizer/Snippet/Video.js     |  4 +--
 .../src/Astro/Blog/AstroEdit/Visualizer/_this.js   |  4 +--
 botanjs/src/Astro/Blog/AstroEdit/_this.js          |  2 +-
 botanjs/src/Astro/Blog/Components/Album.js         |  4 +--
 botanjs/src/Astro/Blog/Components/Bubble.js        |  4 +--
 botanjs/src/Astro/Blog/Components/Calendar.js      |  4 +--
 botanjs/src/Astro/Blog/Components/Comment.js       |  4 +--
 botanjs/src/Astro/Blog/Components/Entry/Blog.js    |  2 +-
 botanjs/src/Astro/Blog/Components/Footnote.js      |  6 ++--
 botanjs/src/Astro/Blog/Components/Notification.js  |  4 +--
 botanjs/src/Astro/Blog/Components/SiteFile.js      |  4 +--
 botanjs/src/Astro/Blog/Components/SocialButtons.js |  2 +-
 botanjs/src/Astro/Blog/Components/Spoiler.js       |  4 +--
 .../Blog/Components/ToggleButton/CommentToggle.js  |  4 +--
 .../Blog/Components/ToggleButton/DeleteArticle.js  |  4 +--
 .../Astro/Blog/Components/ToggleButton/_this.js    |  4 +--
 botanjs/src/Astro/Blog/Components/Video.js         |  4 +--
 botanjs/src/Astro/Blog/Layout/Article/Control.js   |  4 +--
 botanjs/src/Astro/Blog/Layout/ErrorPages.js        |  2 +-
 botanjs/src/Astro/Blog/Layout/Login.js             |  2 +-
 botanjs/src/Astro/Blog/Layout/MainFrame.js         |  6 ++--
 botanjs/src/Astro/Blog/Layout/Subs/Manage.js       |  6 ++--
 botanjs/src/Astro/Mechanism/CharacterCloud.js      |  2 +-
 botanjs/src/Astro/Mechanism/Parallax.js            |  2 +-
 botanjs/src/Astro/Penguin/Layout/MainFrame.js      |  4 +--
 botanjs/src/Astro/Starfall/Layout/MainFrame.js     |  2 +-
 botanjs/src/Components/Console.js                  |  4 +--
 botanjs/src/Components/DockPanel.js                |  4 +--
 botanjs/src/Components/MessageBox.js               |  2 +-
 botanjs/src/Components/Mouse/Clipboard.js          |  4 +--
 botanjs/src/Components/Mouse/ContextMenu.js        |  4 +--
 botanjs/src/Components/Vim/Actions/BUFFERS.js      |  2 +-
 botanjs/src/Components/Vim/VimArea.js              |  4 +--
 botanjs/src/Dandelion/CSSAnimations/MovieClip.js   |  4 +--
 botanjs/src/Dandelion/IDOMElement.js               |  6 ++--
 botanjs/src/Dandelion/_this.js                     |  2 +-
 botanjs/src/System/Net/ClassLoader.js              |  2 +-
 botanjs/src/externs/Dandelion.IDOMElement.js       | 26 +++++++-------
 botanjs/src/externs/Dandelion.js                   | 40 +++++++++++-----------
 resolver-go/internal/generated/buildinfo_gen.go    |  2 +-
 61 files changed, 140 insertions(+), 140 deletions(-)

diff --git a/botanjs/src/Astro/Blog/AstroEdit/Article.js b/botanjs/src/Astro/Blog/AstroEdit/Article.js
index 51a3f63..2964101 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Article.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Article.js
@@ -11,11 +11,11 @@
 	var debug                            = __import( "System.Debug" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                       = __import( "Dandelion.IDOMObject" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Blog.Config} */
 	var Config                           = __import( "Astro.Blog.Config" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Draft.js b/botanjs/src/Astro/Blog/AstroEdit/Draft.js
index 31aa5c3..70398a2 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Draft.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Draft.js
@@ -5,7 +5,7 @@
 	var Cycle                        = __import( "System.Cycle" );
 	/** @type {System.utils.IKey} */
 	var IKey                         = __import( "System.utils.IKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                         = __import( "Dandelion" );
 
 	var postData                     = __import( "System.Net.postData" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Flag.js b/botanjs/src/Astro/Blog/AstroEdit/Flag.js
index 3dc1917..1f874ea 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Flag.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Flag.js
@@ -5,9 +5,9 @@
 	var debug                            = __import( "System.Debug" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Blog.Config} */
 	var Config                           = __import( "Astro.Blog.Config" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js b/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
index 9e5d17b..0665df0 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
@@ -17,11 +17,11 @@
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                              = __import( "Dandelion.IDOMObject" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Blog.Config} */
 	var Conf                                    = __import( "Astro.Blog.Config" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js
index 75ff143..91c833e 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 
 	/** @type {Astro.Blog.AstroEdit.SmartInput.ICandidateAction} */
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
index c4be4f5..6dfbe47 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
@@ -1,9 +1,9 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.AstroEdit" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                              = __import( "Dandelion.IDOMObject" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Uploader.js b/botanjs/src/Astro/Blog/AstroEdit/Uploader.js
index face003..c6bdbc4 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Uploader.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Uploader.js
@@ -9,7 +9,7 @@
 	var EventKey                                = __import( "System.utils.EventKey" );
 	/** @type {Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                              = __import( "Dandelion.IDOMObject" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js
index 4ed7e08..982abfe 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js
index c086258..5eb1ce7 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
index 00d79e9..c3c5b54 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
index 92a9a62..9dfdfee 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js
index a9efc0c..a2292af 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js
index e7dc56a..51d37ca 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js
index 35a2ab9..b061f7a 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
index 8e3a5cc..e47a6bf 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js
index 70c0512..bcf924c 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js
index 6b909f8..9e5c7ba 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js
index c912f01..b27d365 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
index 1b75000..19bcb34 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js
index bb9778c..b7de6b7 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
index 471ae76..6121842 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js
index 12f49eb..8508ea1 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js
@@ -6,9 +6,9 @@
 	var IKey                              = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
index 6287fe9..c301e0e 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
@@ -1,9 +1,9 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.AstroEdit" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
 	/** @type {System.Debug} */
 	var debug                                   = __import( "System.Debug" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/_this.js b/botanjs/src/Astro/Blog/AstroEdit/_this.js
index e042b3c..c25cc97 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/_this.js
@@ -5,7 +5,7 @@
 	var utils                                      = __import( "System.utils" );
 	/** @type {System.Cycle} */
 	var Cycle                                      = __import( "System.Cycle" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                       = __import( "Dandelion" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                                  = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/Album.js b/botanjs/src/Astro/Blog/Components/Album.js
index 38d7ba4..d95cb14 100644
--- a/botanjs/src/Astro/Blog/Components/Album.js
+++ b/botanjs/src/Astro/Blog/Components/Album.js
@@ -7,9 +7,9 @@
 	var IKey                             = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/Bubble.js b/botanjs/src/Astro/Blog/Components/Bubble.js
index 342b1da..3ca7de9 100644
--- a/botanjs/src/Astro/Blog/Components/Bubble.js
+++ b/botanjs/src/Astro/Blog/Components/Bubble.js
@@ -5,9 +5,9 @@
 	var Cycle                            = __import( "System.Cycle" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                         = __import( "System.utils.EventKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 
 	var Bubble = function () {
diff --git a/botanjs/src/Astro/Blog/Components/Calendar.js b/botanjs/src/Astro/Blog/Components/Calendar.js
index c832722..8938a7a 100644
--- a/botanjs/src/Astro/Blog/Components/Calendar.js
+++ b/botanjs/src/Astro/Blog/Components/Calendar.js
@@ -5,9 +5,9 @@
 	var Cycle                            = __import( "System.Cycle" );
 	/** @type {System.Debug} */
 	var debug                            = __import( "System.Debug" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.utils.Date} */
 	var XDate                            = __import( "Astro.utils.Date" );
diff --git a/botanjs/src/Astro/Blog/Components/Comment.js b/botanjs/src/Astro/Blog/Components/Comment.js
index 7aee1c2..e446cea 100644
--- a/botanjs/src/Astro/Blog/Components/Comment.js
+++ b/botanjs/src/Astro/Blog/Components/Comment.js
@@ -15,9 +15,9 @@
 	var DataKey                                = __import( "System.utils.DataKey" );
 	/** @type {System.utils.Perf} */
 	var Perf                                   = __import( "System.utils.Perf" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                   = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                            = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                              = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/Entry/Blog.js b/botanjs/src/Astro/Blog/Components/Entry/Blog.js
index d211410..a91f23c 100644
--- a/botanjs/src/Astro/Blog/Components/Entry/Blog.js
+++ b/botanjs/src/Astro/Blog/Components/Entry/Blog.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.Entry.Blog" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/Footnote.js b/botanjs/src/Astro/Blog/Components/Footnote.js
index ab66f56..581b26f 100644
--- a/botanjs/src/Astro/Blog/Components/Footnote.js
+++ b/botanjs/src/Astro/Blog/Components/Footnote.js
@@ -1,8 +1,8 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.Footnote" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
@@ -11,7 +11,7 @@
 	/** @type {Astro.utils.Date} */
 	var XDate                            = __import( "Astro.utils.Date" );
 
-	/** @param {Dandelion.IDOMElement} elem */
+	/** @param {function(...?): Dandelion.IDOMElement} elem */
 	var Footnote = function( elem )
 	{
 		var jumpers = Dand.glass( "ft", true );
diff --git a/botanjs/src/Astro/Blog/Components/Notification.js b/botanjs/src/Astro/Blog/Components/Notification.js
index 2849707..194eba1 100644
--- a/botanjs/src/Astro/Blog/Components/Notification.js
+++ b/botanjs/src/Astro/Blog/Components/Notification.js
@@ -5,7 +5,7 @@
 	var debug                                   = __import( "System.Debug" );
 	/** @type {System.Cycle} */
 	var Cycle                                   = __import( "System.Cycle" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
 	/** @type {System.utils.IKey} */
 	var IKey                                    = __import( "System.utils.IKey" );
@@ -13,7 +13,7 @@
 	var DataKey                                 = __import( "System.utils.DataKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/Components/SiteFile.js b/botanjs/src/Astro/Blog/Components/SiteFile.js
index 12c3c80..e5009ce 100644
--- a/botanjs/src/Astro/Blog/Components/SiteFile.js
+++ b/botanjs/src/Astro/Blog/Components/SiteFile.js
@@ -5,9 +5,9 @@
 	var debug                            = __import( "System.Debug" );
 	/** @type {System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/SocialButtons.js b/botanjs/src/Astro/Blog/Components/SocialButtons.js
index 6939b45..bf8ea4b 100644
--- a/botanjs/src/Astro/Blog/Components/SocialButtons.js
+++ b/botanjs/src/Astro/Blog/Components/SocialButtons.js
@@ -1,6 +1,6 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.SocialButtons" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
 	/** @type {System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
diff --git a/botanjs/src/Astro/Blog/Components/Spoiler.js b/botanjs/src/Astro/Blog/Components/Spoiler.js
index 042551c..d50e775 100644
--- a/botanjs/src/Astro/Blog/Components/Spoiler.js
+++ b/botanjs/src/Astro/Blog/Components/Spoiler.js
@@ -1,8 +1,8 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.Spoiler" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
index 890ba9f..f5580d6 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
@@ -3,9 +3,9 @@
 
 	var ToggleButton = __import( "Astro.Blog.Components.ToggleButton" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js b/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js
index 8ae7e9c..62ec37d 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js
@@ -3,9 +3,9 @@
 
     /** @type {Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
index 5b3b5d8..439bcc8 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
@@ -1,9 +1,9 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/Video.js b/botanjs/src/Astro/Blog/Components/Video.js
index 7d7e208..eae964d 100644
--- a/botanjs/src/Astro/Blog/Components/Video.js
+++ b/botanjs/src/Astro/Blog/Components/Video.js
@@ -3,9 +3,9 @@
 
 	/** @type {System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Layout/Article/Control.js b/botanjs/src/Astro/Blog/Layout/Article/Control.js
index 4a37e5d..14069c1 100644
--- a/botanjs/src/Astro/Blog/Layout/Article/Control.js
+++ b/botanjs/src/Astro/Blog/Layout/Article/Control.js
@@ -1,9 +1,9 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Layout.Article.Control" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
diff --git a/botanjs/src/Astro/Blog/Layout/ErrorPages.js b/botanjs/src/Astro/Blog/Layout/ErrorPages.js
index 2f3bcc9..6d55d3b 100644
--- a/botanjs/src/Astro/Blog/Layout/ErrorPages.js
+++ b/botanjs/src/Astro/Blog/Layout/ErrorPages.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                                         = __import( "System.Cycle" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                                     = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Layout/Login.js b/botanjs/src/Astro/Blog/Layout/Login.js
index caf87b0..5722e2f 100644
--- a/botanjs/src/Astro/Blog/Layout/Login.js
+++ b/botanjs/src/Astro/Blog/Layout/Login.js
@@ -7,7 +7,7 @@
 	var IKey                             = __import( "System.utils.IKey" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Layout/MainFrame.js b/botanjs/src/Astro/Blog/Layout/MainFrame.js
index 1dffd6d..971987a 100644
--- a/botanjs/src/Astro/Blog/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Blog/Layout/MainFrame.js
@@ -11,9 +11,9 @@
 	var DataKey                                       = __import( "System.utils.DataKey" );
 	/** @type {System.utils.Perf} */
 	var Perf                                          = __import( "System.utils.Perf" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                                   = __import( "Dandelion.IDOMElement" );
 	/** @type {Dandelion.Window} */
 	var wsupp                                         = __import( "Dandelion.Window" );
@@ -254,8 +254,6 @@
 
 	var navControl = function ()
 	{
-		// Page control
-		/** @type {Dandelion.IDOMElement} */
 		var page_control = Dand.id( "top_control", true );
 		var bottom_control = Dand.id( "bottom_control" );
 
diff --git a/botanjs/src/Astro/Blog/Layout/Subs/Manage.js b/botanjs/src/Astro/Blog/Layout/Subs/Manage.js
index 613c714..15533f8 100644
--- a/botanjs/src/Astro/Blog/Layout/Subs/Manage.js
+++ b/botanjs/src/Astro/Blog/Layout/Subs/Manage.js
@@ -2,16 +2,16 @@
 	var ns = __namespace( "Astro.Blog.Layout.Subs.Manage" );
 	/** @type {Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                               = __import( "Astro.Bootstrap" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
 
 	var init = function ()
 	{
-		/** @type {Dandelion.IDOMElement} */
+		/** @type {function(...?): Dandelion.IDOMElement} */
 		var banbtn = Dand.id( "action-ban", true );
 
 		if( banbtn )
diff --git a/botanjs/src/Astro/Mechanism/CharacterCloud.js b/botanjs/src/Astro/Mechanism/CharacterCloud.js
index 3d1e4c3..e50be89 100644
--- a/botanjs/src/Astro/Mechanism/CharacterCloud.js
+++ b/botanjs/src/Astro/Mechanism/CharacterCloud.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Astro.Mechanism.CharacterCloud" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand = __import( "Dandelion" );
 
 	var CharacterCloud = {};
diff --git a/botanjs/src/Astro/Mechanism/Parallax.js b/botanjs/src/Astro/Mechanism/Parallax.js
index 8bf8b1e..d7551a1 100644
--- a/botanjs/src/Astro/Mechanism/Parallax.js
+++ b/botanjs/src/Astro/Mechanism/Parallax.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                   = __import( "System.Cycle" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                    = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject              = __import( "Dandelion.IDOMObject" );
diff --git a/botanjs/src/Astro/Penguin/Layout/MainFrame.js b/botanjs/src/Astro/Penguin/Layout/MainFrame.js
index 0f31e46..a3ad200 100644
--- a/botanjs/src/Astro/Penguin/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Penguin/Layout/MainFrame.js
@@ -9,11 +9,11 @@
 	var IKey                                          = __import( "System.utils.IKey" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                                       = __import( "System.utils.DataKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                                    = __import( "Dandelion.IDOMObject" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                                   = __import( "Dandelion.IDOMElement" );
 	/** @type {Dandelion.Window} */
 	var wsupp                                         = __import( "Dandelion.Window" );
diff --git a/botanjs/src/Astro/Starfall/Layout/MainFrame.js b/botanjs/src/Astro/Starfall/Layout/MainFrame.js
index 857ba21..9c331fa 100644
--- a/botanjs/src/Astro/Starfall/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Starfall/Layout/MainFrame.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Astro.Starfall.Layout.MainFrame" );
 
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                                   = __import( "Dandelion.IDOMObject" );
diff --git a/botanjs/src/Components/Console.js b/botanjs/src/Components/Console.js
index 936191d..8900083 100644
--- a/botanjs/src/Components/Console.js
+++ b/botanjs/src/Components/Console.js
@@ -15,9 +15,9 @@
 	var Log                                 = __import( "System.Log" );
 	/** @type {System.Debug} */
 	var debug                               = __import( "System.Debug" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                         = __import( "Dandelion.IDOMElement" );
 	/** @type {Components.DockPanel} */
 	var DockPanel                           = __import( "Components.DockPanel" );
diff --git a/botanjs/src/Components/DockPanel.js b/botanjs/src/Components/DockPanel.js
index ffbf92a..61c0448 100644
--- a/botanjs/src/Components/DockPanel.js
+++ b/botanjs/src/Components/DockPanel.js
@@ -5,9 +5,9 @@
 	var Cycle                            = __import( "System.Cycle" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 
 	var DockPanel = function( w_id, w_title, w_content, align )
diff --git a/botanjs/src/Components/MessageBox.js b/botanjs/src/Components/MessageBox.js
index 9dea0ce..d690063 100644
--- a/botanjs/src/Components/MessageBox.js
+++ b/botanjs/src/Components/MessageBox.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Cycle} */
 	var Trigger                             = __import( "System.Cycle.Trigger" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                                = __import( "Dandelion" );
 	/** @type {Dandelion.IDOMObject} */
 	var IDOMObject                          = __import( "Dandelion.IDOMObject" );
diff --git a/botanjs/src/Components/Mouse/Clipboard.js b/botanjs/src/Components/Mouse/Clipboard.js
index 4a5d6c3..7b8bfe8 100644
--- a/botanjs/src/Components/Mouse/Clipboard.js
+++ b/botanjs/src/Components/Mouse/Clipboard.js
@@ -9,9 +9,9 @@
 	var Perf                             = __import( "System.utils.Perf" );
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
 
 	var stage, cCallback;
diff --git a/botanjs/src/Components/Mouse/ContextMenu.js b/botanjs/src/Components/Mouse/ContextMenu.js
index f22e152..2a70c29 100644
--- a/botanjs/src/Components/Mouse/ContextMenu.js
+++ b/botanjs/src/Components/Mouse/ContextMenu.js
@@ -12,9 +12,9 @@
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Components.Mouse.Clipboard} */
 	var Clipboard 						 = __import( "Components.Mouse.Clipboard" );
diff --git a/botanjs/src/Components/Vim/Actions/BUFFERS.js b/botanjs/src/Components/Vim/Actions/BUFFERS.js
index 19ec446..60edd24 100644
--- a/botanjs/src/Components/Vim/Actions/BUFFERS.js
+++ b/botanjs/src/Components/Vim/Actions/BUFFERS.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Debug} */
 	var debug                             = __import( "System.Debug" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
 
 	var Mesg = __import( "Components.Vim.Message" );
diff --git a/botanjs/src/Components/Vim/VimArea.js b/botanjs/src/Components/Vim/VimArea.js
index 7938213..ed18d3f 100644
--- a/botanjs/src/Components/Vim/VimArea.js
+++ b/botanjs/src/Components/Vim/VimArea.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Components.Vim" );
 
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                               = __import( "Dandelion.IDOMElement" );
 	/** @type {System.utils.DataKey} */
 	var DataKey                                   = __import( "System.utils.DataKey" );
@@ -44,7 +44,7 @@
 		};
 	};
 
-	/* stage @param {Dandelion.IDOMElement} */
+	/* stage @param {function(...?): Dandelion.IDOMElement} */
 	var VimArea = function( stage, detectScreenSize )
 	{
 		if( !stage ) throw new Error( "Invalid argument" );
diff --git a/botanjs/src/Dandelion/CSSAnimations/MovieClip.js b/botanjs/src/Dandelion/CSSAnimations/MovieClip.js
index dccc0de..28330a9 100644
--- a/botanjs/src/Dandelion/CSSAnimations/MovieClip.js
+++ b/botanjs/src/Dandelion/CSSAnimations/MovieClip.js
@@ -5,9 +5,9 @@
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {System.Cycle.Trigger} */
 	var Trigger                          = __import( "System.Cycle.Trigger" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMElement} */
+	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 
 	var MovieClip = function (
diff --git a/botanjs/src/Dandelion/IDOMElement.js b/botanjs/src/Dandelion/IDOMElement.js
index 8e9345f..843cafc 100644
--- a/botanjs/src/Dandelion/IDOMElement.js
+++ b/botanjs/src/Dandelion/IDOMElement.js
@@ -9,8 +9,10 @@
 	var wrap = ns[ NS_INVOKE ]( "wrap" );
 	var IDOMObject = ns[ NS_INVOKE ]( "IDOMObject" );
 
-	// IDOMElement, augmented element wrapper utilizing IKeys
-	var IDOMElement = function ( element, sw )
+	/** @type {function(...?): Dandelion.IDOMElement} */
+	var IDOMElement;
+
+	IDOMElement = function ( element, sw )
 	{
 		if ( element instanceof IDOMElement ) return element;
 
diff --git a/botanjs/src/Dandelion/_this.js b/botanjs/src/Dandelion/_this.js
index 6880870..fd69670 100644
--- a/botanjs/src/Dandelion/_this.js
+++ b/botanjs/src/Dandelion/_this.js
@@ -5,7 +5,7 @@
 	/* @type {System.utils.IKey}*/
 	var IKey = __import( "System.utils.IKey" );
 
-	/* @type {Dandelion.IDOMElement}*/
+	/* @type {function(...?): Dandelion.IDOMElement}*/
 	var IDOMElement;
 
 	var appendR = function( container, elements )
diff --git a/botanjs/src/System/Net/ClassLoader.js b/botanjs/src/System/Net/ClassLoader.js
index 6139a5b..e25de25 100644
--- a/botanjs/src/System/Net/ClassLoader.js
+++ b/botanjs/src/System/Net/ClassLoader.js
@@ -9,7 +9,7 @@
 	var Utf8                         = __import( "System.Encoding.Utf8" );
 	/** @type {System.Encoding.CodePage} */
 	var Base64                       = __import( "System.Encoding.Base64" );
-	/** @type {Dandelion} */
+	/** @type {typeof Dandelion} */
 	var Dand                         = __import( "Dandelion" );
 
 	var Deflate = __import( "System.Compression.Zlib.Deflate" );
diff --git a/botanjs/src/externs/Dandelion.IDOMElement.js b/botanjs/src/externs/Dandelion.IDOMElement.js
index 6e23e35..e92ca34 100644
--- a/botanjs/src/externs/Dandelion.IDOMElement.js
+++ b/botanjs/src/externs/Dandelion.IDOMElement.js
@@ -2,24 +2,24 @@
 Dandelion.IDOMElement = function (){}
 
 /** @type {Function} */
-Dandelion.IDOMElement.getDAttribute;
+Dandelion.IDOMElement.prototype.getDAttribute = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.setAttribute;
+Dandelion.IDOMElement.prototype.setAttribute = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.loot;
+Dandelion.IDOMElement.prototype.loot = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.clear;
+Dandelion.IDOMElement.prototype.clear = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.foreach;
+Dandelion.IDOMElement.prototype.foreach = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.first;
+Dandelion.IDOMElement.prototype.first = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.last;
+Dandelion.IDOMElement.prototype.last = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.contains;
+Dandelion.IDOMElement.prototype.contains = function() {};
 /** @type {Function} */
-Dandelion.IDOMElement.aKeys;
-/** @type {Element} */
-Dandelion.IDOMElement.element;
-/** @type {Element} */
-Dandelion.IDOMElement.reverseChild;
+Dandelion.IDOMElement.prototype.aKeys = function() {};
+/** @type {HTMLElement} */
+Dandelion.IDOMElement.prototype.element;
+/** @type {function(): void} */
+Dandelion.IDOMElement.prototype.reverseChild = function() {};
diff --git a/botanjs/src/externs/Dandelion.js b/botanjs/src/externs/Dandelion.js
index 9ef5764..8af96ab 100644
--- a/botanjs/src/externs/Dandelion.js
+++ b/botanjs/src/externs/Dandelion.js
@@ -1,38 +1,38 @@
 /** @constructor */
-var Dandelion = function (){}
+var Dandelion = function (){};
 
-/** @type {function(...?): HTMLElement} */
-Dandelion.wrap;
+/** @type {function(...?): !HTMLElement} */
+Dandelion.wrap = function() {};
 
-/** @type {function(...?): HTMLElement} */
-Dandelion.wrapc;
+/** @type {function(...?): !HTMLElement} */
+Dandelion.wrapc = function() {};
 
-/** @type {function(...?): HTMLElement} */
-Dandelion.wrape;
+/** @type {function(...?): !HTMLElement} */
+Dandelion.wrape = function() {};
 
-/** @type {function(...?): HTMLElement} */
-Dandelion.wrapne;
+/** @type {function(...?): !HTMLElement} */
+Dandelion.wrapne = function() {};
 
-/** @type {function(...?): HTMLElement} */
-Dandelion.wrapna;
+/** @type {function(...?): !HTMLElement} */
+Dandelion.wrapna = function() {};
 
-/** @type {function(string): HTMLElement} */
-Dandelion.textNode;
+/** @type {function(string): !HTMLElement} */
+Dandelion.textNode = function() {};
 
-/** @type {function(string): HTMLElement} */
-Dandelion.bubbleUp;
+/** @type {function(string): !HTMLElement} */
+Dandelion.bubbleUp = function() {};
 
 /** @type {function(HTMLElement, function(HTMLElement): boolean): void} */
-Dandelion.chainUpApply;
+Dandelion.chainUpApply = function() {};
 
 /** @type {function(string, boolean=): (HTMLElement|Dandelion.IDOMElement)} */
-Dandelion.id;
+Dandelion.id = function() {};
 
 /** @type {Function} */
-Dandelion.tag;
+Dandelion.tag = function() {};
 
 /** @type {Function} */
-Dandelion.name;
+Dandelion.name = function() {};
 
 /** @type {Function} */
-Dandelion.glass;
+Dandelion.glass = function() {};
diff --git a/resolver-go/internal/generated/buildinfo_gen.go b/resolver-go/internal/generated/buildinfo_gen.go
index 5533709..1751d9e 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   = "20260611.192429"
+	Timestamp   = "20260611.193648"
 )