Compare commits

...

3 Commits

Author SHA1 Message Date
af2e0d2eec update to v2.2.1
fix type issues with root object wrapping node or querySelector
fix incorrect import in demo
fix unused options in vite.config.js
add (some) tests - more to come!
2025-09-13 03:05:49 -04:00
c9de0883eb update to v2.2.0
add library version getter
fix demo issues
2025-09-13 01:55:41 -04:00
c10e8cd345 update to v2.1.0
add support for querySeletor
add toHTMLElement
clean up comments
fix bug in README
2025-09-13 01:21:22 -04:00
17 changed files with 900 additions and 227 deletions

View File

@@ -54,14 +54,18 @@ If everything goes as expected, you should have a newly built `fluent-dom-esm.js
## Examples ## Examples
All assume that `$d` is the default function from `fluent-dom-esm` (`import $d from './fluent-dom-esm.js'`); All assume that `$d` is the default function from `fluent-dom-esm`:
```
import $d from "@itsericwoodward/fluent-dom-esm";
```
- For more examples, see the `demo.html` file in the `dist` folder. - For more examples, see the `demo.html` file in the `dist` folder.
### Create a Paragraph ### Create a Paragraph
``` ```
$(document.body).app($d $d(document.body).app($d
.c("p") .c("p")
.s("background-color", "yellow") .s("background-color", "yellow")
.s("color", "black") .s("color", "black")
@@ -99,7 +103,7 @@ const $ul = $d
); );
}); });
$(document.body).app($ul); $d(document.body).app($ul);
``` ```
renders (with added spaces) as renders (with added spaces) as
@@ -114,6 +118,32 @@ renders (with added spaces) as
</body> </body>
``` ```
### Access via QuerySelector
Given the [example list above](#create-a-list):
```
$d('#example-list')
.app($d
.c("li")
.id(`fluentDom-example-list-item4`)
.t("List Item 4")
);
```
renders (with added spaces) as
```
<body>
<ul class="example-list" id="example-list">
<li id="fluentDom-example-list-item1">List Item 1</li>
<li id="fluentDom-example-list-item2">List Item 2</li>
<li id="fluentDom-example-list-item3">List Item 3</li>
<li id="fluentDom-example-list-item4">List Item 4</li>
</ul>
</body>
```
## License ## License
Copyright &copy; 2025 Eric Woodward Copyright &copy; 2025 Eric Woodward
@@ -123,8 +153,7 @@ Based on [original source](https://glacius.tmont.com/articles/fluent-dom-manipul
``` ```
This program is free software. It comes without any warranty, to the This program is free software. It comes without any warranty, to the
extent permitted by applicable law. You can redistribute it and/or extent permitted by applicable law. You can redistribute it and/or
modify it under the terms of the Do What The Fuck You Want To Public modify it under the terms of the following license:
License, Version 2, as published by Sam Hocevar.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004 Version 2, December 2004

72
dist/demo.html vendored
View File

@@ -11,21 +11,27 @@
<script type="module"> <script type="module">
import $d from "/fluent-dom-esm.js"; import $d from "/fluent-dom-esm.js";
// Create new objects in memory with a simple, chainable interface
const $article = $d const $article = $d
.c("article") .create("article")
.id("fde-article") .id("fde-article")
.cls("cool-article") .className("cool-article")
.app($d.c("h1").cls("cool-heading").t("fluent-dom-esm")) .append(
.app(
$d $d
.c("p") .create("h1")
.s("background-color", "#db7c17") .className("cool-heading")
.s("color", "var(--main-dark)") .text(`fluent-dom-esm v${$d.version()}`),
.t("Why is it so cool?"), )
.append(
$d
.create("p")
.style("background-color", "#db7c17")
.style("color", "var(--main-dark)")
.text("Why is it so cool?"),
); );
// Or if you prefer the shorter syntax...
const $ul = $d.c("ul").id("fluentDom-example-list"); const $ul = $d.c("ul").id("fluentDom-example-list");
[ [
"Remarkably simple syntax", "Remarkably simple syntax",
"Surprisingly powerful features", "Surprisingly powerful features",
@@ -35,10 +41,12 @@
$d $d
.c("li") .c("li")
.id(`fluentDom-example-list-item${idx + 1}`) .id(`fluentDom-example-list-item${idx + 1}`)
.s("font-style", "italic")
.t(reason), .t(reason),
); );
}); });
// HTMLElements an also be wrapped and combined with other in-memory objects
$d(document.body).app( $d(document.body).app(
$article $article
.app($ul) .app($ul)
@@ -46,6 +54,14 @@
$d.c("em").t("Try it today!").style("color", "#c43a19"), $d.c("em").t("Try it today!").style("color", "#c43a19"),
), ),
); );
// Or pass in a querySelector value to wrap the first matching element
$d("#fluentDom-example-list").app(
$d
.c("li")
.id("fluentDom-example-list-itemExtra")
.t("More features coming soon"),
);
</script> </script>
<script type="module"> <script type="module">
@@ -56,23 +72,29 @@
.t( .t(
` `
\<script type="module"> \<script type="module">
import $d from "/src/fluent-dom-esm.ts"; import $d from "/fluent-dom-esm.js";
// Create new objects in memory with a simple, chainable interface
const $article = $d const $article = $d
.c("article") .create("article")
.id("fde-article") .id("fde-article")
.cls("cool-article") .className("cool-article")
.app($d.c("h1").cls("cool-heading").t("fluent-dom-esm")) .append(
.app(
$d $d
.c("p") .create("h1")
.s("background-color", "#db7c17") .className("cool-heading")
.s("color", "var(--main-dark)") .text("fluent-dom-esm"),
.t("Why is it so cool?"), )
.append(
$d
.create("p")
.style("background-color", "#db7c17")
.style("color", "var(--main-dark)")
.text("Why is it so cool?"),
); );
// Or if you prefer the shorter syntax
const $ul = $d.c("ul").id("fluentDom-example-list"); const $ul = $d.c("ul").id("fluentDom-example-list");
[ [
"Remarkably simple syntax", "Remarkably simple syntax",
"Surprisingly powerful features", "Surprisingly powerful features",
@@ -82,10 +104,12 @@
$d $d
.c("li") .c("li")
.id(\`fluentDom-example-list-item$\{idx + 1}\`) .id(\`fluentDom-example-list-item$\{idx + 1}\`)
.s("font-style", "italic")
.t(reason), .t(reason),
); );
}); });
// HTMLElements can also be wrapped and combined with other in-memory objects
$d(document.body).app( $d(document.body).app(
$article $article
.app($ul) .app($ul)
@@ -94,6 +118,14 @@
), ),
); );
// Or pass in a querySelector value to wrap the first matching element
$d("#fluentDom-example-list").app(
$d
.c("li")
.id("fluentDom-example-list-itemExtra")
.t("More features coming soon"),
);
<\/script> <\/script>
` `
.trim() .trim()
@@ -117,7 +149,7 @@
(val) => `<span class="code-str">${val}</span>`, (val) => `<span class="code-str">${val}</span>`,
) )
.replace(/\.\w+/g, (val) => .replace(/\.\w+/g, (val) =>
val !== ".ts" val !== ".js"
? `<span class="code-func">${val}</span>` ? `<span class="code-func">${val}</span>`
: val, : val,
) )

View File

@@ -4,31 +4,38 @@ const isHTMLElement = (value) => !!value.nodeType;
const isNumber = (value) => typeof value === "number"; const isNumber = (value) => typeof value === "number";
const isString = (value) => typeof value === "string"; const isString = (value) => typeof value === "string";
/** /**
* fluent-dom-esm v2.0.0 * fluent-dom-esm v2.2.1
* *
* Fluent DOM Manipulation, adapted to ESM and cranked up to v2.0(.0). * Fluent DOM Manipulation, adapted to ESM and cranked up to v2.2(.1).
* *
* https://git.itsericwoodward.com/eric/fluent-dom-esm * https://git.itsericwoodward.com/eric/fluent-dom-esm
* *
* v2.0.0 Copyright (c) 2025 Eric Woodward * v2.2.1 Copyright (c) 2025 Eric Woodward
* Original copyright (c) 2009 Tommy Montgomery (https://glacius.tmont.com/articles/fluent-dom-manipulation-in-javascript) * Original copyright (c) 2009 Tommy Montgomery (https://glacius.tmont.com/articles/fluent-dom-manipulation-in-javascript)
* *
* Released under the WTFPL (Do What the Fuck You Want to Public License) * Released under the WTFPL (Do What the Fuck You Want to Public License)
* *
* @author Eric Woodward (v2.0.0 update) * @author Eric Woodward (v2 update)
* @author Tommy Montgomery (original) * @author Tommy Montgomery (original)
* @license http://sam.zoy.org/wtfpl/ * @license http://sam.zoy.org/wtfpl/
*/ */
const APP_VERSION = "2.0.0"; const APP_VERSION = "2.2.1";
const fluentDomEsm = (function() { const fluentDomEsm = (function() {
const FluentDom = function(node) { const FluentDom = function(nodeOrQuerySelector) {
return new FluentDomInternal(node); if (typeof nodeOrQuerySelector !== "string")
return new FluentDomInternal(nodeOrQuerySelector);
const f = new FluentDomInternal();
f.querySelector(nodeOrQuerySelector);
return f;
}; };
FluentDom.create = FluentDom.c = function(tagName) { FluentDom.c = FluentDom.create = function(tagName) {
const f = new FluentDomInternal(); const f = new FluentDomInternal();
f.create(tagName); f.create(tagName);
return f; return f;
}; };
FluentDom.v = FluentDom.version = function() {
return APP_VERSION;
};
const FluentDomInternal = function(node) { const FluentDomInternal = function(node) {
let root = node || null; let root = node || null;
this.fluentDom = APP_VERSION; this.fluentDom = APP_VERSION;
@@ -97,6 +104,10 @@ const fluentDomEsm = (function() {
root.addEventListener(...props); root.addEventListener(...props);
return this; return this;
}; };
this.q = this.querySelector = function(selector) {
root = document.querySelector(selector);
return this;
};
function styleFunction(prop, value) { function styleFunction(prop, value) {
if (!root) { if (!root) {
throw new Error("Cannot get or set style for a non-element"); throw new Error("Cannot get or set style for a non-element");
@@ -118,21 +129,17 @@ const fluentDomEsm = (function() {
this.s = this.style = styleFunction; this.s = this.style = styleFunction;
this.t = this.text = function(text) { this.t = this.text = function(text) {
if (!root) { if (!root) {
throw new Error( throw new Error("Cannot set innerText for a non-element");
"Cannot get or set innerText for a non-element"
);
} }
return this.append(text); return this.append(text);
}; };
this.title = function(title) { this.title = function(title) {
if (!root) { if (!root) {
throw new Error( throw new Error("Cannot get or set title for a non-element");
"Cannot get or set outerHTML for a non-element"
);
} }
return this.attr("title", title); return this.attr("title", title);
}; };
this.toDom = function() { this.toDom = this.toHTMLElement = function() {
return root; return root;
}; };
this.unlisten = function(...props) { this.unlisten = function(...props) {
@@ -142,6 +149,9 @@ const fluentDomEsm = (function() {
root.removeEventListener(...props); root.removeEventListener(...props);
return this; return this;
}; };
this.v = this.version = function() {
return APP_VERSION;
};
}; };
return FluentDom; return FluentDom;
})(); })();

View File

@@ -1,26 +1,32 @@
export interface FluentDomObject { export interface FluentDomObject {
(nodeOrQuerySelector: string | HTMLElement): FluentDomObject;
fluentDom: string; fluentDom: string;
a: (name: string, value: string) => FluentDomObject; a: (name: string, value: string) => FluentDomObject;
app: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject; app: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject;
append: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject; append: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject;
attr: (name: string, value: string) => FluentDomObject; attr: (name: string, value: string) => FluentDomObject;
c: (tagName: string) => FluentDomObject; c: (tagName: string) => FluentDomObject;
create: (tagName: string) => FluentDomObject;
className: (className: string) => FluentDomObject; className: (className: string) => FluentDomObject;
clear: () => FluentDomObject; clear: () => FluentDomObject;
cls: (className: string) => FluentDomObject;
clr: () => FluentDomObject; clr: () => FluentDomObject;
cls: (className: string) => FluentDomObject;
create: (tagName: string) => FluentDomObject;
h: (url: string) => FluentDomObject; h: (url: string) => FluentDomObject;
href: (url: string) => FluentDomObject; href: (url: string) => FluentDomObject;
html: (content: string) => FluentDomObject; html: (content: string) => FluentDomObject;
id: (id: string) => FluentDomObject; id: (id: string) => FluentDomObject;
l: (type: keyof HTMLElementEventMap, listener: () => {}, optionsOrUseCapture?: boolean | object) => FluentDomObject; l: (type: keyof HTMLElementEventMap, listener: () => {}, optionsOrUseCapture?: boolean | object) => FluentDomObject;
listen: (type: keyof HTMLElementEventMap, listener: () => {}, optionsOrUseCapture?: boolean | object) => FluentDomObject; listen: (type: keyof HTMLElementEventMap, listener: () => {}, optionsOrUseCapture?: boolean | object) => FluentDomObject;
q: (selector: string) => FluentDomObject;
querySelector: (selector: string) => FluentDomObject;
s: ((prop: CSSStyleDeclaration) => FluentDomObject) | ((prop: string, value: string) => FluentDomObject); s: ((prop: CSSStyleDeclaration) => FluentDomObject) | ((prop: string, value: string) => FluentDomObject);
style: ((prop: CSSStyleDeclaration) => FluentDomObject) | ((prop: string, value: string) => FluentDomObject); style: ((prop: CSSStyleDeclaration) => FluentDomObject) | ((prop: string, value: string) => FluentDomObject);
t: (text: string) => FluentDomObject; t: (text: string) => FluentDomObject;
text: (text: string) => FluentDomObject; text: (text: string) => FluentDomObject;
title: (title: string) => FluentDomObject; title: (title: string) => FluentDomObject;
toDom: () => HTMLElement | null; toDom: () => HTMLElement | null;
toHTMLElement: () => HTMLElement | null;
unlisten: (type: keyof HTMLElementEventMap, listener: () => {}, optionsOrUseCapture?: boolean | object) => FluentDomObject; unlisten: (type: keyof HTMLElementEventMap, listener: () => {}, optionsOrUseCapture?: boolean | object) => FluentDomObject;
v: () => string;
version: () => string;
} }

View File

@@ -47,6 +47,10 @@ figure {
color: #347c7a; color: #347c7a;
} }
.code-cmnt {
color: #ccc;
}
.code-dom { .code-dom {
color: var(--main-light); color: var(--main-light);
} }

View File

@@ -11,21 +11,27 @@
<script type="module"> <script type="module">
import $d from "/src/fluent-dom-esm.ts"; import $d from "/src/fluent-dom-esm.ts";
// Create new objects in memory with a simple, chainable interface
const $article = $d const $article = $d
.c("article") .create("article")
.id("fde-article") .id("fde-article")
.cls("cool-article") .className("cool-article")
.app($d.c("h1").cls("cool-heading").t("fluent-dom-esm")) .append(
.app(
$d $d
.c("p") .create("h1")
.s("background-color", "#db7c17") .className("cool-heading")
.s("color", "var(--main-dark)") .text(`fluent-dom-esm v${$d.version()}`),
.t("Why is it so cool?"), )
.append(
$d
.create("p")
.style("background-color", "#db7c17")
.style("color", "var(--main-dark)")
.text("Why is it so cool?"),
); );
// Or if you prefer the shorter syntax...
const $ul = $d.c("ul").id("fluentDom-example-list"); const $ul = $d.c("ul").id("fluentDom-example-list");
[ [
"Remarkably simple syntax", "Remarkably simple syntax",
"Surprisingly powerful features", "Surprisingly powerful features",
@@ -35,10 +41,12 @@
$d $d
.c("li") .c("li")
.id(`fluentDom-example-list-item${idx + 1}`) .id(`fluentDom-example-list-item${idx + 1}`)
.s("font-style", "italic")
.t(reason), .t(reason),
); );
}); });
// HTMLElements an also be wrapped and combined with other in-memory objects
$d(document.body).app( $d(document.body).app(
$article $article
.app($ul) .app($ul)
@@ -46,6 +54,14 @@
$d.c("em").t("Try it today!").style("color", "#c43a19"), $d.c("em").t("Try it today!").style("color", "#c43a19"),
), ),
); );
// Or pass in a querySelector value to wrap the first matching element
$d("#fluentDom-example-list").app(
$d
.c("li")
.id("fluentDom-example-list-itemExtra")
.t("More features coming soon"),
);
</script> </script>
<script type="module"> <script type="module">
@@ -56,23 +72,29 @@
.t( .t(
` `
\<script type="module"> \<script type="module">
import $d from "/src/fluent-dom-esm.ts"; import $d from "/fluent-dom-esm.js";
// Create new objects in memory with a simple, chainable interface
const $article = $d const $article = $d
.c("article") .create("article")
.id("fde-article") .id("fde-article")
.cls("cool-article") .className("cool-article")
.app($d.c("h1").cls("cool-heading").t("fluent-dom-esm")) .append(
.app(
$d $d
.c("p") .create("h1")
.s("background-color", "#db7c17") .className("cool-heading")
.s("color", "var(--main-dark)") .text("fluent-dom-esm"),
.t("Why is it so cool?"), )
.append(
$d
.create("p")
.style("background-color", "#db7c17")
.style("color", "var(--main-dark)")
.text("Why is it so cool?"),
); );
// Or if you prefer the shorter syntax
const $ul = $d.c("ul").id("fluentDom-example-list"); const $ul = $d.c("ul").id("fluentDom-example-list");
[ [
"Remarkably simple syntax", "Remarkably simple syntax",
"Surprisingly powerful features", "Surprisingly powerful features",
@@ -82,10 +104,12 @@
$d $d
.c("li") .c("li")
.id(\`fluentDom-example-list-item$\{idx + 1}\`) .id(\`fluentDom-example-list-item$\{idx + 1}\`)
.s("font-style", "italic")
.t(reason), .t(reason),
); );
}); });
// HTMLElements can also be wrapped and combined with other in-memory objects
$d(document.body).app( $d(document.body).app(
$article $article
.app($ul) .app($ul)
@@ -94,6 +118,14 @@
), ),
); );
// Or pass in a querySelector value to wrap the first matching element
$d("#fluentDom-example-list").app(
$d
.c("li")
.id("fluentDom-example-list-itemExtra")
.t("More features coming soon"),
);
<\/script> <\/script>
` `
.trim() .trim()
@@ -112,12 +144,16 @@
? `<span class="code-str">${val}</span>` ? `<span class="code-str">${val}</span>`
: val, : val,
) )
.replace(
/\/\/.*/g,
(val) => `<span class="code-cmnt">${val}</span>`,
)
.replace( .replace(
/\`[^`]+\`/g, /\`[^`]+\`/g,
(val) => `<span class="code-str">${val}</span>`, (val) => `<span class="code-str">${val}</span>`,
) )
.replace(/\.\w+/g, (val) => .replace(/\.\w+/g, (val) =>
val !== ".ts" val !== ".js"
? `<span class="code-func">${val}</span>` ? `<span class="code-func">${val}</span>`
: val, : val,
) )

View File

@@ -1,5 +1,5 @@
{ {
"name": "@itsericwoodward/fluent-dom-esm", "name": "@itsericwoodward/fluent-dom-esm",
"version": "2.0.0", "version": "2.2.1",
"exports": "./src/fluent-dom-esm.ts" "exports": "./src/fluent-dom-esm.ts"
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "fluent-dom-esm", "name": "fluent-dom-esm",
"version": "2.0.0", "version": "2.2.1",
"description": "", "description": "",
"license": "WTFPL", "license": "WTFPL",
"exports": { "exports": {
@@ -21,13 +21,16 @@
"preview": "vite preview", "preview": "vite preview",
"prepublishOnly": "yarn build", "prepublishOnly": "yarn build",
"postpublish": "git push && git push --tags", "postpublish": "git push && git push --tags",
"test": "echo 'No tests yet!'" "test": "vitest"
}, },
"devDependencies": { "devDependencies": {
"@testing-library/jest-dom": "^6.8.0",
"happy-dom": "^18.0.1",
"prettier": "^3.6.2", "prettier": "^3.6.2",
"typescript": "^5.9.2", "typescript": "^5.9.2",
"unplugin-dts": "1.0.0-beta.6", "unplugin-dts": "1.0.0-beta.6",
"vite": "^7.1.4" "vite": "^7.1.5",
"vitest": "^3.2.4"
}, },
"packageManager": "yarn@4.9.4" "packageManager": "yarn@4.9.4"
} }

View File

@@ -11,21 +11,27 @@
<script type="module"> <script type="module">
import $d from "/fluent-dom-esm.js"; import $d from "/fluent-dom-esm.js";
// Create new objects in memory with a simple, chainable interface
const $article = $d const $article = $d
.c("article") .create("article")
.id("fde-article") .id("fde-article")
.cls("cool-article") .className("cool-article")
.app($d.c("h1").cls("cool-heading").t("fluent-dom-esm")) .append(
.app(
$d $d
.c("p") .create("h1")
.s("background-color", "#db7c17") .className("cool-heading")
.s("color", "var(--main-dark)") .text(`fluent-dom-esm v${$d.version()}`),
.t("Why is it so cool?"), )
.append(
$d
.create("p")
.style("background-color", "#db7c17")
.style("color", "var(--main-dark)")
.text("Why is it so cool?"),
); );
// Or if you prefer the shorter syntax...
const $ul = $d.c("ul").id("fluentDom-example-list"); const $ul = $d.c("ul").id("fluentDom-example-list");
[ [
"Remarkably simple syntax", "Remarkably simple syntax",
"Surprisingly powerful features", "Surprisingly powerful features",
@@ -35,10 +41,12 @@
$d $d
.c("li") .c("li")
.id(`fluentDom-example-list-item${idx + 1}`) .id(`fluentDom-example-list-item${idx + 1}`)
.s("font-style", "italic")
.t(reason), .t(reason),
); );
}); });
// HTMLElements an also be wrapped and combined with other in-memory objects
$d(document.body).app( $d(document.body).app(
$article $article
.app($ul) .app($ul)
@@ -46,6 +54,14 @@
$d.c("em").t("Try it today!").style("color", "#c43a19"), $d.c("em").t("Try it today!").style("color", "#c43a19"),
), ),
); );
// Or pass in a querySelector value to wrap the first matching element
$d("#fluentDom-example-list").app(
$d
.c("li")
.id("fluentDom-example-list-itemExtra")
.t("More features coming soon"),
);
</script> </script>
<script type="module"> <script type="module">
@@ -56,23 +72,29 @@
.t( .t(
` `
\<script type="module"> \<script type="module">
import $d from "/src/fluent-dom-esm.ts"; import $d from "/fluent-dom-esm.js";
// Create new objects in memory with a simple, chainable interface
const $article = $d const $article = $d
.c("article") .create("article")
.id("fde-article") .id("fde-article")
.cls("cool-article") .className("cool-article")
.app($d.c("h1").cls("cool-heading").t("fluent-dom-esm")) .append(
.app(
$d $d
.c("p") .create("h1")
.s("background-color", "#db7c17") .className("cool-heading")
.s("color", "var(--main-dark)") .text("fluent-dom-esm"),
.t("Why is it so cool?"), )
.append(
$d
.create("p")
.style("background-color", "#db7c17")
.style("color", "var(--main-dark)")
.text("Why is it so cool?"),
); );
// Or if you prefer the shorter syntax
const $ul = $d.c("ul").id("fluentDom-example-list"); const $ul = $d.c("ul").id("fluentDom-example-list");
[ [
"Remarkably simple syntax", "Remarkably simple syntax",
"Surprisingly powerful features", "Surprisingly powerful features",
@@ -82,10 +104,12 @@
$d $d
.c("li") .c("li")
.id(\`fluentDom-example-list-item$\{idx + 1}\`) .id(\`fluentDom-example-list-item$\{idx + 1}\`)
.s("font-style", "italic")
.t(reason), .t(reason),
); );
}); });
// HTMLElements can also be wrapped and combined with other in-memory objects
$d(document.body).app( $d(document.body).app(
$article $article
.app($ul) .app($ul)
@@ -94,6 +118,14 @@
), ),
); );
// Or pass in a querySelector value to wrap the first matching element
$d("#fluentDom-example-list").app(
$d
.c("li")
.id("fluentDom-example-list-itemExtra")
.t("More features coming soon"),
);
<\/script> <\/script>
` `
.trim() .trim()
@@ -117,7 +149,7 @@
(val) => `<span class="code-str">${val}</span>`, (val) => `<span class="code-str">${val}</span>`,
) )
.replace(/\.\w+/g, (val) => .replace(/\.\w+/g, (val) =>
val !== ".ts" val !== ".js"
? `<span class="code-func">${val}</span>` ? `<span class="code-func">${val}</span>`
: val, : val,
) )

View File

@@ -47,6 +47,10 @@ figure {
color: #347c7a; color: #347c7a;
} }
.code-cmnt {
color: #ccc;
}
.code-dom { .code-dom {
color: var(--main-light); color: var(--main-light);
} }

1
setupTests.ts Normal file
View File

@@ -0,0 +1 @@
import "@testing-library/jest-dom/vitest";

View File

@@ -0,0 +1,32 @@
// @vitest-environment happy-dom
import { describe, expect, it } from "vitest";
import $d from "../fluent-dom-esm";
describe("fluent-dom-esm tests", () => {
it("should allow for wrapping an existing node", () => {
const $body = $d(document.body);
$d(document.body).app($d.c("div").cls("test-class").t("text content"));
expect($body.toDom()?.innerHTML).toEqual(
'<div class="test-class">text content</div>',
);
expect(document.body?.innerHTML).toEqual(
'<div class="test-class">text content</div>',
);
});
it("should allow for wrapping an existing node via a querySelector for an ID", () => {
$d(document.body)
.app($d.c("div").id("item1").t("Item 1"))
.app($d.c("div").id("item2").t("Item 2"))
.app($d.c("div").id("item3").cls("item-num3").t("Item 3"));
expect($d("#item2").toDom()).toHaveTextContent("Item 2");
expect($d("#item3").toDom()).toHaveClass("item-num3");
});
it("should append text provided via `.text()`", () => {
const testVal = "testing 123";
expect($d.c("div").t(testVal).toDom()).toHaveTextContent(testVal);
});
});

View File

@@ -1,16 +1,16 @@
/** /**
* fluent-dom-esm v2.0.0 * fluent-dom-esm v2.2.1
* *
* Fluent DOM Manipulation, adapted to ESM and cranked up to v2.0(.0). * Fluent DOM Manipulation, adapted to ESM and cranked up to v2.2(.1).
* *
* https://git.itsericwoodward.com/eric/fluent-dom-esm * https://git.itsericwoodward.com/eric/fluent-dom-esm
* *
* v2.0.0 Copyright (c) 2025 Eric Woodward * v2.2.1 Copyright (c) 2025 Eric Woodward
* Original copyright (c) 2009 Tommy Montgomery (https://glacius.tmont.com/articles/fluent-dom-manipulation-in-javascript) * Original copyright (c) 2009 Tommy Montgomery (https://glacius.tmont.com/articles/fluent-dom-manipulation-in-javascript)
* *
* Released under the WTFPL (Do What the Fuck You Want to Public License) * Released under the WTFPL (Do What the Fuck You Want to Public License)
* *
* @author Eric Woodward (v2.0.0 update) * @author Eric Woodward (v2 update)
* @author Tommy Montgomery (original) * @author Tommy Montgomery (original)
* @license http://sam.zoy.org/wtfpl/ * @license http://sam.zoy.org/wtfpl/
*/ */
@@ -24,7 +24,7 @@ import {
isString, isString,
} from "./fluent-dom-esm.type-guards"; } from "./fluent-dom-esm.type-guards";
const APP_VERSION = "2.0.0"; const APP_VERSION = "2.2.1";
/** /**
* IIFE that creates the FluentDomObject as default export * IIFE that creates the FluentDomObject as default export
@@ -33,19 +33,31 @@ export default (function () {
/** /**
* Wraps provided element in a FluentDomObject which is then returned * Wraps provided element in a FluentDomObject which is then returned
*/ */
const FluentDom = function (node: HTMLElement) { const FluentDom = function (nodeOrQuerySelector: string | HTMLElement) {
return new (FluentDomInternal as any)(node); if (typeof nodeOrQuerySelector !== "string")
return new (FluentDomInternal as any)(nodeOrQuerySelector);
const f = new (FluentDomInternal as any)();
f.querySelector(nodeOrQuerySelector);
return f;
}; };
/** /**
* Creates a new HTML element which is wrapped in a FluentDomObject and returned * Creates a new HTML element which is wrapped in a FluentDomObject and returned
*/ */
FluentDom.create = FluentDom.c = function (tagName: string) { FluentDom.c = FluentDom.create = function (tagName: string) {
const f = new (FluentDomInternal as any)(); const f = new (FluentDomInternal as any)();
f.create(tagName); f.create(tagName);
return f; return f;
}; };
/**
* Returns library version
*/
FluentDom.v = FluentDom.version = function () {
return APP_VERSION;
};
/** /**
* The internal representation of the FluentDomObject * The internal representation of the FluentDomObject
*/ */
@@ -168,8 +180,13 @@ export default (function () {
return this; return this;
}; };
this.q = this.querySelector = function (selector: string) {
root = document.querySelector(selector);
return this;
};
/** /**
* Gets or sets a one or more style attributes on the wrapped HTMLElement * Sets one or more style attributes on the wrapped HTMLElement
*/ */
function styleFunction( function styleFunction(
this: FluentDomObject, this: FluentDomObject,
@@ -211,35 +228,31 @@ export default (function () {
this.s = this.style = styleFunction; this.s = this.style = styleFunction;
/** /**
* Gets or sets the wrapped HTMLElement's "innerText" property * Sets the wrapped HTMLElement's "innerText" property via `this.append`
*/ */
this.t = this.text = function (text) { this.t = this.text = function (text) {
if (!root) { if (!root) {
throw new Error( throw new Error("Cannot set innerText for a non-element");
"Cannot get or set innerText for a non-element",
);
} }
return this.append(text); return this.append(text);
}; };
/** /**
* Gets or sets the "title" attribute on the wrapped HTMLElement * Sets the "title" attribute on the wrapped HTMLElement
*/ */
this.title = function (title) { this.title = function (title) {
if (!root) { if (!root) {
throw new Error( throw new Error("Cannot get or set title for a non-element");
"Cannot get or set outerHTML for a non-element",
);
} }
return this.attr("title", title); return this.attr("title", title);
}; };
/** /**
* Gets the wrapped HTMLElement itself * Gets the wrapped HTMLElement
*/ */
this.toDom = function () { this.toDom = this.toHTMLElement = function () {
return root; return root;
}; };
@@ -254,6 +267,13 @@ export default (function () {
root.removeEventListener(...props); root.removeEventListener(...props);
return this; return this;
}; };
/**
* Returns library version
*/
this.v = this.version = function () {
return APP_VERSION;
};
}; };
return FluentDom; return FluentDom;

View File

@@ -1,20 +1,25 @@
export interface FluentDomObject { export interface FluentDomObject {
(nodeOrQuerySelector: string | HTMLElement): FluentDomObject;
fluentDom: string; fluentDom: string;
a: (name: string, value: string) => FluentDomObject; a: (name: string, value: string) => FluentDomObject;
app: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject; app: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject;
append: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject; append: (obj: FluentDomObject | HTMLElement | string) => FluentDomObject;
attr: (name: string, value: string) => FluentDomObject; attr: (name: string, value: string) => FluentDomObject;
c: (tagName: string) => FluentDomObject; c: (tagName: string) => FluentDomObject;
create: (tagName: string) => FluentDomObject;
className: (className: string) => FluentDomObject; className: (className: string) => FluentDomObject;
clear: () => FluentDomObject; clear: () => FluentDomObject;
cls: (className: string) => FluentDomObject;
clr: () => FluentDomObject; clr: () => FluentDomObject;
cls: (className: string) => FluentDomObject;
create: (tagName: string) => FluentDomObject;
h: (url: string) => FluentDomObject; h: (url: string) => FluentDomObject;
href: (url: string) => FluentDomObject; href: (url: string) => FluentDomObject;
html: (content: string) => FluentDomObject; html: (content: string) => FluentDomObject;
id: (id: string) => FluentDomObject; id: (id: string) => FluentDomObject;
l: ( l: (
type: keyof HTMLElementEventMap, type: keyof HTMLElementEventMap,
listener: () => {}, listener: () => {},
@@ -25,6 +30,10 @@ export interface FluentDomObject {
listener: () => {}, listener: () => {},
optionsOrUseCapture?: boolean | object, optionsOrUseCapture?: boolean | object,
) => FluentDomObject; ) => FluentDomObject;
q: (selector: string) => FluentDomObject;
querySelector: (selector: string) => FluentDomObject;
s: s:
| ((prop: CSSStyleDeclaration) => FluentDomObject) | ((prop: CSSStyleDeclaration) => FluentDomObject)
| ((prop: string, value: string) => FluentDomObject); | ((prop: string, value: string) => FluentDomObject);
@@ -36,9 +45,14 @@ export interface FluentDomObject {
text: (text: string) => FluentDomObject; text: (text: string) => FluentDomObject;
title: (title: string) => FluentDomObject; title: (title: string) => FluentDomObject;
toDom: () => HTMLElement | null; toDom: () => HTMLElement | null;
toHTMLElement: () => HTMLElement | null;
unlisten: ( unlisten: (
type: keyof HTMLElementEventMap, type: keyof HTMLElementEventMap,
listener: () => {}, listener: () => {},
optionsOrUseCapture?: boolean | object, optionsOrUseCapture?: boolean | object,
) => FluentDomObject; ) => FluentDomObject;
v: () => string;
version: () => string;
} }

View File

@@ -6,7 +6,7 @@ import { defineConfig } from 'vite';
const __dirname = dirname(fileURLToPath(import.meta.url)); const __dirname = dirname(fileURLToPath(import.meta.url));
export default defineConfig({ export default defineConfig({
plugins: [dts()], plugins: [dts({exclude: ["./setupTests.ts", "**/*.test.ts"]})],
build: { build: {
lib: { lib: {
entry: resolve(__dirname, 'src/fluent-dom-esm.ts'), entry: resolve(__dirname, 'src/fluent-dom-esm.ts'),
@@ -14,14 +14,6 @@ export default defineConfig({
fileName: 'fluent-dom-esm', fileName: 'fluent-dom-esm',
formats: ['es'] formats: ['es']
}, },
minify: false, minify: false
rollupOptions: {
output: {
banner: '/* my-library version banner */',
footer: '/* follow me on Twitter! @rich_harris footer */',
intro: '/* my-library version intro*/',
outro: '/* follow me on Twitter! @rich_harris outro */',
}
}
} }
}); });

7
vitest.config.js Normal file
View File

@@ -0,0 +1,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
test: {
setupFiles: ["./setupTests.ts"],
},
})

671
yarn.lock
View File

@@ -5,6 +5,13 @@ __metadata:
version: 8 version: 8
cacheKey: 10c0 cacheKey: 10c0
"@adobe/css-tools@npm:^4.4.0":
version: 4.4.4
resolution: "@adobe/css-tools@npm:4.4.4"
checksum: 10c0/8f3e6cfaa5e6286e6f05de01d91d060425be2ebaef490881f5fe6da8bbdb336835c5d373ea337b0c3b0a1af4be048ba18780f0f6021d30809b4545922a7e13d9
languageName: node
linkType: hard
"@esbuild/aix-ppc64@npm:0.25.9": "@esbuild/aix-ppc64@npm:0.25.9":
version: 0.25.9 version: 0.25.9
resolution: "@esbuild/aix-ppc64@npm:0.25.9" resolution: "@esbuild/aix-ppc64@npm:0.25.9"
@@ -245,12 +252,12 @@ __metadata:
linkType: hard linkType: hard
"@jridgewell/trace-mapping@npm:^0.3.24": "@jridgewell/trace-mapping@npm:^0.3.24":
version: 0.3.30 version: 0.3.31
resolution: "@jridgewell/trace-mapping@npm:0.3.30" resolution: "@jridgewell/trace-mapping@npm:0.3.31"
dependencies: dependencies:
"@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/resolve-uri": "npm:^3.1.0"
"@jridgewell/sourcemap-codec": "npm:^1.4.14" "@jridgewell/sourcemap-codec": "npm:^1.4.14"
checksum: 10c0/3a1516c10f44613b9ba27c37a02ff8f410893776b2b3dad20a391b51b884dd60f97bbb56936d65d2ff8fe978510a0000266654ab8426bdb9ceb5fb4585b19e23 checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9
languageName: node languageName: node
linkType: hard linkType: hard
@@ -299,153 +306,183 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-android-arm-eabi@npm:4.50.0": "@rollup/rollup-android-arm-eabi@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-android-arm-eabi@npm:4.50.0" resolution: "@rollup/rollup-android-arm-eabi@npm:4.50.1"
conditions: os=android & cpu=arm conditions: os=android & cpu=arm
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-android-arm64@npm:4.50.0": "@rollup/rollup-android-arm64@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-android-arm64@npm:4.50.0" resolution: "@rollup/rollup-android-arm64@npm:4.50.1"
conditions: os=android & cpu=arm64 conditions: os=android & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-darwin-arm64@npm:4.50.0": "@rollup/rollup-darwin-arm64@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-darwin-arm64@npm:4.50.0" resolution: "@rollup/rollup-darwin-arm64@npm:4.50.1"
conditions: os=darwin & cpu=arm64 conditions: os=darwin & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-darwin-x64@npm:4.50.0": "@rollup/rollup-darwin-x64@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-darwin-x64@npm:4.50.0" resolution: "@rollup/rollup-darwin-x64@npm:4.50.1"
conditions: os=darwin & cpu=x64 conditions: os=darwin & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-freebsd-arm64@npm:4.50.0": "@rollup/rollup-freebsd-arm64@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-freebsd-arm64@npm:4.50.0" resolution: "@rollup/rollup-freebsd-arm64@npm:4.50.1"
conditions: os=freebsd & cpu=arm64 conditions: os=freebsd & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-freebsd-x64@npm:4.50.0": "@rollup/rollup-freebsd-x64@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-freebsd-x64@npm:4.50.0" resolution: "@rollup/rollup-freebsd-x64@npm:4.50.1"
conditions: os=freebsd & cpu=x64 conditions: os=freebsd & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-arm-gnueabihf@npm:4.50.0": "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.0" resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1"
conditions: os=linux & cpu=arm & libc=glibc conditions: os=linux & cpu=arm & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-arm-musleabihf@npm:4.50.0": "@rollup/rollup-linux-arm-musleabihf@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.50.0" resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.50.1"
conditions: os=linux & cpu=arm & libc=musl conditions: os=linux & cpu=arm & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-arm64-gnu@npm:4.50.0": "@rollup/rollup-linux-arm64-gnu@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.50.0" resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.50.1"
conditions: os=linux & cpu=arm64 & libc=glibc conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-arm64-musl@npm:4.50.0": "@rollup/rollup-linux-arm64-musl@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.50.0" resolution: "@rollup/rollup-linux-arm64-musl@npm:4.50.1"
conditions: os=linux & cpu=arm64 & libc=musl conditions: os=linux & cpu=arm64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-loongarch64-gnu@npm:4.50.0": "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.0" resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1"
conditions: os=linux & cpu=loong64 & libc=glibc conditions: os=linux & cpu=loong64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-ppc64-gnu@npm:4.50.0": "@rollup/rollup-linux-ppc64-gnu@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.50.0" resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.50.1"
conditions: os=linux & cpu=ppc64 & libc=glibc conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-riscv64-gnu@npm:4.50.0": "@rollup/rollup-linux-riscv64-gnu@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.50.0" resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.50.1"
conditions: os=linux & cpu=riscv64 & libc=glibc conditions: os=linux & cpu=riscv64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-riscv64-musl@npm:4.50.0": "@rollup/rollup-linux-riscv64-musl@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.50.0" resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.50.1"
conditions: os=linux & cpu=riscv64 & libc=musl conditions: os=linux & cpu=riscv64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-s390x-gnu@npm:4.50.0": "@rollup/rollup-linux-s390x-gnu@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.50.0" resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.50.1"
conditions: os=linux & cpu=s390x & libc=glibc conditions: os=linux & cpu=s390x & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-x64-gnu@npm:4.50.0": "@rollup/rollup-linux-x64-gnu@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.50.0" resolution: "@rollup/rollup-linux-x64-gnu@npm:4.50.1"
conditions: os=linux & cpu=x64 & libc=glibc conditions: os=linux & cpu=x64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-linux-x64-musl@npm:4.50.0": "@rollup/rollup-linux-x64-musl@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-linux-x64-musl@npm:4.50.0" resolution: "@rollup/rollup-linux-x64-musl@npm:4.50.1"
conditions: os=linux & cpu=x64 & libc=musl conditions: os=linux & cpu=x64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-openharmony-arm64@npm:4.50.0": "@rollup/rollup-openharmony-arm64@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-openharmony-arm64@npm:4.50.0" resolution: "@rollup/rollup-openharmony-arm64@npm:4.50.1"
conditions: os=openharmony & cpu=arm64 conditions: os=openharmony & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-win32-arm64-msvc@npm:4.50.0": "@rollup/rollup-win32-arm64-msvc@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.50.0" resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.50.1"
conditions: os=win32 & cpu=arm64 conditions: os=win32 & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-win32-ia32-msvc@npm:4.50.0": "@rollup/rollup-win32-ia32-msvc@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.50.0" resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.50.1"
conditions: os=win32 & cpu=ia32 conditions: os=win32 & cpu=ia32
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/rollup-win32-x64-msvc@npm:4.50.0": "@rollup/rollup-win32-x64-msvc@npm:4.50.1":
version: 4.50.0 version: 4.50.1
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.50.0" resolution: "@rollup/rollup-win32-x64-msvc@npm:4.50.1"
conditions: os=win32 & cpu=x64 conditions: os=win32 & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@testing-library/jest-dom@npm:^6.8.0":
version: 6.8.0
resolution: "@testing-library/jest-dom@npm:6.8.0"
dependencies:
"@adobe/css-tools": "npm:^4.4.0"
aria-query: "npm:^5.0.0"
css.escape: "npm:^1.5.1"
dom-accessibility-api: "npm:^0.6.3"
picocolors: "npm:^1.1.1"
redent: "npm:^3.0.0"
checksum: 10c0/4c5b8b433e0339e0399b940ae901a99ae00f1d5ffb7cbb295460b2c44aaad0bc7befcca7b06ceed7aa68a524970077468046c9fe52836ee26f45b807c80a7ff1
languageName: node
linkType: hard
"@types/chai@npm:^5.2.2":
version: 5.2.2
resolution: "@types/chai@npm:5.2.2"
dependencies:
"@types/deep-eql": "npm:*"
checksum: 10c0/49282bf0e8246800ebb36f17256f97bd3a8c4fb31f92ad3c0eaa7623518d7e87f1eaad4ad206960fcaf7175854bdff4cb167e4fe96811e0081b4ada83dd533ec
languageName: node
linkType: hard
"@types/deep-eql@npm:*":
version: 4.0.2
resolution: "@types/deep-eql@npm:4.0.2"
checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844
languageName: node
linkType: hard
"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.0": "@types/estree@npm:1.0.8, @types/estree@npm:^1.0.0":
version: 1.0.8 version: 1.0.8
resolution: "@types/estree@npm:1.0.8" resolution: "@types/estree@npm:1.0.8"
@@ -453,6 +490,105 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/node@npm:^20.0.0":
version: 20.19.14
resolution: "@types/node@npm:20.19.14"
dependencies:
undici-types: "npm:~6.21.0"
checksum: 10c0/cb6a1e3eda43056bf3135d46affbbe5883600adc1928f99247dd9b1a5254823174a91e2d7c6734c2c247a4eb889cb81b0113306e61bf8f4a709b55e86a325f79
languageName: node
linkType: hard
"@types/whatwg-mimetype@npm:^3.0.2":
version: 3.0.2
resolution: "@types/whatwg-mimetype@npm:3.0.2"
checksum: 10c0/dad39d1e4abe760a0a963c84bbdbd26b1df0eb68aff83bdf6ecbb50ad781ead777f6906d19a87007790b750f7500a12e5624d31fc6a1529d14bd19b5c3a316d1
languageName: node
linkType: hard
"@vitest/expect@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/expect@npm:3.2.4"
dependencies:
"@types/chai": "npm:^5.2.2"
"@vitest/spy": "npm:3.2.4"
"@vitest/utils": "npm:3.2.4"
chai: "npm:^5.2.0"
tinyrainbow: "npm:^2.0.0"
checksum: 10c0/7586104e3fd31dbe1e6ecaafb9a70131e4197dce2940f727b6a84131eee3decac7b10f9c7c72fa5edbdb68b6f854353bd4c0fa84779e274207fb7379563b10db
languageName: node
linkType: hard
"@vitest/mocker@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/mocker@npm:3.2.4"
dependencies:
"@vitest/spy": "npm:3.2.4"
estree-walker: "npm:^3.0.3"
magic-string: "npm:^0.30.17"
peerDependencies:
msw: ^2.4.9
vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
peerDependenciesMeta:
msw:
optional: true
vite:
optional: true
checksum: 10c0/f7a4aea19bbbf8f15905847ee9143b6298b2c110f8b64789224cb0ffdc2e96f9802876aa2ca83f1ec1b6e1ff45e822abb34f0054c24d57b29ab18add06536ccd
languageName: node
linkType: hard
"@vitest/pretty-format@npm:3.2.4, @vitest/pretty-format@npm:^3.2.4":
version: 3.2.4
resolution: "@vitest/pretty-format@npm:3.2.4"
dependencies:
tinyrainbow: "npm:^2.0.0"
checksum: 10c0/5ad7d4278e067390d7d633e307fee8103958806a419ca380aec0e33fae71b44a64415f7a9b4bc11635d3c13d4a9186111c581d3cef9c65cc317e68f077456887
languageName: node
linkType: hard
"@vitest/runner@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/runner@npm:3.2.4"
dependencies:
"@vitest/utils": "npm:3.2.4"
pathe: "npm:^2.0.3"
strip-literal: "npm:^3.0.0"
checksum: 10c0/e8be51666c72b3668ae3ea348b0196656a4a5adb836cb5e270720885d9517421815b0d6c98bfdf1795ed02b994b7bfb2b21566ee356a40021f5bf4f6ed4e418a
languageName: node
linkType: hard
"@vitest/snapshot@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/snapshot@npm:3.2.4"
dependencies:
"@vitest/pretty-format": "npm:3.2.4"
magic-string: "npm:^0.30.17"
pathe: "npm:^2.0.3"
checksum: 10c0/f8301a3d7d1559fd3d59ed51176dd52e1ed5c2d23aa6d8d6aa18787ef46e295056bc726a021698d8454c16ed825ecba163362f42fa90258bb4a98cfd2c9424fc
languageName: node
linkType: hard
"@vitest/spy@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/spy@npm:3.2.4"
dependencies:
tinyspy: "npm:^4.0.3"
checksum: 10c0/6ebf0b4697dc238476d6b6a60c76ba9eb1dd8167a307e30f08f64149612fd50227682b876420e4c2e09a76334e73f72e3ebf0e350714dc22474258292e202024
languageName: node
linkType: hard
"@vitest/utils@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/utils@npm:3.2.4"
dependencies:
"@vitest/pretty-format": "npm:3.2.4"
loupe: "npm:^3.1.4"
tinyrainbow: "npm:^2.0.0"
checksum: 10c0/024a9b8c8bcc12cf40183c246c244b52ecff861c6deb3477cbf487ac8781ad44c68a9c5fd69f8c1361878e55b97c10d99d511f2597f1f7244b5e5101d028ba64
languageName: node
linkType: hard
"@volar/language-core@npm:2.4.23": "@volar/language-core@npm:2.4.23":
version: 2.4.23 version: 2.4.23
resolution: "@volar/language-core@npm:2.4.23" resolution: "@volar/language-core@npm:2.4.23"
@@ -511,9 +647,9 @@ __metadata:
linkType: hard linkType: hard
"ansi-regex@npm:^6.0.1": "ansi-regex@npm:^6.0.1":
version: 6.2.0 version: 6.2.2
resolution: "ansi-regex@npm:6.2.0" resolution: "ansi-regex@npm:6.2.2"
checksum: 10c0/20a2e55ae9816074a60e6729dbe3daad664cd967fc82acc08b02f5677db84baa688babf940d71f50acbbb184c02459453789705e079f4d521166ae66451de551 checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f
languageName: node languageName: node
linkType: hard linkType: hard
@@ -527,9 +663,23 @@ __metadata:
linkType: hard linkType: hard
"ansi-styles@npm:^6.1.0": "ansi-styles@npm:^6.1.0":
version: 6.2.1 version: 6.2.3
resolution: "ansi-styles@npm:6.2.1" resolution: "ansi-styles@npm:6.2.3"
checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868
languageName: node
linkType: hard
"aria-query@npm:^5.0.0":
version: 5.3.2
resolution: "aria-query@npm:5.3.2"
checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e
languageName: node
linkType: hard
"assertion-error@npm:^2.0.1":
version: 2.0.1
resolution: "assertion-error@npm:2.0.1"
checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8
languageName: node languageName: node
linkType: hard linkType: hard
@@ -549,6 +699,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cac@npm:^6.7.14":
version: 6.7.14
resolution: "cac@npm:6.7.14"
checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10
languageName: node
linkType: hard
"cacache@npm:^19.0.1": "cacache@npm:^19.0.1":
version: 19.0.1 version: 19.0.1
resolution: "cacache@npm:19.0.1" resolution: "cacache@npm:19.0.1"
@@ -569,6 +726,26 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"chai@npm:^5.2.0":
version: 5.3.3
resolution: "chai@npm:5.3.3"
dependencies:
assertion-error: "npm:^2.0.1"
check-error: "npm:^2.1.1"
deep-eql: "npm:^5.0.1"
loupe: "npm:^3.1.0"
pathval: "npm:^2.0.0"
checksum: 10c0/b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53
languageName: node
linkType: hard
"check-error@npm:^2.1.1":
version: 2.1.1
resolution: "check-error@npm:2.1.1"
checksum: 10c0/979f13eccab306cf1785fa10941a590b4e7ea9916ea2a4f8c87f0316fc3eab07eabefb6e587424ef0f88cbcd3805791f172ea739863ca3d7ce2afc54641c7f0e
languageName: node
linkType: hard
"chownr@npm:^3.0.0": "chownr@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "chownr@npm:3.0.0" resolution: "chownr@npm:3.0.0"
@@ -624,7 +801,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.4.0": "css.escape@npm:^1.5.1":
version: 1.5.1
resolution: "css.escape@npm:1.5.1"
checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525
languageName: node
linkType: hard
"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.4.0, debug@npm:^4.4.1":
version: 4.4.1 version: 4.4.1
resolution: "debug@npm:4.4.1" resolution: "debug@npm:4.4.1"
dependencies: dependencies:
@@ -636,6 +820,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"deep-eql@npm:^5.0.1":
version: 5.0.2
resolution: "deep-eql@npm:5.0.2"
checksum: 10c0/7102cf3b7bb719c6b9c0db2e19bf0aa9318d141581befe8c7ce8ccd39af9eaa4346e5e05adef7f9bd7015da0f13a3a25dcfe306ef79dc8668aedbecb658dd247
languageName: node
linkType: hard
"dom-accessibility-api@npm:^0.6.3":
version: 0.6.3
resolution: "dom-accessibility-api@npm:0.6.3"
checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360
languageName: node
linkType: hard
"eastasianwidth@npm:^0.2.0": "eastasianwidth@npm:^0.2.0":
version: 0.2.0 version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0" resolution: "eastasianwidth@npm:0.2.0"
@@ -680,6 +878,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"es-module-lexer@npm:^1.7.0":
version: 1.7.0
resolution: "es-module-lexer@npm:1.7.0"
checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b
languageName: node
linkType: hard
"esbuild@npm:^0.25.0": "esbuild@npm:^0.25.0":
version: 0.25.9 version: 0.25.9
resolution: "esbuild@npm:0.25.9" resolution: "esbuild@npm:0.25.9"
@@ -776,6 +981,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"estree-walker@npm:^3.0.3":
version: 3.0.3
resolution: "estree-walker@npm:3.0.3"
dependencies:
"@types/estree": "npm:^1.0.0"
checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d
languageName: node
linkType: hard
"expect-type@npm:^1.2.1":
version: 1.2.2
resolution: "expect-type@npm:1.2.2"
checksum: 10c0/6019019566063bbc7a690d9281d920b1a91284a4a093c2d55d71ffade5ac890cf37a51e1da4602546c4b56569d2ad2fc175a2ccee77d1ae06cb3af91ef84f44b
languageName: node
linkType: hard
"exponential-backoff@npm:^3.1.1": "exponential-backoff@npm:^3.1.1":
version: 3.1.2 version: 3.1.2
resolution: "exponential-backoff@npm:3.1.2" resolution: "exponential-backoff@npm:3.1.2"
@@ -806,10 +1027,13 @@ __metadata:
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "fluent-dom-esm@workspace:." resolution: "fluent-dom-esm@workspace:."
dependencies: dependencies:
"@testing-library/jest-dom": "npm:^6.8.0"
happy-dom: "npm:^18.0.1"
prettier: "npm:^3.6.2" prettier: "npm:^3.6.2"
typescript: "npm:^5.9.2" typescript: "npm:^5.9.2"
unplugin-dts: "npm:1.0.0-beta.6" unplugin-dts: "npm:1.0.0-beta.6"
vite: "npm:^7.1.4" vite: "npm:^7.1.5"
vitest: "npm:^3.2.4"
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@@ -874,6 +1098,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"happy-dom@npm:^18.0.1":
version: 18.0.1
resolution: "happy-dom@npm:18.0.1"
dependencies:
"@types/node": "npm:^20.0.0"
"@types/whatwg-mimetype": "npm:^3.0.2"
whatwg-mimetype: "npm:^3.0.0"
checksum: 10c0/10f2115f5001fdaf1aedcbda89c15248a1c2e43a25d7e774cb641a35bf6763cef9097b438ef3c2248ab59a0ef33b3e88cb94da096f2bb0fc109ba3f43f7c66d4
languageName: node
linkType: hard
"http-cache-semantics@npm:^4.1.1": "http-cache-semantics@npm:^4.1.1":
version: 4.2.0 version: 4.2.0
resolution: "http-cache-semantics@npm:4.2.0" resolution: "http-cache-semantics@npm:4.2.0"
@@ -917,6 +1152,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"indent-string@npm:^4.0.0":
version: 4.0.0
resolution: "indent-string@npm:4.0.0"
checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f
languageName: node
linkType: hard
"ip-address@npm:^10.0.1": "ip-address@npm:^10.0.1":
version: 10.0.1 version: 10.0.1
resolution: "ip-address@npm:10.0.1" resolution: "ip-address@npm:10.0.1"
@@ -958,6 +1200,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"js-tokens@npm:^9.0.1":
version: 9.0.1
resolution: "js-tokens@npm:9.0.1"
checksum: 10c0/68dcab8f233dde211a6b5fd98079783cbcd04b53617c1250e3553ee16ab3e6134f5e65478e41d82f6d351a052a63d71024553933808570f04dbf828d7921e80e
languageName: node
linkType: hard
"kolorist@npm:^1.8.0": "kolorist@npm:^1.8.0":
version: 1.8.0 version: 1.8.0
resolution: "kolorist@npm:1.8.0" resolution: "kolorist@npm:1.8.0"
@@ -976,6 +1225,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"loupe@npm:^3.1.0, loupe@npm:^3.1.4":
version: 3.2.1
resolution: "loupe@npm:3.2.1"
checksum: 10c0/910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705
languageName: node
linkType: hard
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.4.3 version: 10.4.3
resolution: "lru-cache@npm:10.4.3" resolution: "lru-cache@npm:10.4.3"
@@ -984,11 +1240,11 @@ __metadata:
linkType: hard linkType: hard
"magic-string@npm:^0.30.17": "magic-string@npm:^0.30.17":
version: 0.30.18 version: 0.30.19
resolution: "magic-string@npm:0.30.18" resolution: "magic-string@npm:0.30.19"
dependencies: dependencies:
"@jridgewell/sourcemap-codec": "npm:^1.5.5" "@jridgewell/sourcemap-codec": "npm:^1.5.5"
checksum: 10c0/80fba01e13ce1f5c474a0498a5aa462fa158eb56567310747089a0033e432d83a2021ee2c109ac116010cd9dcf90a5231d89fbe3858165f73c00a50a74dbefcd checksum: 10c0/db23fd2e2ee98a1aeb88a4cdb2353137fcf05819b883c856dd79e4c7dfb25151e2a5a4d5dbd88add5e30ed8ae5c51bcf4accbc6becb75249d924ec7b4fbcae27
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1011,6 +1267,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"min-indent@npm:^1.0.0":
version: 1.0.1
resolution: "min-indent@npm:1.0.1"
checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c
languageName: node
linkType: hard
"minimatch@npm:^9.0.4": "minimatch@npm:^9.0.4":
version: 9.0.5 version: 9.0.5
resolution: "minimatch@npm:9.0.5" resolution: "minimatch@npm:9.0.5"
@@ -1216,6 +1479,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"pathval@npm:^2.0.0":
version: 2.0.1
resolution: "pathval@npm:2.0.1"
checksum: 10c0/460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581
languageName: node
linkType: hard
"picocolors@npm:^1.1.1": "picocolors@npm:^1.1.1":
version: 1.1.1 version: 1.1.1
resolution: "picocolors@npm:1.1.1" resolution: "picocolors@npm:1.1.1"
@@ -1296,6 +1566,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"redent@npm:^3.0.0":
version: 3.0.0
resolution: "redent@npm:3.0.0"
dependencies:
indent-string: "npm:^4.0.0"
strip-indent: "npm:^3.0.0"
checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae
languageName: node
linkType: hard
"retry@npm:^0.12.0": "retry@npm:^0.12.0":
version: 0.12.0 version: 0.12.0
resolution: "retry@npm:0.12.0" resolution: "retry@npm:0.12.0"
@@ -1304,30 +1584,30 @@ __metadata:
linkType: hard linkType: hard
"rollup@npm:^4.43.0": "rollup@npm:^4.43.0":
version: 4.50.0 version: 4.50.1
resolution: "rollup@npm:4.50.0" resolution: "rollup@npm:4.50.1"
dependencies: dependencies:
"@rollup/rollup-android-arm-eabi": "npm:4.50.0" "@rollup/rollup-android-arm-eabi": "npm:4.50.1"
"@rollup/rollup-android-arm64": "npm:4.50.0" "@rollup/rollup-android-arm64": "npm:4.50.1"
"@rollup/rollup-darwin-arm64": "npm:4.50.0" "@rollup/rollup-darwin-arm64": "npm:4.50.1"
"@rollup/rollup-darwin-x64": "npm:4.50.0" "@rollup/rollup-darwin-x64": "npm:4.50.1"
"@rollup/rollup-freebsd-arm64": "npm:4.50.0" "@rollup/rollup-freebsd-arm64": "npm:4.50.1"
"@rollup/rollup-freebsd-x64": "npm:4.50.0" "@rollup/rollup-freebsd-x64": "npm:4.50.1"
"@rollup/rollup-linux-arm-gnueabihf": "npm:4.50.0" "@rollup/rollup-linux-arm-gnueabihf": "npm:4.50.1"
"@rollup/rollup-linux-arm-musleabihf": "npm:4.50.0" "@rollup/rollup-linux-arm-musleabihf": "npm:4.50.1"
"@rollup/rollup-linux-arm64-gnu": "npm:4.50.0" "@rollup/rollup-linux-arm64-gnu": "npm:4.50.1"
"@rollup/rollup-linux-arm64-musl": "npm:4.50.0" "@rollup/rollup-linux-arm64-musl": "npm:4.50.1"
"@rollup/rollup-linux-loongarch64-gnu": "npm:4.50.0" "@rollup/rollup-linux-loongarch64-gnu": "npm:4.50.1"
"@rollup/rollup-linux-ppc64-gnu": "npm:4.50.0" "@rollup/rollup-linux-ppc64-gnu": "npm:4.50.1"
"@rollup/rollup-linux-riscv64-gnu": "npm:4.50.0" "@rollup/rollup-linux-riscv64-gnu": "npm:4.50.1"
"@rollup/rollup-linux-riscv64-musl": "npm:4.50.0" "@rollup/rollup-linux-riscv64-musl": "npm:4.50.1"
"@rollup/rollup-linux-s390x-gnu": "npm:4.50.0" "@rollup/rollup-linux-s390x-gnu": "npm:4.50.1"
"@rollup/rollup-linux-x64-gnu": "npm:4.50.0" "@rollup/rollup-linux-x64-gnu": "npm:4.50.1"
"@rollup/rollup-linux-x64-musl": "npm:4.50.0" "@rollup/rollup-linux-x64-musl": "npm:4.50.1"
"@rollup/rollup-openharmony-arm64": "npm:4.50.0" "@rollup/rollup-openharmony-arm64": "npm:4.50.1"
"@rollup/rollup-win32-arm64-msvc": "npm:4.50.0" "@rollup/rollup-win32-arm64-msvc": "npm:4.50.1"
"@rollup/rollup-win32-ia32-msvc": "npm:4.50.0" "@rollup/rollup-win32-ia32-msvc": "npm:4.50.1"
"@rollup/rollup-win32-x64-msvc": "npm:4.50.0" "@rollup/rollup-win32-x64-msvc": "npm:4.50.1"
"@types/estree": "npm:1.0.8" "@types/estree": "npm:1.0.8"
fsevents: "npm:~2.3.2" fsevents: "npm:~2.3.2"
dependenciesMeta: dependenciesMeta:
@@ -1377,7 +1657,7 @@ __metadata:
optional: true optional: true
bin: bin:
rollup: dist/bin/rollup rollup: dist/bin/rollup
checksum: 10c0/8a9aa0885b61ee08315cdc097fb9f97b626a0992546a6857d7668f4690a7344d8497fa7504e4dba03acefc77f03d90fec3c11bfa80777177e76ea5d8c18ddc97 checksum: 10c0/2029282826d5fb4e308be261b2c28329a4d2bd34304cc3960da69fd21d5acccd0267d6770b1656ffc8f166203ef7e865b4583d5f842a519c8ef059ac71854205
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1413,6 +1693,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"siginfo@npm:^2.0.0":
version: 2.0.0
resolution: "siginfo@npm:2.0.0"
checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34
languageName: node
linkType: hard
"signal-exit@npm:^4.0.1": "signal-exit@npm:^4.0.1":
version: 4.1.0 version: 4.1.0
resolution: "signal-exit@npm:4.1.0" resolution: "signal-exit@npm:4.1.0"
@@ -1464,6 +1751,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"stackback@npm:0.0.2":
version: 0.0.2
resolution: "stackback@npm:0.0.2"
checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983
languageName: node
linkType: hard
"std-env@npm:^3.9.0":
version: 3.9.0
resolution: "std-env@npm:3.9.0"
checksum: 10c0/4a6f9218aef3f41046c3c7ecf1f98df00b30a07f4f35c6d47b28329bc2531eef820828951c7d7b39a1c5eb19ad8a46e3ddfc7deb28f0a2f3ceebee11bab7ba50
languageName: node
linkType: hard
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
version: 4.2.3 version: 4.2.3
resolution: "string-width@npm:4.2.3" resolution: "string-width@npm:4.2.3"
@@ -1496,11 +1797,29 @@ __metadata:
linkType: hard linkType: hard
"strip-ansi@npm:^7.0.1": "strip-ansi@npm:^7.0.1":
version: 7.1.0 version: 7.1.2
resolution: "strip-ansi@npm:7.1.0" resolution: "strip-ansi@npm:7.1.2"
dependencies: dependencies:
ansi-regex: "npm:^6.0.1" ansi-regex: "npm:^6.0.1"
checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b
languageName: node
linkType: hard
"strip-indent@npm:^3.0.0":
version: 3.0.0
resolution: "strip-indent@npm:3.0.0"
dependencies:
min-indent: "npm:^1.0.0"
checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679
languageName: node
linkType: hard
"strip-literal@npm:^3.0.0":
version: 3.0.0
resolution: "strip-literal@npm:3.0.0"
dependencies:
js-tokens: "npm:^9.0.1"
checksum: 10c0/d81657f84aba42d4bbaf2a677f7e7f34c1f3de5a6726db8bc1797f9c0b303ba54d4660383a74bde43df401cf37cce1dff2c842c55b077a4ceee11f9e31fba828
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1518,7 +1837,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14": "tinybench@npm:^2.9.0":
version: 2.9.0
resolution: "tinybench@npm:2.9.0"
checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c
languageName: node
linkType: hard
"tinyexec@npm:^0.3.2":
version: 0.3.2
resolution: "tinyexec@npm:0.3.2"
checksum: 10c0/3efbf791a911be0bf0821eab37a3445c2ba07acc1522b1fa84ae1e55f10425076f1290f680286345ed919549ad67527d07281f1c19d584df3b74326909eb1f90
languageName: node
linkType: hard
"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15":
version: 0.2.15 version: 0.2.15
resolution: "tinyglobby@npm:0.2.15" resolution: "tinyglobby@npm:0.2.15"
dependencies: dependencies:
@@ -1528,6 +1861,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tinypool@npm:^1.1.1":
version: 1.1.1
resolution: "tinypool@npm:1.1.1"
checksum: 10c0/bf26727d01443061b04fa863f571016950888ea994ba0cd8cba3a1c51e2458d84574341ab8dbc3664f1c3ab20885c8cf9ff1cc4b18201f04c2cde7d317fff69b
languageName: node
linkType: hard
"tinyrainbow@npm:^2.0.0":
version: 2.0.0
resolution: "tinyrainbow@npm:2.0.0"
checksum: 10c0/c83c52bef4e0ae7fb8ec6a722f70b5b6fa8d8be1c85792e829f56c0e1be94ab70b293c032dc5048d4d37cfe678f1f5babb04bdc65fd123098800148ca989184f
languageName: node
linkType: hard
"tinyspy@npm:^4.0.3":
version: 4.0.3
resolution: "tinyspy@npm:4.0.3"
checksum: 10c0/0a92a18b5350945cc8a1da3a22c9ad9f4e2945df80aaa0c43e1b3a3cfb64d8501e607ebf0305e048e3c3d3e0e7f8eb10cea27dc17c21effb73e66c4a3be36373
languageName: node
linkType: hard
"typescript@npm:^5.9.2": "typescript@npm:^5.9.2":
version: 5.9.2 version: 5.9.2
resolution: "typescript@npm:5.9.2" resolution: "typescript@npm:5.9.2"
@@ -1555,6 +1909,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"undici-types@npm:~6.21.0":
version: 6.21.0
resolution: "undici-types@npm:6.21.0"
checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04
languageName: node
linkType: hard
"unique-filename@npm:^4.0.0": "unique-filename@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "unique-filename@npm:4.0.0" resolution: "unique-filename@npm:4.0.0"
@@ -1628,9 +1989,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"vite@npm:^7.1.4": "vite-node@npm:3.2.4":
version: 7.1.4 version: 3.2.4
resolution: "vite@npm:7.1.4" resolution: "vite-node@npm:3.2.4"
dependencies:
cac: "npm:^6.7.14"
debug: "npm:^4.4.1"
es-module-lexer: "npm:^1.7.0"
pathe: "npm:^2.0.3"
vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0"
bin:
vite-node: vite-node.mjs
checksum: 10c0/6ceca67c002f8ef6397d58b9539f80f2b5d79e103a18367288b3f00a8ab55affa3d711d86d9112fce5a7fa658a212a087a005a045eb8f4758947dd99af2a6c6b
languageName: node
linkType: hard
"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0, vite@npm:^7.1.5":
version: 7.1.5
resolution: "vite@npm:7.1.5"
dependencies: dependencies:
esbuild: "npm:^0.25.0" esbuild: "npm:^0.25.0"
fdir: "npm:^6.5.0" fdir: "npm:^6.5.0"
@@ -1638,7 +2014,7 @@ __metadata:
picomatch: "npm:^4.0.3" picomatch: "npm:^4.0.3"
postcss: "npm:^8.5.6" postcss: "npm:^8.5.6"
rollup: "npm:^4.43.0" rollup: "npm:^4.43.0"
tinyglobby: "npm:^0.2.14" tinyglobby: "npm:^0.2.15"
peerDependencies: peerDependencies:
"@types/node": ^20.19.0 || >=22.12.0 "@types/node": ^20.19.0 || >=22.12.0
jiti: ">=1.21.0" jiti: ">=1.21.0"
@@ -1679,7 +2055,63 @@ __metadata:
optional: true optional: true
bin: bin:
vite: bin/vite.js vite: bin/vite.js
checksum: 10c0/dbe2ba29926ffe8985c93d1b3718dcc9040080b7fa10a74c82a52aad7449136a391ba17b265288ff03b864e6f1033b9b537247521a96d5491a9d4af90ac04702 checksum: 10c0/782d2f20c25541b26d1fb39bef5f194149caff39dc25b7836e25f049ca919f2e2ce186bddb21f3f20f6195354b3579ec637a8ca08d65b117f8b6f81e3e730a9c
languageName: node
linkType: hard
"vitest@npm:^3.2.4":
version: 3.2.4
resolution: "vitest@npm:3.2.4"
dependencies:
"@types/chai": "npm:^5.2.2"
"@vitest/expect": "npm:3.2.4"
"@vitest/mocker": "npm:3.2.4"
"@vitest/pretty-format": "npm:^3.2.4"
"@vitest/runner": "npm:3.2.4"
"@vitest/snapshot": "npm:3.2.4"
"@vitest/spy": "npm:3.2.4"
"@vitest/utils": "npm:3.2.4"
chai: "npm:^5.2.0"
debug: "npm:^4.4.1"
expect-type: "npm:^1.2.1"
magic-string: "npm:^0.30.17"
pathe: "npm:^2.0.3"
picomatch: "npm:^4.0.2"
std-env: "npm:^3.9.0"
tinybench: "npm:^2.9.0"
tinyexec: "npm:^0.3.2"
tinyglobby: "npm:^0.2.14"
tinypool: "npm:^1.1.1"
tinyrainbow: "npm:^2.0.0"
vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0"
vite-node: "npm:3.2.4"
why-is-node-running: "npm:^2.3.0"
peerDependencies:
"@edge-runtime/vm": "*"
"@types/debug": ^4.1.12
"@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0
"@vitest/browser": 3.2.4
"@vitest/ui": 3.2.4
happy-dom: "*"
jsdom: "*"
peerDependenciesMeta:
"@edge-runtime/vm":
optional: true
"@types/debug":
optional: true
"@types/node":
optional: true
"@vitest/browser":
optional: true
"@vitest/ui":
optional: true
happy-dom:
optional: true
jsdom:
optional: true
bin:
vitest: vitest.mjs
checksum: 10c0/5bf53ede3ae6a0e08956d72dab279ae90503f6b5a05298a6a5e6ef47d2fd1ab386aaf48fafa61ed07a0ebfe9e371772f1ccbe5c258dd765206a8218bf2eb79eb
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1697,6 +2129,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"whatwg-mimetype@npm:^3.0.0":
version: 3.0.0
resolution: "whatwg-mimetype@npm:3.0.0"
checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f
languageName: node
linkType: hard
"which@npm:^2.0.1": "which@npm:^2.0.1":
version: 2.0.2 version: 2.0.2
resolution: "which@npm:2.0.2" resolution: "which@npm:2.0.2"
@@ -1719,6 +2158,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"why-is-node-running@npm:^2.3.0":
version: 2.3.0
resolution: "why-is-node-running@npm:2.3.0"
dependencies:
siginfo: "npm:^2.0.0"
stackback: "npm:0.0.2"
bin:
why-is-node-running: cli.js
checksum: 10c0/1cde0b01b827d2cf4cb11db962f3958b9175d5d9e7ac7361d1a7b0e2dc6069a263e69118bd974c4f6d0a890ef4eedfe34cf3d5167ec14203dbc9a18620537054
languageName: node
linkType: hard
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version: 7.0.0 version: 7.0.0
resolution: "wrap-ansi@npm:7.0.0" resolution: "wrap-ansi@npm:7.0.0"