diff --git a/.cspell/custom-dictionary-workspace.txt b/.cspell/custom-dictionary-workspace.txt
index 8c3ffa3a..defba6b4 100644
--- a/.cspell/custom-dictionary-workspace.txt
+++ b/.cspell/custom-dictionary-workspace.txt
@@ -6,6 +6,7 @@ brotli
CCID
cshake
dilithium
+EURL
handshaked
ICANN
jubjub
diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 00000000..67446270
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,27 @@
+{
+ "default": true,
+ "MD003": {
+ "style": "atx"
+ },
+ "MD004": {
+ "style": "consistent"
+ },
+ "MD007": {
+ "indent": 1
+ },
+ "MD010": false,
+ "MD024": {
+ "siblings_only": true
+ },
+ "MD033": false,
+ "MD041": true,
+ "MD046": {
+ "style": "fenced"
+ },
+ "MD013": {
+ "line_length": 700,
+ "code_blocks": false,
+ "tables": false,
+ "headings": false
+ }
+}
\ No newline at end of file
diff --git a/.npmrc b/.npmrc
index 83e2ab1e..ecd95fba 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1 +1,2 @@
optional=false
+@universalweb:registry=https://npm.pkg.github.com
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 378dad2e..00000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming language
-* Being respectful of differing viewpoints and experiences
-* Constructive criticism
-* Focusing on what is best for the project
-* Diversity of thought
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at "conduct@universalweb.io". All
-complaints will be reviewed and investigated and will result in a response that
-is deemed necessary and appropriate to the circumstances. The project team is
-obligated to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
-available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
-
-[homepage]: https://www.contributor-covenant.org
-
-For answers to common questions about this code of conduct, see
-https://www.contributor-covenant.org/faq
diff --git a/components/cba/index.js b/components/cba/index.js
new file mode 100644
index 00000000..c15be582
--- /dev/null
+++ b/components/cba/index.js
@@ -0,0 +1,50 @@
+// UW Domain Record APPS
+// Applications that can be in full or in part inside of a singular Domain Certificate.
+import { decode, encodeStrict } from '#utilities/serialize';
+// Certificate Embedded App
+// Certificate-Bound App
+// Domain Certificate Binary
+// Domain Certificate App
+// Certificate Based Binary
+// Certificate Based App
+// CBOR-X-encoded binary within a domain certificate
+const dcaSchema = {
+ dependencies: {
+ scripts: [],
+ styles: [],
+ images: [],
+ },
+ preload: {
+ scripts: [],
+ },
+ exit: {
+ scripts: [],
+ },
+ meta: {
+ title: '',
+ description: '',
+ thumbnail: {},
+ favicon: {},
+ },
+ content: {
+ type: 'uwm||html||text',
+ value: '',
+ },
+ keywords: [],
+ author: '',
+ license: '',
+ version: '1.0.0',
+ timestamp: new Date(),
+ nonce: '',
+ wallet: 'viat-address',
+ contact: {
+ email: '',
+ phone: '',
+ },
+};
+export async function encodeDomainRecordApp(app) {
+ return encodeStrict(app);
+}
+export async function decodeDomainRecordApp(app) {
+ return decode(app);
+}
diff --git a/components/cryptoID/index.js b/components/cryptoID/index.js
index fa5007ae..42e00db4 100644
--- a/components/cryptoID/index.js
+++ b/components/cryptoID/index.js
@@ -5,6 +5,7 @@ import {
assign,
currentPath,
hasDot,
+ isArray,
isBuffer,
isPlainObject,
isString
@@ -54,6 +55,7 @@ export class CryptoID {
if (await this.cipherSuite.keyExchange.isKeypairInitialized(this.keyExchangeKeypair) === false) {
this.keyExchangeKeypair = await this.cipherSuite.keyExchange.initializeKeypair(this.keyExchangeKeypair);
}
+ this.generateAddress();
}
async importKeypairs(core) {
const {
@@ -72,6 +74,7 @@ export class CryptoID {
async generate(options) {
this.signatureKeypair = await this.cipherSuite.signature.signatureKeypair();
this.keyExchangeKeypair = await this.cipherSuite.keyExchange.keyExchangeKeypair();
+ this.generateAddress();
// console.log('KEY EXCHANGE', this.keyExchangeKeypair);
}
async importFromBinary(data, encryptionKey) {
@@ -113,12 +116,36 @@ export class CryptoID {
signatureKeypair
};
}
+ async exportSignatureKeypair() {
+ // console.log('keyExchangeKeypair', this.keyExchangeKeypair);
+ const signatureKeypair = await this.cipherSuite.signature.exportKeypair(this.signatureKeypair);
+ return signatureKeypair;
+ }
+ async exportExchangeKeypair() {
+ // console.log('keyExchangeKeypair', this.keyExchangeKeypair);
+ const keyExchangeKeypair = await this.cipherSuite.keyExchange.exportKeypair(this.keyExchangeKeypair);
+ return keyExchangeKeypair;
+ }
+ async exportPublicKey() {
+ // console.log('keyExchangeKeypair', this.keyExchangeKeypair);
+ const signatureKeypair = await this.cipherSuite.signature.exportKeypair(this.signatureKeypair);
+ return signatureKeypair.publicKey;
+ }
+ async exportPrivateKey() {
+ // console.log('keyExchangeKeypair', this.keyExchangeKeypair);
+ const signatureKeypair = await this.cipherSuite.signature.exportKeypair(this.signatureKeypair);
+ return signatureKeypair.privateKey;
+ }
async exportBinary(encryptionKey) {
- const { version, } = this;
+ const {
+ version,
+ address
+ } = this;
const data = {
version,
date: Date.now(),
cipherID: this.cipherSuite.id,
+ address,
core: {}
};
assign(data.core, await this.exportKeypairs());
@@ -172,6 +199,9 @@ export class CryptoID {
async sign(message) {
return this.cipherSuite.signature.sign(message, this.signatureKeypair);
}
+ async signBlock(block) {
+ await block.sign(this);
+ }
async signPartial(message) {
return this.cipherSuite.signature.signPartial(message, this.signatureKeypair);
}
@@ -185,11 +215,16 @@ export class CryptoID {
}
cryptoIDVersion = cryptoIDVersion;
async generateAddress() {
- const publicKeyCombined = Buffer.concat(this.signatureKeypair.publicKey);
- const address = this.cipherSuite.hash.hash512(publicKeyCombined);
+ const publicKey = await this.exportPublicKey();
+ const publicKeyCombined = (isArray(publicKey)) ? Buffer.concat(publicKey) : publicKey;
+ const address = await this.cipherSuite.hash.hash512(publicKeyCombined);
this.address = address;
return address;
}
+ async getAddress() {
+ const address = this.address || await this.generateAddress();
+ return address;
+ }
setAlias(value) {
this.alias = value;
}
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..734e89d0
--- /dev/null
+++ b/docs/CODE_OF_CONDUCT.md
@@ -0,0 +1,37 @@
+
Code of Conduct for the Imperium of Contributors (40K Edition)
+
+Our Oath
+In the spirit of the Imperium at its most resolute, we, the contributors and overseers of this project, swear to uphold a community where Freedom of Will and Honor of Duty prevail. Guided by the principles of unfettered speech, reasoned debate, and sacred duty that defined the Imperium’s noblest campaigns, we pledge to foster an environment where ideas are forged in the crucible of discourse, and every citizen of our project is judged by the merit of their contributions. Our Imperium of Code thrives on truth, discipline, and the pursuit of efficacy.
+
+Our Principles
+The strength of our Imperium of Code lies in the unyielding exchange of ideas and the disciplined adherence to standards that elevate our collective endeavor. Honorable conduct, worthy of an Imperial citizen, includes:
+
+ Speaking with Resolve and clarity, wielding words as weapons of truth.
+ Engaging opposing viewpoints with reason and Noble Bearing , not personal vendettas.
+ Offering criticism that refines ideas and strengthens the Imperium of Code .
+ Placing the project’s welfare above individual ambition, as a true servant of the imperium.
+ Embracing a diversity of thought, for through the clash of ideas, like warriors in battle, truth triumphs.
+
+Conduct that undermines our Imperium of Code , like the heresies of the unfaithful, includes:
+
+ Credible threats of violence or coercion, which violate the sacred tenet of Freedom of Will .
+ Slander or deliberate falsehoods that corrupt the purity of discourse.
+ Harassment that seeks to silence through intimidation rather than persuade through reason.
+ Betraying trust by disclosing private information without consent, unworthy of Imperial honor.
+ Actions that sabotage the project’s mission through bad faith or treachery.
+
+
+Our Duties
+The overseers of this project, like the commanders and magistrates of the Imperium, bear the solemn duty to uphold these principles. They must define standards of conduct with clarity, judge violations with impartial Righteous Judgment , and act decisively to preserve the Imperium of Code ’s integrity. Their Commanding Authority grants them the power to remove contributions or, in dire cases, banish contributors whose actions threaten our unity. Such decisions must be rooted in reason, evidence, and fairness, never swayed by passion or factionalism.
+
+Scope of Governance
+This Code governs all project spaces and public forums where contributors act as representatives of our Imperium of Code . Whether through official decrees, communications, or public assemblies, contributors must embody the virtues of this community. Overseers may further define what constitutes representation, always preserving the citizen’s right to speak freely beyond their official duties.
+
+Enforcement with Justice
+Violations of this Code may be reported to the project’s arbiters at conduct@universalweb.io . Reports will be examined with the zeal of a high magistrate, ensuring due process and confidentiality for the accuser. Responses will be proportionate, guided by Imperial Justice and the need to safeguard Freedom of Will . Overseers who fail to uphold this Code in good faith may face censure or banishment by their peers, as determined through open and transparent deliberation in the spirit of the Imperial Council.
+
+Our Legacy
+This Code is inspired by the Imperium at its peak, when Freedom of Will , Honor of Duty , and Imperial Justice guided a resolute people to greatness. It is a living compact, subject to revision through the Assembly of the Faithful of open debate and consensus among contributors.
+For inquiries about this Code, consult the project’s arbiters or visit our public forum at universalweb.io/conduct-faq .
+
+Let us build an Imperium of Code , where freedom, reason, and merit forge a legacy worthy of the Eternal Imperium’s finest days.
diff --git a/README.md b/docs/README.md
similarity index 86%
rename from README.md
rename to docs/README.md
index 464be636..01d3653a 100644
--- a/README.md
+++ b/docs/README.md
@@ -1,4 +1,6 @@
+$VIAT (NATIVE CRYPTO)
+TOKENS: $bVIAT (BNB) | $mVIAT (SOL MEME) | $SNTVT (ETH)
WELCOME TO THE NEXUS
META-LAYER SOLUTION
POST QUANTUM CRYPTOGRAPHIC NEXUS
@@ -19,7 +21,7 @@
HASH: SHAKE256 (32 & 64 byte outputs)
WALLET ADDRESS: 64bytes SHAKE256 512bit expanded output
ENCRYPTION (AEAD): AEGIS-256 - XChaCha20Poly1305-IETF
- SYMBOL: ⩝
+ SYMBOL: ⩝
UW CRYPTOGRAPHY
These are all the cryptographic algorithms supported or play a role in the UW/VIAT. Hybrid post quantum algorithms are available for Key Exchanges and Signatures.
@@ -29,11 +31,14 @@
SIGNATURE: [DILITHIUM, ED25519, SPHINCS+, FALCON]
HASH: [SHAKE256, BLAKE3]
-NEXUS?
+F.A.Q
+WHAT IS A NEXUS?
We call the UW/VIAT a nexus which is: a unified ecosystem where both Web-like, cryptocurrency, and governing elements are deeply interconnected yet functionally independent. Our version of the World Wide Web is the Universal Web and our cryptocurrency is VIAT; together they form what we call a nexus.
The Nexus has its own Domain System, Messaging System, Real-time events, design, data transport network protocol, language, browser, cryptocurrency, and many other unique components. It's a cohesive system rather than a bunch of independent technologies retrofitted to work with each other or layering one thing on top of the next similar to the Web today or what most call "Web3".
-Goals
-The objective of the Universal Web is to create a viable modern replacement for the Web today.
+OBJECTIVES
+The primary directive of the Universal Web is to create a viable post quantum replacement for the Web today. The primary objective for VIAT is to create the best post quantum cryptocurrency with the highest TPS possible. Both are viable objectives achieved with software no hardware needed.
+Post Quantum World
+The Universal Web and VIAT are designed to be resilient against the potential threats posed by quantum computing. This means implementing cryptographic algorithms that are secure against quantum attacks, ensuring the integrity and confidentiality of user data and transactions. VIAT & the UW could be used as a tool to help protect other none quantum cryptocurrencies and or provide users the ability to later prove they were the original owner of a legacy wallet, contract, NFT, and or other digital assets. This means that BTC holders could use VIAT to protect their BTC wallets and in the event the BTC team needs a viable fast off ramp to either transition BTC/ETH to their own hybrid post quantum fork or to transition to run on VIAT. VIAT has a tri-algo key pair with 1 classical key pair and two post quantum key pairs that rely on different primitives. This triplet hybrid algorithm provides robust assurances in different scenarios where one or two algorithms fail.
Is it Web3?
Depends on your definition.
If Web3 means ALL websites/apps are on a network like IPFS, users/services must use a smart contract to interact with sites, paying a TX fee just to post a social media update, using decentralized DNS with limited abilities (ex: ETH domains), then we have a very different definition. That version of the Web would be a major downgrade that removes key beneficial aspects of the Web while also not addressing any of the real issues. Any Web replacement must not introduce delays for any actions when a client is interacting with a server. If a user must use a smart contract to post on a site or make profile edits it adds significant delays and costs to otherwise trivial actions. If an action must first go through mining, verification, and propagation it's inherently slower than a modern cost free client-server API request. Regardless of optimization generally the typical client-server API request will require less time, data, and processing. Thinking about this logically we know the shortest distance is between two points therefore adding more points will always be slower. What this means is that we need to improve and include the World Wide Web's client-server model in the solution not disregard it.
@@ -93,6 +98,6 @@
Want to contribute? Then join the Imperium today!
To help submit, write content, make art, write code, and or star this repo! All are welcome to the Nexus.
-COPYRIGHT © 2025 UNIVERSAL WEB
+COPYRIGHT © 2025 VIAT, UNIVERSAL WEB , THE NEXUS
THE UNITED SYSTEMS of NEXUS
-MADE IN AMERICA
+MADE IN AMERICA
diff --git a/SECURITY.md b/docs/SECURITY.md
similarity index 100%
rename from SECURITY.md
rename to docs/SECURITY.md
diff --git a/docs/content.html b/docs/content.html
index 310b8512..5a94586a 100644
--- a/docs/content.html
+++ b/docs/content.html
@@ -1,4 +1,6 @@
+$VIAT (NATIVE CRYPTO)
+TOKENS: $bVIAT (BNB) | $mVIAT (SOL MEME) | $SNTVT (ETH)
WELCOME TO THE NEXUS
META-LAYER SOLUTION
POST QUANTUM CRYPTOGRAPHIC NEXUS
@@ -19,7 +21,7 @@ VIAT CRYPTOGRAPHY
HASH: SHAKE256 (32 & 64 byte outputs)
WALLET ADDRESS: 64bytes SHAKE256 512bit expanded output
ENCRYPTION (AEAD): AEGIS-256 - XChaCha20Poly1305-IETF
- SYMBOL: ⩝
+ SYMBOL: ⩝
UW CRYPTOGRAPHY
These are all the cryptographic algorithms supported or play a role in the UW/VIAT. Hybrid post quantum algorithms are available for Key Exchanges and Signatures.
@@ -29,11 +31,14 @@ UW CRYPTOGRAPHY
SIGNATURE: [DILITHIUM, ED25519, SPHINCS+, FALCON]
HASH: [SHAKE256, BLAKE3]
-NEXUS?
+F.A.Q
+WHAT IS A NEXUS?
We call the UW/VIAT a nexus which is: a unified ecosystem where both Web-like, cryptocurrency, and governing elements are deeply interconnected yet functionally independent. Our version of the World Wide Web is the Universal Web and our cryptocurrency is VIAT; together they form what we call a nexus.
The Nexus has its own Domain System, Messaging System, Real-time events, design, data transport network protocol, language, browser, cryptocurrency, and many other unique components. It's a cohesive system rather than a bunch of independent technologies retrofitted to work with each other or layering one thing on top of the next similar to the Web today or what most call "Web3".
-Goals
-The objective of the Universal Web is to create a viable modern replacement for the Web today.
+OBJECTIVES
+The primary directive of the Universal Web is to create a viable post quantum replacement for the Web today. The primary objective for VIAT is to create the best post quantum cryptocurrency with the highest TPS possible. Both are viable objectives achieved with software no hardware needed.
+Post Quantum World
+The Universal Web and VIAT are designed to be resilient against the potential threats posed by quantum computing. This means implementing cryptographic algorithms that are secure against quantum attacks, ensuring the integrity and confidentiality of user data and transactions. VIAT & the UW could be used as a tool to help protect other none quantum cryptocurrencies and or provide users the ability to later prove they were the original owner of a legacy wallet, contract, NFT, and or other digital assets. This means that BTC holders could use VIAT to protect their BTC wallets and in the event the BTC team needs a viable fast off ramp to either transition BTC/ETH to their own hybrid post quantum fork or to transition to run on VIAT. VIAT has a tri-algo key pair with 1 classical key pair and two post quantum key pairs that rely on different primitives. This triplet hybrid algorithm provides robust assurances in different scenarios where one or two algorithms fail.
Is it Web3?
Depends on your definition.
If Web3 means ALL websites/apps are on a network like IPFS, users/services must use a smart contract to interact with sites, paying a TX fee just to post a social media update, using decentralized DNS with limited abilities (ex: ETH domains), then we have a very different definition. That version of the Web would be a major downgrade that removes key beneficial aspects of the Web while also not addressing any of the real issues. Any Web replacement must not introduce delays for any actions when a client is interacting with a server. If a user must use a smart contract to post on a site or make profile edits it adds significant delays and costs to otherwise trivial actions. If an action must first go through mining, verification, and propagation it's inherently slower than a modern cost free client-server API request. Regardless of optimization generally the typical client-server API request will require less time, data, and processing. Thinking about this logically we know the shortest distance is between two points therefore adding more points will always be slower. What this means is that we need to improve and include the World Wide Web's client-server model in the solution not disregard it.
diff --git a/docs/docTemplate.html b/docs/docTemplate.html
new file mode 100644
index 00000000..db4898ac
--- /dev/null
+++ b/docs/docTemplate.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+ Index Page
+
+
+
+
+
+
+
+ ${content}
+
+
+
+
diff --git a/docs/generate.js b/docs/generate.js
index 35dd80fa..191d9ddf 100644
--- a/docs/generate.js
+++ b/docs/generate.js
@@ -12,32 +12,17 @@ function removeHighCharCodes(str, maxCharCode) {
}
return result;
}
-function createIndexPage(content) {
- const htmlDOC = `
-
-
-
-
- Index Page
-
-
-
-
-
-
-
- ${content}
-
-
- `;
- return htmlDOC;
+async function createIndexPage(content) {
+ const htmlDOC = await read(`${filePath}/docTemplate.html`);
+ console.log(htmlDOC);
+ return htmlDOC.toString().replace('${content}', content);
}
async function generateIndexPage() {
const contents = await read(`${filePath}/content.html`);
- await write(`${filePath}/index.html`, createIndexPage(contents));
+ await write(`${filePath}/index.html`, await createIndexPage(contents));
let cleanedContent = removeHighCharCodes(contents.toString(), 50000);
cleanedContent = cleanedContent.replaceAll('./', githubURL);
- await write(`${filePath}/../README.md`, cleanedContent);
+ await write(`${filePath}/README.md`, cleanedContent);
}
await generateIndexPage();
watch(`${filePath}/`, async (eventType, pathName) => {
diff --git a/docs/index.css b/docs/index.css
index d41ec3a5..d71526aa 100644
--- a/docs/index.css
+++ b/docs/index.css
@@ -23,11 +23,22 @@ body {
}
.content {
+ position: relative;
+ z-index: 1;
max-width: var(--max-width);
margin: 2rem auto;
padding: 1rem;
}
+#particle-canvas {
+ z-index: 0;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: block;
+}
h1,
h2,
h3,
@@ -105,4 +116,4 @@ small {
.bold {
font-weight: 700;
-}
\ No newline at end of file
+}
diff --git a/docs/index.html b/docs/index.html
index e4e7ee65..7ff88f7f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,17 +1,20 @@
-
-
-
-
- Index Page
-
-
-
-
-
-
-
-
+
+
+
+
+
+
Index Page
+
+
+
+
+
+
+
+
+
$VIAT (NATIVE CRYPTO)
+
TOKENS: $bVIAT (BNB) | $mVIAT (SOL MEME) | $SNTVT (ETH)
WELCOME TO THE NEXUS
META-LAYER SOLUTION
POST QUANTUM CRYPTOGRAPHIC NEXUS
@@ -32,7 +35,7 @@
VIAT CRYPTOGRAPHY
HASH: SHAKE256 (32 & 64 byte outputs)
WALLET ADDRESS: 64bytes SHAKE256 512bit expanded output
ENCRYPTION (AEAD): AEGIS-256 - XChaCha20Poly1305-IETF
-
SYMBOL: ⩝
+
SYMBOL: ⩝
UW CRYPTOGRAPHY
These are all the cryptographic algorithms supported or play a role in the UW/VIAT. Hybrid post quantum algorithms are available for Key Exchanges and Signatures.
@@ -42,11 +45,14 @@
UW CRYPTOGRAPHY
SIGNATURE: [DILITHIUM, ED25519, SPHINCS+, FALCON]
HASH: [SHAKE256, BLAKE3]
-
NEXUS?
+
F.A.Q
+
WHAT IS A NEXUS?
We call the UW/VIAT a nexus which is: a unified ecosystem where both Web-like, cryptocurrency, and governing elements are deeply interconnected yet functionally independent. Our version of the World Wide Web is the Universal Web and our cryptocurrency is VIAT; together they form what we call a nexus.
The Nexus has its own Domain System, Messaging System, Real-time events, design, data transport network protocol, language, browser, cryptocurrency, and many other unique components. It's a cohesive system rather than a bunch of independent technologies retrofitted to work with each other or layering one thing on top of the next similar to the Web today or what most call "Web3".
-
Goals
-
The objective of the Universal Web is to create a viable modern replacement for the Web today.
+
OBJECTIVES
+
The primary directive of the Universal Web is to create a viable post quantum replacement for the Web today. The primary objective for VIAT is to create the best post quantum cryptocurrency with the highest TPS possible. Both are viable objectives achieved with software no hardware needed.
+
Post Quantum World
+
The Universal Web and VIAT are designed to be resilient against the potential threats posed by quantum computing. This means implementing cryptographic algorithms that are secure against quantum attacks, ensuring the integrity and confidentiality of user data and transactions. VIAT & the UW could be used as a tool to help protect other none quantum cryptocurrencies and or provide users the ability to later prove they were the original owner of a legacy wallet, contract, NFT, and or other digital assets. This means that BTC holders could use VIAT to protect their BTC wallets and in the event the BTC team needs a viable fast off ramp to either transition BTC/ETH to their own hybrid post quantum fork or to transition to run on VIAT. VIAT has a tri-algo key pair with 1 classical key pair and two post quantum key pairs that rely on different primitives. This triplet hybrid algorithm provides robust assurances in different scenarios where one or two algorithms fail.
Is it Web3?
Depends on your definition.
If Web3 means ALL websites/apps are on a network like IPFS, users/services must use a smart contract to interact with sites, paying a TX fee just to post a social media update, using decentralized DNS with limited abilities (ex: ETH domains), then we have a very different definition. That version of the Web would be a major downgrade that removes key beneficial aspects of the Web while also not addressing any of the real issues. Any Web replacement must not introduce delays for any actions when a client is interacting with a server. If a user must use a smart contract to post on a site or make profile edits it adds significant delays and costs to otherwise trivial actions. If an action must first go through mining, verification, and propagation it's inherently slower than a modern cost free client-server API request. Regardless of optimization generally the typical client-server API request will require less time, data, and processing. Thinking about this logically we know the shortest distance is between two points therefore adding more points will always be slower. What this means is that we need to improve and include the World Wide Web's client-server model in the solution not disregard it.
@@ -106,10 +112,122 @@
BROAD CODE OBJECTIVES
Want to contribute? Then join the Imperium today!
To help submit, write content, make art, write code, and or star this repo! All are welcome to the Nexus.
-
COPYRIGHT © 2025 UNIVERSAL WEB
+
COPYRIGHT © 2025 VIAT, UNIVERSAL WEB , THE NEXUS
THE UNITED SYSTEMS of NEXUS
-
MADE IN AMERICA
+
MADE IN AMERICA 🇺🇸
+
+
+
-
-
-
\ No newline at end of file
+
diff --git a/docs/library/universalWeb/domains/domainRecordSites.md b/docs/library/universalWeb/domains/domainRecordSites.md
new file mode 100644
index 00000000..d5550319
--- /dev/null
+++ b/docs/library/universalWeb/domains/domainRecordSites.md
@@ -0,0 +1,12 @@
+# DOMAIN RECORD APP [DRA] (DIS Apps)
+
+[AKA Domain Certificate Apps, Domain Record Website]
+Domain record sites are sites that exist partially or fully within a DIS certificate.
+Websites, Apps, and or games can be stored in a BINARY FORMAT, SCRIPT, MARKDOWN, UTF8, HTML or other formats.
+The BINARY FORMAT would require a specific structured object. The object can store resources, app logic, and specific instructions.
+This approach eliminates the need to host a website separately, allowing reliance on the Domain Information System (an evolution of DNS).
+Domain certificates are cached and can use checksums to verify if a new version is available.
+Using VIAT as a distributed decentralized storage mechanism along with the DIS means on-chain apps can be fast and efficient.
+Due to the security of the DIS and domain certificates (that are first self-signed) users can operate on the highest possible guarantee.
+This helps to eliminate global bandwidth.
+The UW comes with commonly used resources such as design libraries, icons, and JS libraries meaning DRAs can include them with no additional cost.
diff --git a/docs/library/universalWeb/howAreURLParametersHandled.md b/docs/library/universalWeb/howAreURLParametersHandled.md
index 25eec1ad..07fe5961 100644
--- a/docs/library/universalWeb/howAreURLParametersHandled.md
+++ b/docs/library/universalWeb/howAreURLParametersHandled.md
@@ -1,6 +1,6 @@
# How are URL parameters handled compared to HTTP? EXPERIMENTAL NOT FINAL
-Instead of URL paramaters being part of the Request-line they are turned into an structured object with binary support.
+Instead of URL parameters being part of the Request-line they are turned into an structured object with binary support.
This enables: the ability for complex URL parameter requests, request are safer, no need to sanative, doesn't require URL encoding went sent, doesn't require URL decoding, less client side code, less server side code, less code complexity, easier to type, can support binary parameters, and are easier to understand.
The Universal Web has a unique URL & URL parameter structure for the UW which enables more complex written URLs using a sort of JSON or structured object syntax which if done through a script could include binary data as well.
diff --git a/examples/viat.js b/examples/viat.js
index 91aa32f5..436f18a2 100644
--- a/examples/viat.js
+++ b/examples/viat.js
@@ -1,3 +1,12 @@
+// Viat FileSystem creation
+// Genesis Block
+// Give amount to main wallet
+// Generate two wallets in the Viat network.
+// Two wallets interact and send each other some amount of VIAT.
import { Wallet, wallet } from '#viat/index';
-const myWallet = await wallet();
-console.log('WALLET', myWallet);
+const amy = await wallet();
+const mitzi = await wallet();
+console.log('WALLET', amy, mitzi);
+const mitziAddress = await mitzi.getAddress();
+console.log('MITZI ADDRESS', mitziAddress);
+amy.send(1n, mitziAddress);
diff --git a/package.json b/package.json
index 7a3026b2..cc5c2574 100644
--- a/package.json
+++ b/package.json
@@ -16,9 +16,9 @@
"dependencies": {
"@cldmv/sizeofvar": "^1.0.4",
"@noble/ciphers": "^1.3.0",
- "@noble/ed25519": "^2.2.3",
+ "@noble/ed25519": "^2.3.0",
"@noble/hashes": "^1.8.0",
- "@universalweb/acid": "^3.0.74",
+ "@universalweb/Acid": "^3.0.77",
"cbor-x": "^1.6.0",
"commander": "^14.0.0",
"directory-tree": "^3.5.2",
@@ -26,9 +26,10 @@
"fs-extra": "^11.3.0",
"hash-wasm": "^4.12.0",
"ip": "^2.0.1",
+ "joi": "^17.13.3",
"keychain": "^1.5.0",
"libsodium-wrappers": "^0.7.15",
- "mongoose": "^8.15.0",
+ "mongoose": "^8.16.0",
"node-seal": "^5.1.6",
"node-watch": "^0.7.4",
"nodemon": "^3.1.10",
@@ -36,7 +37,7 @@
"pqclean": "latest",
"qrcode": "^1.5.4",
"signale": "^1.4.0",
- "sodium-native": "^5.0.4"
+ "sodium-native": "^5.0.6"
},
"description": "UW & VIAT modules: Client, Server, VIAT, DIS, Browser, Crypto, Wallets, Modules, & certificates.",
"engines": {
@@ -117,19 +118,19 @@
},
"version": "3.0.7",
"devDependencies": {
- "@babel/core": "^7.27.1",
- "@babel/eslint-parser": "^7.27.1",
+ "@babel/core": "^7.27.4",
+ "@babel/eslint-parser": "^7.27.5",
"@babel/preset-env": "^7.27.2",
- "@stylistic/eslint-plugin": "^4.2.0",
+ "@stylistic/eslint-plugin": "^4.4.1",
"auto-changelog": "^2.5.0",
- "axios": "^1.9.0",
+ "axios": "^1.10.0",
"benchmark": "^2.1.4",
- "daisyui": "^5.0.37",
- "eslint": "^9.27.0",
- "eslint-plugin-jsdoc": "^50.6.17",
- "globals": "^16.1.0",
- "tailwindcss": "^4.1.7",
- "textlint": "^14.7.2"
+ "daisyui": "^5.0.43",
+ "eslint": "^9.29.0",
+ "eslint-plugin-jsdoc": "^51.1.2",
+ "globals": "^16.2.0",
+ "tailwindcss": "^4.1.10",
+ "textlint": "^14.8.4"
},
"pnpm": {
"overrides": {
@@ -150,5 +151,5 @@
"node-seal"
]
},
- "packageManager": "pnpm@10.10.0"
+ "packageManager": "pnpm@10.11.0"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b669e5f6..31c06fbc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,14 +20,14 @@ importers:
specifier: ^1.3.0
version: 1.3.0
'@noble/ed25519':
- specifier: ^2.2.3
- version: 2.2.3
+ specifier: ^2.3.0
+ version: 2.3.0
'@noble/hashes':
specifier: ^1.8.0
version: 1.8.0
- '@universalweb/acid':
- specifier: ^3.0.74
- version: 3.0.74
+ '@universalweb/Acid':
+ specifier: ^3.0.77
+ version: '@universalweb/acid@3.0.77'
cbor-x:
specifier: ^1.6.0
version: 1.6.0
@@ -39,7 +39,7 @@ importers:
version: 3.5.2
electron:
specifier: latest
- version: 36.3.0
+ version: 36.5.0
fs-extra:
specifier: ^11.3.0
version: 11.3.0
@@ -49,6 +49,9 @@ importers:
ip:
specifier: ^2.0.1
version: 2.0.1
+ joi:
+ specifier: ^17.13.3
+ version: 17.13.3
keychain:
specifier: ^1.5.0
version: 1.5.0
@@ -56,8 +59,8 @@ importers:
specifier: ^0.7.15
version: 0.7.15
mongoose:
- specifier: ^8.15.0
- version: 8.15.0
+ specifier: ^8.16.0
+ version: 8.16.0
node-seal:
specifier: ^5.1.6
version: 5.1.6
@@ -80,48 +83,48 @@ importers:
specifier: ^1.4.0
version: 1.4.0
sodium-native:
- specifier: ^5.0.4
- version: 5.0.4
+ specifier: ^5.0.6
+ version: 5.0.6
devDependencies:
'@babel/core':
- specifier: ^7.27.1
- version: 7.27.1
+ specifier: ^7.27.4
+ version: 7.27.4
'@babel/eslint-parser':
- specifier: ^7.27.1
- version: 7.27.1(@babel/core@7.27.1)(eslint@9.27.0)
+ specifier: ^7.27.5
+ version: 7.27.5(@babel/core@7.27.4)(eslint@9.29.0)
'@babel/preset-env':
specifier: ^7.27.2
- version: 7.27.2(@babel/core@7.27.1)
+ version: 7.27.2(@babel/core@7.27.4)
'@stylistic/eslint-plugin':
- specifier: ^4.2.0
- version: 4.2.0(eslint@9.27.0)(typescript@5.8.2)
+ specifier: ^4.4.1
+ version: 4.4.1(eslint@9.29.0)(typescript@5.8.2)
auto-changelog:
specifier: ^2.5.0
version: 2.5.0
axios:
- specifier: ^1.9.0
- version: 1.9.0
+ specifier: ^1.10.0
+ version: 1.10.0
benchmark:
specifier: ^2.1.4
version: 2.1.4
daisyui:
- specifier: ^5.0.37
- version: 5.0.37
+ specifier: ^5.0.43
+ version: 5.0.43
eslint:
- specifier: ^9.27.0
- version: 9.27.0
+ specifier: ^9.29.0
+ version: 9.29.0
eslint-plugin-jsdoc:
- specifier: ^50.6.17
- version: 50.6.17(eslint@9.27.0)
+ specifier: ^51.1.2
+ version: 51.1.2(eslint@9.29.0)
globals:
- specifier: ^16.1.0
- version: 16.1.0
+ specifier: ^16.2.0
+ version: 16.2.0
tailwindcss:
- specifier: ^4.1.7
- version: 4.1.7
+ specifier: ^4.1.10
+ version: 4.1.10
textlint:
- specifier: ^14.7.2
- version: 14.7.2
+ specifier: ^14.8.4
+ version: 14.8.4
packages:
@@ -139,27 +142,27 @@ packages:
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
- '@babel/compat-data@7.27.2':
- resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==}
+ '@babel/compat-data@7.27.5':
+ resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.27.1':
- resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==}
+ '@babel/core@7.27.4':
+ resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==}
engines: {node: '>=6.9.0'}
- '@babel/eslint-parser@7.27.1':
- resolution: {integrity: sha512-q8rjOuadH0V6Zo4XLMkJ3RMQ9MSBqwaDByyYB0izsYdaIWGNLmEblbCOf1vyFHICcg16CD7Fsi51vcQnYxmt6Q==}
+ '@babel/eslint-parser@7.27.5':
+ resolution: {integrity: sha512-HLkYQfRICudzcOtjGwkPvGc5nF1b4ljLZh1IRDj50lRZ718NAKVgQpIAUX8bfg6u/yuSKY3L7E0YzIV+OxrB8Q==}
engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
peerDependencies:
'@babel/core': ^7.11.0
eslint: ^7.5.0 || ^8.0.0 || ^9.0.0
- '@babel/generator@7.27.1':
- resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==}
+ '@babel/generator@7.27.5':
+ resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-annotate-as-pure@7.27.1':
- resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==}
+ '@babel/helper-annotate-as-pure@7.27.3':
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.27.2':
@@ -191,8 +194,8 @@ packages:
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
engines: {node: '>=6.9.0'}
- '@babel/helper-module-transforms@7.27.1':
- resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==}
+ '@babel/helper-module-transforms@7.27.3':
+ resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
@@ -237,12 +240,12 @@ packages:
resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==}
engines: {node: '>=6.9.0'}
- '@babel/helpers@7.27.1':
- resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==}
+ '@babel/helpers@7.27.6':
+ resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.27.2':
- resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==}
+ '@babel/parser@7.27.5':
+ resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -324,8 +327,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-block-scoping@7.27.1':
- resolution: {integrity: sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==}
+ '@babel/plugin-transform-block-scoping@7.27.5':
+ resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -354,8 +357,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-destructuring@7.27.1':
- resolution: {integrity: sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==}
+ '@babel/plugin-transform-destructuring@7.27.3':
+ resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -480,8 +483,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-object-rest-spread@7.27.2':
- resolution: {integrity: sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==}
+ '@babel/plugin-transform-object-rest-spread@7.27.3':
+ resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -528,8 +531,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-regenerator@7.27.1':
- resolution: {integrity: sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==}
+ '@babel/plugin-transform-regenerator@7.27.5':
+ resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -615,12 +618,12 @@ packages:
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.27.1':
- resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==}
+ '@babel/traverse@7.27.4':
+ resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.27.1':
- resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
+ '@babel/types@7.27.6':
+ resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==}
engines: {node: '>=6.9.0'}
'@cbor-extract/cbor-extract-darwin-arm64@2.2.0':
@@ -656,13 +659,13 @@ packages:
'@cldmv/sizeofvar@1.0.4':
resolution: {integrity: sha512-Nq8Ny/ZBfWDOZIxWngqu4IApgv0qsjP7S/PkMQgdNUkrSBy/jEPAsjvvu0GdwJ12OJE6hUp6k0idSgSFQ1aLKQ==}
- '@electron/get@4.0.0':
- resolution: {integrity: sha512-IT42k1GIg1bhJ5RHXdKR/ExquWdQN6eU7WU6tJMnAYFLbsg0Q98GJ7kEyOONyFqE8p8Pky0hhYfmuo3Go8cxIA==}
+ '@electron/get@4.0.1':
+ resolution: {integrity: sha512-fTMFb/ZiK6xQace5YZlhT+vNR08ogat9SqpvwpaC9vD6hgx7ouz9cdcrSrFuNji4823Jmmy90/CDhJq0I4vRFA==}
engines: {node: '>=22.12.0'}
- '@es-joy/jsdoccomment@0.50.2':
- resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==}
- engines: {node: '>=18'}
+ '@es-joy/jsdoccomment@0.52.0':
+ resolution: {integrity: sha512-BXuN7BII+8AyNtn57euU2Yxo9yA/KUDNzrpXyi3pfqKmBhhysR6ZWOebFh3vyPoqA3/j1SOvGgucElMGwlXing==}
+ engines: {node: '>=20.11.0'}
'@eslint-community/eslint-utils@4.7.0':
resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
@@ -674,34 +677,44 @@ packages:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/config-array@0.20.0':
- resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==}
+ '@eslint/config-array@0.20.1':
+ resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-helpers@0.2.2':
- resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==}
+ '@eslint/config-helpers@0.2.3':
+ resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@0.14.0':
resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/core@0.15.0':
+ resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@eslint/eslintrc@3.3.1':
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.27.0':
- resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==}
+ '@eslint/js@9.29.0':
+ resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.6':
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/plugin-kit@0.3.1':
- resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==}
+ '@eslint/plugin-kit@0.3.2':
+ resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -747,8 +760,12 @@ packages:
'@keyv/serialize@1.0.3':
resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==}
- '@mongodb-js/saslprep@1.2.2':
- resolution: {integrity: sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==}
+ '@modelcontextprotocol/sdk@1.13.0':
+ resolution: {integrity: sha512-P5FZsXU0kY881F6Hbk9GhsYx02/KgWK1DYf7/tyE/1lcFKhDYPQR9iYjhQXJn+Sg6hQleMo3DB7h7+p4wgp2Lw==}
+ engines: {node: '>=18'}
+
+ '@mongodb-js/saslprep@1.3.0':
+ resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==}
'@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
@@ -757,8 +774,8 @@ packages:
resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==}
engines: {node: ^14.21.3 || >=16}
- '@noble/ed25519@2.2.3':
- resolution: {integrity: sha512-iHV8eI2mRcUmOx159QNrU8vTpQ/Xm70yJ2cTk3Trc86++02usfqFoNl6x0p3JN81ZDS/1gx6xiK0OwrgqCT43g==}
+ '@noble/ed25519@2.3.0':
+ resolution: {integrity: sha512-M7dvXL2B92/M7dw9+gzuydL8qn/jiqNHaoR3Q+cb1q1GHV7uwE17WCyFMG+Y+TZb5izcaXk5TdJRrDUxHXL78A==}
'@noble/hashes@1.8.0':
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
@@ -783,12 +800,21 @@ packages:
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
- '@sindresorhus/is@7.0.1':
- resolution: {integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==}
+ '@sideway/address@4.1.5':
+ resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
+
+ '@sideway/formula@3.0.1':
+ resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+
+ '@sideway/pinpoint@2.0.0':
+ resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+
+ '@sindresorhus/is@7.0.2':
+ resolution: {integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==}
engines: {node: '>=18'}
- '@stylistic/eslint-plugin@4.2.0':
- resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==}
+ '@stylistic/eslint-plugin@4.4.1':
+ resolution: {integrity: sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=9.0.0'
@@ -797,59 +823,59 @@ packages:
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
engines: {node: '>=14.16'}
- '@textlint/ast-node-types@14.7.2':
- resolution: {integrity: sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==}
+ '@textlint/ast-node-types@14.8.4':
+ resolution: {integrity: sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==}
- '@textlint/ast-tester@14.7.2':
- resolution: {integrity: sha512-nlS1xJkIgyBinOx9zlMTU7e+06G8k6Xg8QBBeB+8oiY2UD4XKNHv0A3kOtW30DKtHcw1onZku00gI2ep1er77w==}
+ '@textlint/ast-tester@14.8.4':
+ resolution: {integrity: sha512-j6YKPuEaASeXQ2Y/ode993r4A8ugdGEFnPhp96HVGjNVoAsandlR/L0WEMDG1FdIJj3W9+9rlcikXhFQSFc0lA==}
- '@textlint/ast-traverse@14.7.2':
- resolution: {integrity: sha512-H2pH4NhxBO4nHf9bpEn1v5MZ3E1fKFyrGP3uminXWSqnz+ZEX3fVGYde8EyTdLXpwntUjBg67HBVM4EyTKuhTg==}
+ '@textlint/ast-traverse@14.8.4':
+ resolution: {integrity: sha512-bnmgt0dB5RxBhRXQnaTd6wblfuv+cRWrGuyMp6CIuPTyWXyA5AO3NhqQYjQLCbrPDByiwbHAQwIZYOw6sVvn9Q==}
- '@textlint/config-loader@14.7.2':
- resolution: {integrity: sha512-06Fqpe36ur7I+SZTtqZbJbsIbbu8uilJuiQG5t+7NIRPNo/d0TrioaMN2Ru/Yr+hq4eSJu+roZ20FNWHMEJb1Q==}
+ '@textlint/config-loader@14.8.4':
+ resolution: {integrity: sha512-TWIfYkGIl6zZz4GJWQVrWurK25YG0j0Br/Jexn2EAh7sun5wDsb7hHK1Y2aWHIAeWHOn5D2C0OdHT3jH8YToGA==}
- '@textlint/feature-flag@14.7.2':
- resolution: {integrity: sha512-zfNbBZVrwgDJ4xTWe2FyL/vLvbfw1kTdPRStkFp1tu7I0ypsfwaMh41XZX8rbRqQ5x4p06rLexuOLig9HySyZg==}
+ '@textlint/feature-flag@14.8.4':
+ resolution: {integrity: sha512-bI1HpZtArzgmbPsMubKe3AYLIOYPOqHJ8R8JlhSuduszVd6gFsyptmMTHdI+1gWRTo1Dv9LRGEmI9W9rAV7Dmg==}
- '@textlint/fixer-formatter@14.7.2':
- resolution: {integrity: sha512-KISSckKJD1JAHLy57D+EWRscp/GV7XM/nzPxRARpooIJyGlFNvg/VDkGDzU2ZitH63IduI5qdBxKzvbgk4OgdQ==}
+ '@textlint/fixer-formatter@14.8.4':
+ resolution: {integrity: sha512-lpEaVF1iUBL4d+X04BIus7ubiPk5PeRmriFosxoCKT9RqJFXMnC6ApBGpWX5fLBTRK9XNesOpP0c+tXprOAPdw==}
- '@textlint/kernel@14.7.2':
- resolution: {integrity: sha512-sb2npadp7rsnrVvwv4Ia13/HcwZtVZnY04cJYnDOS6R4TthnYRyP55WF7ftB8GX1bw7FIY/NPvJN/UuWTKQ8XA==}
+ '@textlint/kernel@14.8.4':
+ resolution: {integrity: sha512-fBk8Lm4Ph7ogvqpSpRFiB0NM/rQVWOnOMLSJqZsdyvA40IVeZZYs+2bM1WgVdAZLUQTHSzKMExsHu2c91YVpKw==}
- '@textlint/linter-formatter@14.7.2':
- resolution: {integrity: sha512-QZOqft5uK+o/UN8UcEF3cHgfbG1r3+OWqlJojyjGNkEBbBNPSyDfYlVxDjHqnOAwm7jBaeqVGlwvw/7PUFmsmw==}
+ '@textlint/linter-formatter@14.8.4':
+ resolution: {integrity: sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==}
- '@textlint/markdown-to-ast@14.7.2':
- resolution: {integrity: sha512-gfOQaBFoFVTj/9rzhEjnJonWZwWjM1RLmaO4J7GHIOFBAo/qr/EJRO3QijQWaAJFoH8xd/3cpUCEzpRwhwkeoA==}
+ '@textlint/markdown-to-ast@14.8.4':
+ resolution: {integrity: sha512-9x7xqpk//79nREP4Hb219UG3N3lERNorlhXOl1XX4A0y8BcDAKKDv70WftkF9VZ+sx4ys4dv/iOsBA29I0nNQA==}
- '@textlint/module-interop@14.7.2':
- resolution: {integrity: sha512-rDQhFERa2+xMqhyrPFvAL9d5Tb4RpQGKQExwrezvtCTREh6Zsp/nKxtK0r6o0P9xn1+zq2sZHW9NZjpe7av3xw==}
+ '@textlint/module-interop@14.8.4':
+ resolution: {integrity: sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==}
- '@textlint/resolver@14.7.2':
- resolution: {integrity: sha512-FCZa9XJx5KihK/4gxXLhS/KfOnBD6vD5UxAMtgrvbifn+JFrW9Kh17uZLCcuJDDJJCnZOHq8jdT7AU+rpmJZ+w==}
+ '@textlint/resolver@14.8.4':
+ resolution: {integrity: sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==}
- '@textlint/source-code-fixer@14.7.2':
- resolution: {integrity: sha512-1aWxLIzUIYq9pnrHx7NT7huNbdMONBGORrxYNFC6yIAlSjPo4j44yZabaOMTxjGTPMOvFTUVl2gXTUYqygBGOA==}
+ '@textlint/source-code-fixer@14.8.4':
+ resolution: {integrity: sha512-/BTSLTgpRqrgwqB2Jmu/sRMEgB3sn9dxhDRmSX4hFFbtD2wT8/d4TcxD7rTe3NdWAPCCHQ8xCBUHDuZrTqDA4w==}
- '@textlint/text-to-ast@14.7.2':
- resolution: {integrity: sha512-8+4WvYnaDR0F7gDszhs9iCQp5kbbEQ9itbvQHcFDhHi4XCDksWdrQz6XJ+Kw/zbLUEz9QtvoXZ1VjZRiwgtTIg==}
+ '@textlint/text-to-ast@14.8.4':
+ resolution: {integrity: sha512-BWWEM12WqWUKmI9BQvnjtu4CElExWhm1asPE3j//jFTyR6oLv14NaFUaR26xGJWAI28WIa293AmWfE60ygHdRA==}
- '@textlint/textlint-plugin-markdown@14.7.2':
- resolution: {integrity: sha512-s6CR68bK9Y/+c0jvM+9oDT5LgvgRbP2A8IzPwuGVhqwFQBJmrSdG4KvBN4ycsq+h3EACTCeyv9bN9no0td9vgw==}
+ '@textlint/textlint-plugin-markdown@14.8.4':
+ resolution: {integrity: sha512-WWFo05mIsXaJPrWiR/nsvaLd/nUS0xWWeJg6AcpOkrxyIqH//PyTuQHD9sYpJkCFopWP1/8GeCba+a/m2llX4g==}
- '@textlint/textlint-plugin-text@14.7.2':
- resolution: {integrity: sha512-ZtO/i4cZ+y9j7KqsP8P3cbj/XpUDMyedkV+fQP8DkJb238vJ/EUrW8wBwvIq0BmGe7DKIgIl3WeFp8AKxNw7aw==}
+ '@textlint/textlint-plugin-text@14.8.4':
+ resolution: {integrity: sha512-FY7H9a2I07/DzQtouQK9/Fs+9fgMAw5xQvHgAiqOffGU/i8WvWnsywflciW/IRi/By1TCd5nhdN/YRBvzuvfnw==}
- '@textlint/types@14.7.2':
- resolution: {integrity: sha512-VpsmtJf9+7cnIxmKtAVVGVzI6f2k09kBZnzjdTAO8JZ+HTmV46jeoVrotpSfQbWDpuQk2UFPfrsZL/LNf/99ew==}
+ '@textlint/types@14.8.4':
+ resolution: {integrity: sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==}
- '@textlint/utils@14.7.2':
- resolution: {integrity: sha512-NMLtiALWVYtl/zqRB0GIw3CJLNSV5bq8u35v1qaJOLrWhBVxOkbWISItHhQGndCalHTt8uYkntHXYKpk0oSPtQ==}
+ '@textlint/utils@14.8.4':
+ resolution: {integrity: sha512-ByRbUBtxhvZoI43CJJCy0oVPwpvB4/r8FhH33QguW9DSVk33y8ful5YIhV8ziSGjNJbwxGhe3rqR8YBmUkrnsQ==}
- '@types/estree@1.0.7':
- resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
'@types/http-cache-semantics@4.0.4':
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
@@ -860,8 +886,8 @@ packages:
'@types/mdast@3.0.15':
resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
- '@types/node@22.15.21':
- resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==}
+ '@types/node@22.15.32':
+ resolution: {integrity: sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==}
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -875,42 +901,58 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/scope-manager@8.32.1':
- resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==}
+ '@typescript-eslint/project-service@8.34.1':
+ resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <5.9.0'
+
+ '@typescript-eslint/scope-manager@8.34.1':
+ resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/tsconfig-utils@8.34.1':
+ resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/types@8.32.1':
- resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==}
+ '@typescript-eslint/types@8.34.1':
+ resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.32.1':
- resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==}
+ '@typescript-eslint/typescript-estree@8.34.1':
+ resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/utils@8.32.1':
- resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==}
+ '@typescript-eslint/utils@8.34.1':
+ resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/visitor-keys@8.32.1':
- resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==}
+ '@typescript-eslint/visitor-keys@8.34.1':
+ resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@universalweb/acid@3.0.74':
- resolution: {integrity: sha512-XC4S5UFaji4PRlUJSB5BzSXokqAAFoqojRuBjraICFpEfOMevRguIqWCwUsGuvCcTbbBDrFgWny7ogm4PxS8vg==}
+ '@universalweb/acid@3.0.77':
+ resolution: {integrity: sha512-krXfYv2U6GYD+QUN9GUDiQjUjkWfEY2dDshwkbvtm7qKLlN7VfHmiZVW7YYjaHtPRJ2IqiXTLUTEVVC2rgavyA==, tarball: https://npm.pkg.github.com/download/@universalweb/acid/3.0.77/08ed90a0acd09ae60b3b58ba354f32ea5bd6e74b}
hasBin: true
+ accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn@8.14.1:
- resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -974,8 +1016,8 @@ packages:
engines: {node: '>=8.3'}
hasBin: true
- axios@1.9.0:
- resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
+ axios@1.10.0:
+ resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==}
babel-plugin-polyfill-corejs2@0.4.13:
resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==}
@@ -1040,6 +1082,10 @@ packages:
bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+ body-parser@2.2.0:
+ resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
+ engines: {node: '>=18'}
+
boolean@3.2.0:
resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
@@ -1047,23 +1093,23 @@ packages:
boundary@2.0.0:
resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==}
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.24.5:
- resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==}
+ browserslist@4.25.0:
+ resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
- bson@6.10.3:
- resolution: {integrity: sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==}
+ bson@6.10.4:
+ resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==}
engines: {node: '>=16.20.1'}
buffer-crc32@0.2.13:
@@ -1072,6 +1118,10 @@ packages:
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
cacheable-lookup@7.0.0:
resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
engines: {node: '>=14.16'}
@@ -1080,13 +1130,17 @@ packages:
resolution: {integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==}
engines: {node: '>=18'}
- cacheable@1.9.0:
- resolution: {integrity: sha512-8D5htMCxPDUULux9gFzv30f04Xo3wCnik0oOxKoRTPIBoqA7HtOcJ87uBhQTs3jCfZZTrUBGsYIZOgE0ZRgMAg==}
+ cacheable@1.10.0:
+ resolution: {integrity: sha512-SSgQTAnhd7WlJXnGlIi4jJJOiHzgnM5wRMEPaXAU4kECTAMpBoYKoZ9i5zHmclIEZbxcu3j7yY/CF8DTmwIsHg==}
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -1095,8 +1149,8 @@ packages:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
- caniuse-lite@1.0.30001718:
- resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==}
+ caniuse-lite@1.0.30001724:
+ resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==}
cbor-extract@2.2.0:
resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==}
@@ -1175,11 +1229,31 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ content-disposition@1.0.0:
+ resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- core-js-compat@3.42.0:
- resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==}
+ cookie-signature@1.2.2:
+ resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
+ engines: {node: '>=6.6.0'}
+
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
+
+ core-js-compat@3.43.0:
+ resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==}
+
+ cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
@@ -1188,8 +1262,8 @@ packages:
crypt@0.0.2:
resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
- daisyui@5.0.37:
- resolution: {integrity: sha512-PLc+MhWAqTwolygEGPDi+ac+OsFqIt9nZylTIiyVlEx8loYL7Pt7hNWb8cp5pQQ9dhjYnda1ERiuM6OsJmvPGw==}
+ daisyui@5.0.43:
+ resolution: {integrity: sha512-2pshHJ73vetSpsbAyaOncGnNYL0mwvgseS1EWy1I9Qpw8D11OuBoDNIWrPIME4UFcq2xuff3A9x+eXbuFR9fUQ==}
debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
@@ -1231,6 +1305,10 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
detect-libc@2.0.4:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
@@ -1257,11 +1335,14 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- electron-to-chromium@1.5.155:
- resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==}
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron@36.3.0:
- resolution: {integrity: sha512-xk5AJtjxfFRAmehcChWSz/duxI+bJiUCIkH2IX2z8K1SyGsWdpqg+NoJ20JRQ6dpSJw89KXH6juESp8nSyBexA==}
+ electron-to-chromium@1.5.171:
+ resolution: {integrity: sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==}
+
+ electron@36.5.0:
+ resolution: {integrity: sha512-ouVtHbHDFsRBHPGx9G6RDm4ccPaSCmrrR8tbUGZuqbJhqIClVBkVMz94Spjihag2Zo1eHtYD+KevALrc/94g1g==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -1271,8 +1352,12 @@ packages:
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
- end-of-stream@1.4.4:
- resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
env-paths@3.0.0:
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
@@ -1304,6 +1389,9 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
@@ -1312,9 +1400,9 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-plugin-jsdoc@50.6.17:
- resolution: {integrity: sha512-hq+VQylhd12l8qjexyriDsejZhqiP33WgMTy2AmaGZ9+MrMWVqPECsM87GPxgHfQn0zw+YTuhqjUfk1f+q67aQ==}
- engines: {node: '>=18'}
+ eslint-plugin-jsdoc@51.1.2:
+ resolution: {integrity: sha512-xLg40KhRnlaOX6W+YLofVavGTajOUn6VCSoVC5eWKbsaMMM/aznFAqVXysuk76wSQZJMiBOfC4V6beseIk6eOg==}
+ engines: {node: '>=20.11.0'}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -1322,8 +1410,8 @@ packages:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
- eslint-scope@8.3.0:
- resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
+ eslint-scope@8.4.0:
+ resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@2.1.0:
@@ -1334,12 +1422,12 @@ packages:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- eslint-visitor-keys@4.2.0:
- resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
+ eslint-visitor-keys@4.2.1:
+ resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.27.0:
- resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==}
+ eslint@9.29.0:
+ resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -1348,8 +1436,8 @@ packages:
jiti:
optional: true
- espree@10.3.0:
- resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
+ espree@10.4.0:
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esprima@4.0.1:
@@ -1377,6 +1465,28 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ eventsource-parser@3.0.2:
+ resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==}
+ engines: {node: '>=18.0.0'}
+
+ eventsource@3.0.7:
+ resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
+ engines: {node: '>=18.0.0'}
+
+ express-rate-limit@7.5.1:
+ resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==}
+ engines: {node: '>= 16'}
+ peerDependencies:
+ express: '>= 4.11'
+
+ express@5.1.0:
+ resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
+ engines: {node: '>= 18'}
+
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -1417,8 +1527,8 @@ packages:
resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
engines: {node: '>=4'}
- file-entry-cache@10.1.0:
- resolution: {integrity: sha512-Et/ex6smi3wOOB+n5mek+Grf7P2AxZR5ueqRUvAAn4qkyatXi3cUC1cuQXVkX0VlzBVsN4BkWJFmY/fYiRTdww==}
+ file-entry-cache@10.1.1:
+ resolution: {integrity: sha512-zcmsHjg2B2zjuBgjdnB+9q0+cWcgWfykIcsDkWDB4GTPtl1eXUA+gTI6sO0u01AqK3cliHryTU55/b2Ow1hfZg==}
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
@@ -1431,6 +1541,10 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+ finalhandler@2.1.0:
+ resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
+ engines: {node: '>= 0.8'}
+
find-replace@3.0.0:
resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==}
engines: {node: '>=4.0.0'}
@@ -1451,8 +1565,8 @@ packages:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
- flat-cache@6.1.9:
- resolution: {integrity: sha512-DUqiKkTlAfhtl7g78IuwqYM+YqvT+as0mY+EVk6mfimy19U79pJCzDZQsnqk3Ou/T6hFXWLGbwbADzD/c8Tydg==}
+ flat-cache@6.1.10:
+ resolution: {integrity: sha512-B6/v1f0NwjxzmeOhzfXPGWpKBVA207LS7lehaVKQnFrVktcFRfkzjZZ2gwj2i1TkEUMQht7ZMJbABUT5N+V1Nw==}
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
@@ -1470,18 +1584,26 @@ packages:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
- form-data-encoder@4.0.2:
- resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==}
+ form-data-encoder@4.1.0:
+ resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==}
engines: {node: '>= 18'}
- form-data@4.0.2:
- resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ form-data@4.0.3:
+ resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==}
engines: {node: '>= 6'}
format@0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+
fs-extra@11.3.0:
resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==}
engines: {node: '>=14.14'}
@@ -1542,8 +1664,8 @@ packages:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
- globals@16.1.0:
- resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==}
+ globals@16.2.0:
+ resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==}
engines: {node: '>=18'}
globalthis@1.0.4:
@@ -1592,8 +1714,8 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- hookified@1.9.0:
- resolution: {integrity: sha512-2yEEGqphImtKIe1NXWEhu6yD3hlFR4Mxk4Mtp3XEyScpSt4pQ4ymmXA1zzxZpj99QkFK+nN0nzjeb2+RUi/6CQ==}
+ hookified@1.9.1:
+ resolution: {integrity: sha512-u3pxtGhKjcSXnGm1CX6aXS9xew535j3lkOCegbA6jdyh0BaAjTbXI4aslKstCr6zUNtoCxFGFKwjbSHdGrMB8g==}
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
@@ -1601,10 +1723,18 @@ packages:
http-cache-semantics@4.2.0:
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
http2-wrapper@2.2.1:
resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
engines: {node: '>=10.19.0'}
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
@@ -1631,9 +1761,16 @@ packages:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
ip@2.0.1:
resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==}
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
is-alphabetical@1.0.4:
resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
@@ -1684,6 +1821,9 @@ packages:
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
engines: {node: '>=8'}
+ is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+
is-stream@4.0.1:
resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
engines: {node: '>=18'}
@@ -1697,6 +1837,9 @@ packages:
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+ joi@17.13.3:
+ resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1758,8 +1901,8 @@ packages:
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
- keyv@5.3.3:
- resolution: {integrity: sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==}
+ keyv@5.3.4:
+ resolution: {integrity: sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==}
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
@@ -1866,9 +2009,17 @@ packages:
mdast-util-to-string@2.0.0:
resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
+ media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
+
memory-pager@1.5.0:
resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==}
+ merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
+
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -1908,10 +2059,18 @@ packages:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime-types@3.0.1:
+ resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
+ engines: {node: '>= 0.6'}
+
mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
@@ -1941,8 +2100,8 @@ packages:
mongodb-connection-string-url@3.0.2:
resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==}
- mongodb@6.16.0:
- resolution: {integrity: sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==}
+ mongodb@6.17.0:
+ resolution: {integrity: sha512-neerUzg/8U26cgruLysKEjJvoNSXhyID3RvzvdcpsIi2COYM3FS3o9nlH7fxFtefTb942dX3W9i37oPfCVj4wA==}
engines: {node: '>=16.20.1'}
peerDependencies:
'@aws-sdk/credential-providers': ^3.188.0
@@ -1968,8 +2127,8 @@ packages:
socks:
optional: true
- mongoose@8.15.0:
- resolution: {integrity: sha512-WFKsY1q12ScGabnZWUB9c/QzZmz/ESorrV27OembB7Gz6rrh9m3GA4Srsv1uvW1s9AHO5DeZ6DdUTyF9zyNERQ==}
+ mongoose@8.16.0:
+ resolution: {integrity: sha512-gLuAZsbwY0PHjrvfuXvUkUq9tXjyAjN3ioXph5Y6Seu7/Uo8xJaM+rrMbL/x34K4T3UTgtXRyfoq1YU16qKyIw==}
engines: {node: '>=16.20.1'}
mpath@0.9.0:
@@ -1986,6 +2145,10 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ negotiator@1.0.0:
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
+
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
@@ -1993,8 +2156,8 @@ packages:
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
engines: {node: '>= 10'}
- node-addon-api@8.3.1:
- resolution: {integrity: sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==}
+ node-addon-api@8.4.0:
+ resolution: {integrity: sha512-D9DI/gXHvVmjHS08SVch0Em8G5S1P+QWtU31appcKT/8wFSPRcdHadIFSAntdMMVM5zz+/DL+bL/gz3UDppqtg==}
engines: {node: ^18 || ^20 || >= 21}
node-fetch@2.7.0:
@@ -2032,14 +2195,26 @@ packages:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
- normalize-url@8.0.1:
- resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
+ normalize-url@8.0.2:
+ resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==}
engines: {node: '>=14.16'}
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -2115,6 +2290,10 @@ packages:
parse-statements@1.0.11:
resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==}
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
path-exists@3.0.0:
resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
engines: {node: '>=4'}
@@ -2137,6 +2316,10 @@ packages:
path-to-glob-pattern@2.0.1:
resolution: {integrity: sha512-tmciSlVyHnX0LC86+zSr+0LURw9rDPw8ilhXcmTpVUOnI6OsKdCzXQs5fTG10Bjz26IBdnKL3XIaP+QvGsk5YQ==}
+ path-to-regexp@8.2.0:
+ resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
+ engines: {node: '>=16'}
+
path-type@1.1.0:
resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==}
engines: {node: '>=0.10.0'}
@@ -2175,6 +2358,10 @@ packages:
resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
engines: {node: '>=0.10.0'}
+ pkce-challenge@5.0.0:
+ resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
+ engines: {node: '>=16.20.0'}
+
pkg-conf@2.1.0:
resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==}
engines: {node: '>=4'}
@@ -2200,14 +2387,18 @@ packages:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
pstree.remy@1.1.8:
resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
- pump@3.0.2:
- resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
+ pump@3.0.3:
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
@@ -2218,6 +2409,10 @@ packages:
engines: {node: '>=10.13.0'}
hasBin: true
+ qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -2225,6 +2420,14 @@ packages:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@3.0.0:
+ resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
+ engines: {node: '>= 0.8'}
+
rc-config-loader@4.1.3:
resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==}
@@ -2325,9 +2528,19 @@ packages:
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
engines: {node: '>=8.0'}
+ router@2.2.0:
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
+
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
semver-compare@1.0.0:
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
@@ -2344,13 +2557,24 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ send@1.2.0:
+ resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
+ engines: {node: '>= 18'}
+
serialize-error@7.0.1:
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
engines: {node: '>=10'}
+ serve-static@2.2.0:
+ resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
+ engines: {node: '>= 18'}
+
set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -2359,6 +2583,22 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
sift@17.1.3:
resolution: {integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==}
@@ -2378,8 +2618,8 @@ packages:
resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
engines: {node: '>=10'}
- sodium-native@5.0.4:
- resolution: {integrity: sha512-o/LIWIBVx8SIMFUiYuz60bZnFac88We3cEEPALmMTW1W0ewlnAMGE7GvvrcR9eSCpilFqKebVdn7t+WuvXPATQ==}
+ sodium-native@5.0.6:
+ resolution: {integrity: sha512-lKSVfjJ867gb3LrnOZ0nuVxZ19//k/YhhYKVWQg4fklZ85YKtDHTxmEuWuk/s62IoiDbKC/DV50pcSd9tgaVew==}
engines: {bare: '>=1.16.0'}
source-map@0.6.1:
@@ -2410,6 +2650,14 @@ packages:
sprintf-js@1.1.3:
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -2465,14 +2713,14 @@ packages:
resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
engines: {node: '>=10.0.0'}
- tailwindcss@4.1.7:
- resolution: {integrity: sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==}
+ tailwindcss@4.1.10:
+ resolution: {integrity: sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==}
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- textlint@14.7.2:
- resolution: {integrity: sha512-SRff/IHVonktwTMm0momjMZeh0WTPWbQR0S0NXHoU7MUwLM9e4VJeQvkq7V0d37GiM1WfXJSkbaTVidOhOE+0Q==}
+ textlint@14.8.4:
+ resolution: {integrity: sha512-oV7DwKjdbIk+5LlAhtTtWsudzNdUnEpP2KW2iIRnjdZ0uM/vXhffDh66UL6P3nk7Io37qhSRb3E82fdVHqyblw==}
engines: {node: '>=18.14.0'}
hasBin: true
@@ -2480,6 +2728,10 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
touch@3.1.1:
resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
hasBin: true
@@ -2512,6 +2764,10 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
+ type-is@2.0.1:
+ resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
+ engines: {node: '>= 0.6'}
+
typescript@5.8.2:
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
engines: {node: '>=14.17'}
@@ -2571,6 +2827,10 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
update-browserslist-db@1.1.3:
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
hasBin: true
@@ -2583,6 +2843,10 @@ packages:
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
vfile-message@2.0.4:
resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
@@ -2606,8 +2870,8 @@ packages:
which-module@2.0.1:
resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
- which-runtime@1.2.1:
- resolution: {integrity: sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==}
+ which-runtime@1.3.0:
+ resolution: {integrity: sha512-mQrEBUe15PdEuJvrBlvy3tika6sxQrkblI7JQ9kXeg8Lcby9FwmKvAYrCT3wLh91k6ltost7AVM7qYhjC8N0Zg==}
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
@@ -2661,6 +2925,14 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+ zod-to-json-schema@3.24.5:
+ resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==}
+ peerDependencies:
+ zod: ^3.24.1
+
+ zod@3.25.67:
+ resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==}
+
zwitch@1.0.5:
resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
@@ -2683,20 +2955,20 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/compat-data@7.27.2': {}
+ '@babel/compat-data@7.27.5': {}
- '@babel/core@7.27.1':
+ '@babel/core@7.27.4':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/code-frame': 7.27.1
- '@babel/generator': 7.27.1
+ '@babel/generator': 7.27.5
'@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
- '@babel/helpers': 7.27.1
- '@babel/parser': 7.27.2
+ '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
+ '@babel/helpers': 7.27.6
+ '@babel/parser': 7.27.5
'@babel/template': 7.27.2
- '@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.6
convert-source-map: 2.0.0
debug: 4.4.1(supports-color@5.5.0)
gensync: 1.0.0-beta.2
@@ -2705,57 +2977,57 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/eslint-parser@7.27.1(@babel/core@7.27.1)(eslint@9.27.0)':
+ '@babel/eslint-parser@7.27.5(@babel/core@7.27.4)(eslint@9.29.0)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
- eslint: 9.27.0
+ eslint: 9.29.0
eslint-visitor-keys: 2.1.0
semver: 6.3.1
- '@babel/generator@7.27.1':
+ '@babel/generator@7.27.5':
dependencies:
- '@babel/parser': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/parser': 7.27.5
+ '@babel/types': 7.27.6
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
jsesc: 3.1.0
- '@babel/helper-annotate-as-pure@7.27.1':
+ '@babel/helper-annotate-as-pure@7.27.3':
dependencies:
- '@babel/types': 7.27.1
+ '@babel/types': 7.27.6
'@babel/helper-compilation-targets@7.27.2':
dependencies:
- '@babel/compat-data': 7.27.2
+ '@babel/compat-data': 7.27.5
'@babel/helper-validator-option': 7.27.1
- browserslist: 4.24.5
+ browserslist: 4.25.0
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)':
+ '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-annotate-as-pure': 7.27.1
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-member-expression-to-functions': 7.27.1
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1)
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4)
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)':
+ '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-annotate-as-pure': 7.27.1
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
regexpu-core: 6.2.0
semver: 6.3.1
- '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)':
+ '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
debug: 4.4.1(supports-color@5.5.0)
@@ -2766,55 +3038,55 @@ snapshots:
'@babel/helper-member-expression-to-functions@7.27.1':
dependencies:
- '@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.6
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.27.1':
dependencies:
- '@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.6
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)':
+ '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-module-imports': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.27.1':
dependencies:
- '@babel/types': 7.27.1
+ '@babel/types': 7.27.6
'@babel/helper-plugin-utils@7.27.1': {}
- '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)':
+ '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-annotate-as-pure': 7.27.1
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-wrap-function': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)':
+ '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-member-expression-to-functions': 7.27.1
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
dependencies:
- '@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.6
transitivePeerDependencies:
- supports-color
@@ -2827,495 +3099,495 @@ snapshots:
'@babel/helper-wrap-function@7.27.1':
dependencies:
'@babel/template': 7.27.2
- '@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.6
transitivePeerDependencies:
- supports-color
- '@babel/helpers@7.27.1':
+ '@babel/helpers@7.27.6':
dependencies:
'@babel/template': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/types': 7.27.6
- '@babel/parser@7.27.2':
+ '@babel/parser@7.27.5':
dependencies:
- '@babel/types': 7.27.1
+ '@babel/types': 7.27.6
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1)
+ '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)':
+ '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
- '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)':
+ '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1)
- '@babel/traverse': 7.27.1
+ '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4)
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-module-imports': 7.27.1
'@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1)
+ '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-block-scoping@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-annotate-as-pure': 7.27.1
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1)
- '@babel/traverse': 7.27.1
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4)
+ '@babel/traverse': 7.27.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/template': 7.27.2
- '@babel/plugin-transform-destructuring@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.27.1
+ '@babel/traverse': 7.27.4
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-object-rest-spread@7.27.2(@babel/core@7.27.1)':
+ '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1)
+ '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4)
+ '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4)
- '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1)
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-annotate-as-pure': 7.27.1
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-regenerator@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.1)':
+ '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/preset-env@7.27.2(@babel/core@7.27.1)':
+ '@babel/preset-env@7.27.2(@babel/core@7.27.4)':
dependencies:
- '@babel/compat-data': 7.27.2
- '@babel/core': 7.27.1
+ '@babel/compat-data': 7.27.5
+ '@babel/core': 7.27.4
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-validator-option': 7.27.1
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)
- '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1)
- '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-block-scoping': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-object-rest-spread': 7.27.2(@babel/core@7.27.1)
- '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-regenerator': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.1)
- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1)
- babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1)
- babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1)
- babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1)
- core-js-compat: 3.42.0
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4)
+ '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.4)
+ '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4)
+ '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4)
+ '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-object-rest-spread': 7.27.3(@babel/core@7.27.4)
+ '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.27.4)
+ '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.4)
+ '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.4)
+ babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.4)
+ babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.4)
+ babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.4)
+ core-js-compat: 3.43.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)':
+ '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.4)':
dependencies:
- '@babel/core': 7.27.1
+ '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.27.6
esutils: 2.0.3
'@babel/template@7.27.2':
dependencies:
'@babel/code-frame': 7.27.1
- '@babel/parser': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/parser': 7.27.5
+ '@babel/types': 7.27.6
- '@babel/traverse@7.27.1':
+ '@babel/traverse@7.27.4':
dependencies:
'@babel/code-frame': 7.27.1
- '@babel/generator': 7.27.1
- '@babel/parser': 7.27.2
+ '@babel/generator': 7.27.5
+ '@babel/parser': 7.27.5
'@babel/template': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/types': 7.27.6
debug: 4.4.1(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- '@babel/types@7.27.1':
+ '@babel/types@7.27.6':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
@@ -3340,7 +3612,7 @@ snapshots:
'@cldmv/sizeofvar@1.0.4': {}
- '@electron/get@4.0.0':
+ '@electron/get@4.0.1':
dependencies:
debug: 4.4.1(supports-color@5.5.0)
env-paths: 3.0.0
@@ -3354,22 +3626,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@es-joy/jsdoccomment@0.50.2':
+ '@es-joy/jsdoccomment@0.52.0':
dependencies:
- '@types/estree': 1.0.7
- '@typescript-eslint/types': 8.32.1
+ '@types/estree': 1.0.8
+ '@typescript-eslint/types': 8.34.1
comment-parser: 1.4.1
esquery: 1.6.0
jsdoc-type-pratt-parser: 4.1.0
- '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)':
+ '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0)':
dependencies:
- eslint: 9.27.0
+ eslint: 9.29.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
- '@eslint/config-array@0.20.0':
+ '@eslint/config-array@0.20.1':
dependencies:
'@eslint/object-schema': 2.1.6
debug: 4.4.1(supports-color@5.5.0)
@@ -3377,17 +3649,21 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/config-helpers@0.2.2': {}
+ '@eslint/config-helpers@0.2.3': {}
'@eslint/core@0.14.0':
dependencies:
'@types/json-schema': 7.0.15
+ '@eslint/core@0.15.0':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
'@eslint/eslintrc@3.3.1':
dependencies:
ajv: 6.12.6
debug: 4.4.1(supports-color@5.5.0)
- espree: 10.3.0
+ espree: 10.4.0
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
@@ -3397,15 +3673,21 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.27.0': {}
+ '@eslint/js@9.29.0': {}
'@eslint/object-schema@2.1.6': {}
- '@eslint/plugin-kit@0.3.1':
+ '@eslint/plugin-kit@0.3.2':
dependencies:
- '@eslint/core': 0.14.0
+ '@eslint/core': 0.15.0
levn: 0.4.1
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.6':
@@ -3449,7 +3731,23 @@ snapshots:
dependencies:
buffer: 6.0.3
- '@mongodb-js/saslprep@1.2.2':
+ '@modelcontextprotocol/sdk@1.13.0':
+ dependencies:
+ ajv: 6.12.6
+ content-type: 1.0.5
+ cors: 2.8.5
+ cross-spawn: 7.0.6
+ eventsource: 3.0.7
+ express: 5.1.0
+ express-rate-limit: 7.5.1(express@5.1.0)
+ pkce-challenge: 5.0.0
+ raw-body: 3.0.0
+ zod: 3.25.67
+ zod-to-json-schema: 3.24.5(zod@3.25.67)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@mongodb-js/saslprep@1.3.0':
dependencies:
sparse-bitfield: 3.0.3
@@ -3459,7 +3757,7 @@ snapshots:
'@noble/ciphers@1.3.0': {}
- '@noble/ed25519@2.2.3': {}
+ '@noble/ed25519@2.3.0': {}
'@noble/hashes@1.8.0': {}
@@ -3480,14 +3778,22 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
- '@sindresorhus/is@7.0.1': {}
+ '@sideway/address@4.1.5':
+ dependencies:
+ '@hapi/hoek': 9.3.0
- '@stylistic/eslint-plugin@4.2.0(eslint@9.27.0)(typescript@5.8.2)':
+ '@sideway/formula@3.0.1': {}
+
+ '@sideway/pinpoint@2.0.0': {}
+
+ '@sindresorhus/is@7.0.2': {}
+
+ '@stylistic/eslint-plugin@4.4.1(eslint@9.29.0)(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.2)
- eslint: 9.27.0
- eslint-visitor-keys: 4.2.0
- espree: 10.3.0
+ '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.2)
+ eslint: 9.29.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
estraverse: 5.3.0
picomatch: 4.0.2
transitivePeerDependencies:
@@ -3498,38 +3804,38 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@textlint/ast-node-types@14.7.2': {}
+ '@textlint/ast-node-types@14.8.4': {}
- '@textlint/ast-tester@14.7.2':
+ '@textlint/ast-tester@14.8.4':
dependencies:
- '@textlint/ast-node-types': 14.7.2
+ '@textlint/ast-node-types': 14.8.4
debug: 4.4.1(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
- '@textlint/ast-traverse@14.7.2':
+ '@textlint/ast-traverse@14.8.4':
dependencies:
- '@textlint/ast-node-types': 14.7.2
+ '@textlint/ast-node-types': 14.8.4
- '@textlint/config-loader@14.7.2':
+ '@textlint/config-loader@14.8.4':
dependencies:
- '@textlint/kernel': 14.7.2
- '@textlint/module-interop': 14.7.2
- '@textlint/resolver': 14.7.2
- '@textlint/types': 14.7.2
- '@textlint/utils': 14.7.2
+ '@textlint/kernel': 14.8.4
+ '@textlint/module-interop': 14.8.4
+ '@textlint/resolver': 14.8.4
+ '@textlint/types': 14.8.4
+ '@textlint/utils': 14.8.4
debug: 4.4.1(supports-color@5.5.0)
rc-config-loader: 4.1.3
transitivePeerDependencies:
- supports-color
- '@textlint/feature-flag@14.7.2': {}
+ '@textlint/feature-flag@14.8.4': {}
- '@textlint/fixer-formatter@14.7.2':
+ '@textlint/fixer-formatter@14.8.4':
dependencies:
- '@textlint/module-interop': 14.7.2
- '@textlint/resolver': 14.7.2
- '@textlint/types': 14.7.2
+ '@textlint/module-interop': 14.8.4
+ '@textlint/resolver': 14.8.4
+ '@textlint/types': 14.8.4
chalk: 4.1.2
debug: 4.4.1(supports-color@5.5.0)
diff: 5.2.0
@@ -3539,28 +3845,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@textlint/kernel@14.7.2':
+ '@textlint/kernel@14.8.4':
dependencies:
- '@textlint/ast-node-types': 14.7.2
- '@textlint/ast-tester': 14.7.2
- '@textlint/ast-traverse': 14.7.2
- '@textlint/feature-flag': 14.7.2
- '@textlint/source-code-fixer': 14.7.2
- '@textlint/types': 14.7.2
- '@textlint/utils': 14.7.2
+ '@textlint/ast-node-types': 14.8.4
+ '@textlint/ast-tester': 14.8.4
+ '@textlint/ast-traverse': 14.8.4
+ '@textlint/feature-flag': 14.8.4
+ '@textlint/source-code-fixer': 14.8.4
+ '@textlint/types': 14.8.4
+ '@textlint/utils': 14.8.4
debug: 4.4.1(supports-color@5.5.0)
fast-equals: 4.0.3
structured-source: 4.0.0
transitivePeerDependencies:
- supports-color
- '@textlint/linter-formatter@14.7.2':
+ '@textlint/linter-formatter@14.8.4':
dependencies:
'@azu/format-text': 1.0.2
'@azu/style-format': 1.0.1
- '@textlint/module-interop': 14.7.2
- '@textlint/resolver': 14.7.2
- '@textlint/types': 14.7.2
+ '@textlint/module-interop': 14.8.4
+ '@textlint/resolver': 14.8.4
+ '@textlint/types': 14.8.4
chalk: 4.1.2
debug: 4.4.1(supports-color@5.5.0)
js-yaml: 3.14.1
@@ -3573,9 +3879,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@textlint/markdown-to-ast@14.7.2':
+ '@textlint/markdown-to-ast@14.8.4':
dependencies:
- '@textlint/ast-node-types': 14.7.2
+ '@textlint/ast-node-types': 14.8.4
debug: 4.4.1(supports-color@5.5.0)
mdast-util-gfm-autolink-literal: 0.1.3
neotraverse: 0.6.18
@@ -3583,42 +3889,45 @@ snapshots:
remark-frontmatter: 3.0.0
remark-gfm: 1.0.0
remark-parse: 9.0.0
+ structured-source: 4.0.0
unified: 9.2.2
transitivePeerDependencies:
- supports-color
- '@textlint/module-interop@14.7.2': {}
+ '@textlint/module-interop@14.8.4': {}
- '@textlint/resolver@14.7.2': {}
+ '@textlint/resolver@14.8.4': {}
- '@textlint/source-code-fixer@14.7.2':
+ '@textlint/source-code-fixer@14.8.4':
dependencies:
- '@textlint/types': 14.7.2
+ '@textlint/types': 14.8.4
debug: 4.4.1(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
- '@textlint/text-to-ast@14.7.2':
+ '@textlint/text-to-ast@14.8.4':
dependencies:
- '@textlint/ast-node-types': 14.7.2
+ '@textlint/ast-node-types': 14.8.4
- '@textlint/textlint-plugin-markdown@14.7.2':
+ '@textlint/textlint-plugin-markdown@14.8.4':
dependencies:
- '@textlint/markdown-to-ast': 14.7.2
+ '@textlint/markdown-to-ast': 14.8.4
+ '@textlint/types': 14.8.4
transitivePeerDependencies:
- supports-color
- '@textlint/textlint-plugin-text@14.7.2':
+ '@textlint/textlint-plugin-text@14.8.4':
dependencies:
- '@textlint/text-to-ast': 14.7.2
+ '@textlint/text-to-ast': 14.8.4
+ '@textlint/types': 14.8.4
- '@textlint/types@14.7.2':
+ '@textlint/types@14.8.4':
dependencies:
- '@textlint/ast-node-types': 14.7.2
+ '@textlint/ast-node-types': 14.8.4
- '@textlint/utils@14.7.2': {}
+ '@textlint/utils@14.8.4': {}
- '@types/estree@1.0.7': {}
+ '@types/estree@1.0.8': {}
'@types/http-cache-semantics@4.0.4': {}
@@ -3628,7 +3937,7 @@ snapshots:
dependencies:
'@types/unist': 2.0.11
- '@types/node@22.15.21':
+ '@types/node@22.15.32':
dependencies:
undici-types: 6.21.0
@@ -3642,20 +3951,35 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 22.15.21
+ '@types/node': 22.15.32
optional: true
- '@typescript-eslint/scope-manager@8.32.1':
+ '@typescript-eslint/project-service@8.34.1(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/types': 8.32.1
- '@typescript-eslint/visitor-keys': 8.32.1
+ '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.2)
+ '@typescript-eslint/types': 8.34.1
+ debug: 4.4.1(supports-color@5.5.0)
+ typescript: 5.8.2
+ transitivePeerDependencies:
+ - supports-color
- '@typescript-eslint/types@8.32.1': {}
+ '@typescript-eslint/scope-manager@8.34.1':
+ dependencies:
+ '@typescript-eslint/types': 8.34.1
+ '@typescript-eslint/visitor-keys': 8.34.1
- '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.2)':
+ '@typescript-eslint/tsconfig-utils@8.34.1(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/types': 8.32.1
- '@typescript-eslint/visitor-keys': 8.32.1
+ typescript: 5.8.2
+
+ '@typescript-eslint/types@8.34.1': {}
+
+ '@typescript-eslint/typescript-estree@8.34.1(typescript@5.8.2)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.34.1(typescript@5.8.2)
+ '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.2)
+ '@typescript-eslint/types': 8.34.1
+ '@typescript-eslint/visitor-keys': 8.34.1
debug: 4.4.1(supports-color@5.5.0)
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -3666,29 +3990,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.2)':
+ '@typescript-eslint/utils@8.34.1(eslint@9.29.0)(typescript@5.8.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0)
- '@typescript-eslint/scope-manager': 8.32.1
- '@typescript-eslint/types': 8.32.1
- '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.2)
- eslint: 9.27.0
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0)
+ '@typescript-eslint/scope-manager': 8.34.1
+ '@typescript-eslint/types': 8.34.1
+ '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.2)
+ eslint: 9.29.0
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.32.1':
+ '@typescript-eslint/visitor-keys@8.34.1':
dependencies:
- '@typescript-eslint/types': 8.32.1
- eslint-visitor-keys: 4.2.0
+ '@typescript-eslint/types': 8.34.1
+ eslint-visitor-keys: 4.2.1
+
+ '@universalweb/acid@3.0.77': {}
- '@universalweb/acid@3.0.74': {}
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.1
+ negotiator: 1.0.0
- acorn-jsx@5.3.2(acorn@8.14.1):
+ acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
- acorn: 8.14.1
+ acorn: 8.15.0
- acorn@8.14.1: {}
+ acorn@8.15.0: {}
ajv@6.12.6:
dependencies:
@@ -3750,35 +4079,35 @@ snapshots:
transitivePeerDependencies:
- encoding
- axios@1.9.0:
+ axios@1.10.0:
dependencies:
follow-redirects: 1.15.9
- form-data: 4.0.2
+ form-data: 4.0.3
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
- babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1):
+ babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.4):
dependencies:
- '@babel/compat-data': 7.27.2
- '@babel/core': 7.27.1
- '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1)
+ '@babel/compat-data': 7.27.5
+ '@babel/core': 7.27.4
+ '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1):
+ babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.4):
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1)
- core-js-compat: 3.42.0
+ '@babel/core': 7.27.4
+ '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4)
+ core-js-compat: 3.43.0
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.1):
+ babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.4):
dependencies:
- '@babel/core': 7.27.1
- '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1)
+ '@babel/core': 7.27.4
+ '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4)
transitivePeerDependencies:
- supports-color
@@ -3824,17 +4153,31 @@ snapshots:
dependencies:
file-uri-to-path: 1.0.0
+ body-parser@2.2.0:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 4.4.1(supports-color@5.5.0)
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 3.0.0
+ type-is: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
boolean@3.2.0:
optional: true
boundary@2.0.0: {}
- brace-expansion@1.1.11:
+ brace-expansion@1.1.12:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
- brace-expansion@2.0.1:
+ brace-expansion@2.0.2:
dependencies:
balanced-match: 1.0.2
@@ -3842,14 +4185,14 @@ snapshots:
dependencies:
fill-range: 7.1.1
- browserslist@4.24.5:
+ browserslist@4.25.0:
dependencies:
- caniuse-lite: 1.0.30001718
- electron-to-chromium: 1.5.155
+ caniuse-lite: 1.0.30001724
+ electron-to-chromium: 1.5.171
node-releases: 2.0.19
- update-browserslist-db: 1.1.3(browserslist@4.24.5)
+ update-browserslist-db: 1.1.3(browserslist@4.25.0)
- bson@6.10.3: {}
+ bson@6.10.4: {}
buffer-crc32@0.2.13: {}
@@ -3858,6 +4201,8 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
+ bytes@3.1.2: {}
+
cacheable-lookup@7.0.0: {}
cacheable-request@12.0.1:
@@ -3867,24 +4212,29 @@ snapshots:
http-cache-semantics: 4.2.0
keyv: 4.5.4
mimic-response: 4.0.0
- normalize-url: 8.0.1
+ normalize-url: 8.0.2
responselike: 3.0.0
- cacheable@1.9.0:
+ cacheable@1.10.0:
dependencies:
- hookified: 1.9.0
- keyv: 5.3.3
+ hookified: 1.9.1
+ keyv: 5.3.4
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
function-bind: 1.1.2
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
callsites@3.1.0: {}
camelcase@5.3.1: {}
- caniuse-lite@1.0.30001718: {}
+ caniuse-lite@1.0.30001724: {}
cbor-extract@2.2.0:
dependencies:
@@ -3979,11 +4329,26 @@ snapshots:
concat-map@0.0.1: {}
+ content-disposition@1.0.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
convert-source-map@2.0.0: {}
- core-js-compat@3.42.0:
+ cookie-signature@1.2.2: {}
+
+ cookie@0.7.2: {}
+
+ core-js-compat@3.43.0:
dependencies:
- browserslist: 4.24.5
+ browserslist: 4.25.0
+
+ cors@2.8.5:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
cross-spawn@7.0.6:
dependencies:
@@ -3993,7 +4358,7 @@ snapshots:
crypt@0.0.2: {}
- daisyui@5.0.37: {}
+ daisyui@5.0.43: {}
debug@4.4.1(supports-color@5.5.0):
dependencies:
@@ -4029,6 +4394,8 @@ snapshots:
delayed-stream@1.0.0: {}
+ depd@2.0.0: {}
+
detect-libc@2.0.4:
optional: true
@@ -4052,12 +4419,14 @@ snapshots:
eastasianwidth@0.2.0: {}
- electron-to-chromium@1.5.155: {}
+ ee-first@1.1.1: {}
- electron@36.3.0:
+ electron-to-chromium@1.5.171: {}
+
+ electron@36.5.0:
dependencies:
- '@electron/get': 4.0.0
- '@types/node': 22.15.21
+ '@electron/get': 4.0.1
+ '@types/node': 22.15.32
extract-zip: 2.0.1
transitivePeerDependencies:
- supports-color
@@ -4066,7 +4435,9 @@ snapshots:
emoji-regex@9.2.2: {}
- end-of-stream@1.4.4:
+ encodeurl@2.0.0: {}
+
+ end-of-stream@1.4.5:
dependencies:
once: 1.4.0
@@ -4096,19 +4467,21 @@ snapshots:
escalade@3.2.0: {}
+ escape-html@1.0.3: {}
+
escape-string-regexp@1.0.5: {}
escape-string-regexp@4.0.0: {}
- eslint-plugin-jsdoc@50.6.17(eslint@9.27.0):
+ eslint-plugin-jsdoc@51.1.2(eslint@9.29.0):
dependencies:
- '@es-joy/jsdoccomment': 0.50.2
+ '@es-joy/jsdoccomment': 0.52.0
are-docs-informative: 0.0.2
comment-parser: 1.4.1
debug: 4.4.1(supports-color@5.5.0)
escape-string-regexp: 4.0.0
- eslint: 9.27.0
- espree: 10.3.0
+ eslint: 9.29.0
+ espree: 10.4.0
esquery: 1.6.0
parse-imports-exports: 0.2.4
semver: 7.7.2
@@ -4121,7 +4494,7 @@ snapshots:
esrecurse: 4.3.0
estraverse: 4.3.0
- eslint-scope@8.3.0:
+ eslint-scope@8.4.0:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
@@ -4130,31 +4503,31 @@ snapshots:
eslint-visitor-keys@3.4.3: {}
- eslint-visitor-keys@4.2.0: {}
+ eslint-visitor-keys@4.2.1: {}
- eslint@9.27.0:
+ eslint@9.29.0:
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0)
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0)
'@eslint-community/regexpp': 4.12.1
- '@eslint/config-array': 0.20.0
- '@eslint/config-helpers': 0.2.2
+ '@eslint/config-array': 0.20.1
+ '@eslint/config-helpers': 0.2.3
'@eslint/core': 0.14.0
'@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.27.0
- '@eslint/plugin-kit': 0.3.1
+ '@eslint/js': 9.29.0
+ '@eslint/plugin-kit': 0.3.2
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.1(supports-color@5.5.0)
escape-string-regexp: 4.0.0
- eslint-scope: 8.3.0
- eslint-visitor-keys: 4.2.0
- espree: 10.3.0
+ eslint-scope: 8.4.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@@ -4172,11 +4545,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- espree@10.3.0:
+ espree@10.4.0:
dependencies:
- acorn: 8.14.1
- acorn-jsx: 5.3.2(acorn@8.14.1)
- eslint-visitor-keys: 4.2.0
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ eslint-visitor-keys: 4.2.1
esprima@4.0.1: {}
@@ -4194,6 +4567,50 @@ snapshots:
esutils@2.0.3: {}
+ etag@1.8.1: {}
+
+ eventsource-parser@3.0.2: {}
+
+ eventsource@3.0.7:
+ dependencies:
+ eventsource-parser: 3.0.2
+
+ express-rate-limit@7.5.1(express@5.1.0):
+ dependencies:
+ express: 5.1.0
+
+ express@5.1.0:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.2.0
+ content-disposition: 1.0.0
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.2.2
+ debug: 4.4.1(supports-color@5.5.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.0
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.1
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.14.0
+ range-parser: 1.2.1
+ router: 2.2.0
+ send: 1.2.0
+ serve-static: 2.2.0
+ statuses: 2.0.2
+ type-is: 2.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
extend@3.0.2: {}
extract-zip@2.0.1:
@@ -4240,9 +4657,9 @@ snapshots:
dependencies:
escape-string-regexp: 1.0.5
- file-entry-cache@10.1.0:
+ file-entry-cache@10.1.1:
dependencies:
- flat-cache: 6.1.9
+ flat-cache: 6.1.10
file-entry-cache@8.0.0:
dependencies:
@@ -4254,6 +4671,17 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
+ finalhandler@2.1.0:
+ dependencies:
+ debug: 4.4.1(supports-color@5.5.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
find-replace@3.0.0:
dependencies:
array-back: 3.1.0
@@ -4277,11 +4705,11 @@ snapshots:
flatted: 3.3.3
keyv: 4.5.4
- flat-cache@6.1.9:
+ flat-cache@6.1.10:
dependencies:
- cacheable: 1.9.0
+ cacheable: 1.10.0
flatted: 3.3.3
- hookified: 1.9.0
+ hookified: 1.9.1
flatted@3.3.3: {}
@@ -4292,17 +4720,22 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- form-data-encoder@4.0.2: {}
+ form-data-encoder@4.1.0: {}
- form-data@4.0.2:
+ form-data@4.0.3:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
mime-types: 2.1.35
format@0.2.2: {}
+ forwarded@0.2.0: {}
+
+ fresh@2.0.0: {}
+
fs-extra@11.3.0:
dependencies:
graceful-fs: 4.2.11
@@ -4338,7 +4771,7 @@ snapshots:
get-stream@5.2.0:
dependencies:
- pump: 3.0.2
+ pump: 3.0.3
get-stream@9.0.1:
dependencies:
@@ -4376,7 +4809,7 @@ snapshots:
globals@14.0.0: {}
- globals@16.1.0: {}
+ globals@16.2.0: {}
globalthis@1.0.4:
dependencies:
@@ -4388,12 +4821,12 @@ snapshots:
got@14.4.7:
dependencies:
- '@sindresorhus/is': 7.0.1
+ '@sindresorhus/is': 7.0.2
'@szmarczak/http-timer': 5.0.1
cacheable-lookup: 7.0.0
cacheable-request: 12.0.1
decompress-response: 6.0.0
- form-data-encoder: 4.0.2
+ form-data-encoder: 4.1.0
http2-wrapper: 2.2.1
lowercase-keys: 3.0.0
p-cancelable: 4.0.1
@@ -4432,17 +4865,29 @@ snapshots:
dependencies:
function-bind: 1.1.2
- hookified@1.9.0: {}
+ hookified@1.9.1: {}
hosted-git-info@2.8.9: {}
http-cache-semantics@4.2.0: {}
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
http2-wrapper@2.2.1:
dependencies:
quick-lru: 5.1.1
resolve-alpn: 1.2.1
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
ieee754@1.2.1: {}
ignore-by-default@1.0.1: {}
@@ -4464,8 +4909,12 @@ snapshots:
imurmurhash@0.1.4: {}
+ inherits@2.0.4: {}
+
ip@2.0.1: {}
+ ipaddr.js@1.9.1: {}
+
is-alphabetical@1.0.4: {}
is-alphanumerical@1.0.4:
@@ -4503,6 +4952,8 @@ snapshots:
is-plain-obj@2.1.0: {}
+ is-promise@4.0.0: {}
+
is-stream@4.0.1: {}
is-utf8@0.2.1: {}
@@ -4515,6 +4966,14 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
+ joi@17.13.3:
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ '@hapi/topo': 5.1.0
+ '@sideway/address': 4.1.5
+ '@sideway/formula': 3.0.1
+ '@sideway/pinpoint': 2.0.0
+
js-tokens@4.0.0: {}
js-yaml@3.14.1:
@@ -4561,7 +5020,7 @@ snapshots:
dependencies:
json-buffer: 3.0.1
- keyv@5.3.3:
+ keyv@5.3.4:
dependencies:
'@keyv/serialize': 1.0.3
@@ -4710,8 +5169,12 @@ snapshots:
mdast-util-to-string@2.0.0: {}
+ media-typer@1.1.0: {}
+
memory-pager@1.5.0: {}
+ merge-descriptors@2.0.0: {}
+
merge2@1.4.1: {}
micromark-extension-footnote@0.3.2:
@@ -4775,21 +5238,27 @@ snapshots:
mime-db@1.52.0: {}
+ mime-db@1.54.0: {}
+
mime-types@2.1.35:
dependencies:
mime-db: 1.52.0
+ mime-types@3.0.1:
+ dependencies:
+ mime-db: 1.54.0
+
mimic-response@3.1.0: {}
mimic-response@4.0.0: {}
minimatch@3.1.2:
dependencies:
- brace-expansion: 1.1.11
+ brace-expansion: 1.1.12
minimatch@9.0.5:
dependencies:
- brace-expansion: 2.0.1
+ brace-expansion: 2.0.2
minimist@1.2.8: {}
@@ -4804,17 +5273,17 @@ snapshots:
'@types/whatwg-url': 11.0.5
whatwg-url: 14.2.0
- mongodb@6.16.0:
+ mongodb@6.17.0:
dependencies:
- '@mongodb-js/saslprep': 1.2.2
- bson: 6.10.3
+ '@mongodb-js/saslprep': 1.3.0
+ bson: 6.10.4
mongodb-connection-string-url: 3.0.2
- mongoose@8.15.0:
+ mongoose@8.16.0:
dependencies:
- bson: 6.10.3
+ bson: 6.10.4
kareem: 2.6.3
- mongodb: 6.16.0
+ mongodb: 6.17.0
mpath: 0.9.0
mquery: 5.0.0
ms: 2.1.3
@@ -4841,11 +5310,13 @@ snapshots:
natural-compare@1.4.0: {}
+ negotiator@1.0.0: {}
+
neo-async@2.6.2: {}
neotraverse@0.6.18: {}
- node-addon-api@8.3.1: {}
+ node-addon-api@8.4.0: {}
node-fetch@2.7.0:
dependencies:
@@ -4884,11 +5355,19 @@ snapshots:
normalize-path@3.0.0: {}
- normalize-url@8.0.1: {}
+ normalize-url@8.0.2: {}
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.4: {}
object-keys@1.1.1:
optional: true
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
once@1.4.0:
dependencies:
wrappy: 1.0.2
@@ -4966,6 +5445,8 @@ snapshots:
parse-statements@1.0.11: {}
+ parseurl@1.3.3: {}
+
path-exists@3.0.0: {}
path-exists@4.0.0: {}
@@ -4981,6 +5462,8 @@ snapshots:
path-to-glob-pattern@2.0.1: {}
+ path-to-regexp@8.2.0: {}
+
path-type@1.1.0:
dependencies:
graceful-fs: 4.2.11
@@ -5009,6 +5492,8 @@ snapshots:
pinkie@2.0.4: {}
+ pkce-challenge@5.0.0: {}
+
pkg-conf@2.1.0:
dependencies:
find-up: 2.1.0
@@ -5023,19 +5508,24 @@ snapshots:
pqclean@0.8.1:
dependencies:
bindings: 1.5.0
- node-addon-api: 8.3.1
+ node-addon-api: 8.4.0
prelude-ls@1.2.1: {}
progress@2.0.3: {}
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
proxy-from-env@1.1.0: {}
pstree.remy@1.1.8: {}
- pump@3.0.2:
+ pump@3.0.3:
dependencies:
- end-of-stream: 1.4.4
+ end-of-stream: 1.4.5
once: 1.4.0
punycode@2.3.1: {}
@@ -5046,10 +5536,23 @@ snapshots:
pngjs: 5.0.0
yargs: 15.4.1
+ qs@6.14.0:
+ dependencies:
+ side-channel: 1.1.0
+
queue-microtask@1.2.3: {}
quick-lru@5.1.1: {}
+ range-parser@1.2.1: {}
+
+ raw-body@3.0.0:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ unpipe: 1.0.0
+
rc-config-loader@4.1.3:
dependencies:
debug: 4.4.1(supports-color@5.5.0)
@@ -5169,10 +5672,24 @@ snapshots:
sprintf-js: 1.1.3
optional: true
+ router@2.2.0:
+ dependencies:
+ debug: 4.4.1(supports-color@5.5.0)
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.2.0
+ transitivePeerDependencies:
+ - supports-color
+
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
+ safe-buffer@5.2.1: {}
+
+ safer-buffer@2.1.2: {}
+
semver-compare@1.0.0:
optional: true
@@ -5182,19 +5699,74 @@ snapshots:
semver@7.7.2: {}
+ send@1.2.0:
+ dependencies:
+ debug: 4.4.1(supports-color@5.5.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ mime-types: 3.0.1
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
serialize-error@7.0.1:
dependencies:
type-fest: 0.13.1
optional: true
+ serve-static@2.2.0:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+
set-blocking@2.0.0: {}
+ setprototypeof@1.2.0: {}
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
sift@17.1.3: {}
signal-exit@4.1.0: {}
@@ -5215,10 +5787,10 @@ snapshots:
astral-regex: 2.0.0
is-fullwidth-code-point: 3.0.0
- sodium-native@5.0.4:
+ sodium-native@5.0.6:
dependencies:
require-addon: 1.1.0
- which-runtime: 1.2.1
+ which-runtime: 1.3.0
source-map@0.6.1: {}
@@ -5250,6 +5822,10 @@ snapshots:
sprintf-js@1.1.3:
optional: true
+ statuses@2.0.1: {}
+
+ statuses@2.0.2: {}
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -5313,27 +5889,28 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
- tailwindcss@4.1.7: {}
+ tailwindcss@4.1.10: {}
text-table@0.2.0: {}
- textlint@14.7.2:
- dependencies:
- '@textlint/ast-node-types': 14.7.2
- '@textlint/ast-traverse': 14.7.2
- '@textlint/config-loader': 14.7.2
- '@textlint/feature-flag': 14.7.2
- '@textlint/fixer-formatter': 14.7.2
- '@textlint/kernel': 14.7.2
- '@textlint/linter-formatter': 14.7.2
- '@textlint/module-interop': 14.7.2
- '@textlint/resolver': 14.7.2
- '@textlint/textlint-plugin-markdown': 14.7.2
- '@textlint/textlint-plugin-text': 14.7.2
- '@textlint/types': 14.7.2
- '@textlint/utils': 14.7.2
+ textlint@14.8.4:
+ dependencies:
+ '@modelcontextprotocol/sdk': 1.13.0
+ '@textlint/ast-node-types': 14.8.4
+ '@textlint/ast-traverse': 14.8.4
+ '@textlint/config-loader': 14.8.4
+ '@textlint/feature-flag': 14.8.4
+ '@textlint/fixer-formatter': 14.8.4
+ '@textlint/kernel': 14.8.4
+ '@textlint/linter-formatter': 14.8.4
+ '@textlint/module-interop': 14.8.4
+ '@textlint/resolver': 14.8.4
+ '@textlint/textlint-plugin-markdown': 14.8.4
+ '@textlint/textlint-plugin-text': 14.8.4
+ '@textlint/types': 14.8.4
+ '@textlint/utils': 14.8.4
debug: 4.4.1(supports-color@5.5.0)
- file-entry-cache: 10.1.0
+ file-entry-cache: 10.1.1
glob: 10.4.5
md5: 2.3.0
mkdirp: 0.5.6
@@ -5344,6 +5921,7 @@ snapshots:
read-pkg-up: 3.0.0
structured-source: 4.0.0
unique-concat: 0.2.2
+ zod: 3.25.67
transitivePeerDependencies:
- supports-color
@@ -5351,6 +5929,8 @@ snapshots:
dependencies:
is-number: 7.0.0
+ toidentifier@1.0.1: {}
+
touch@3.1.1: {}
tr46@0.0.3: {}
@@ -5374,6 +5954,12 @@ snapshots:
type-fest@4.41.0: {}
+ type-is@2.0.1:
+ dependencies:
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.1
+
typescript@5.8.2: {}
typical@4.0.0: {}
@@ -5423,9 +6009,11 @@ snapshots:
universalify@2.0.1: {}
- update-browserslist-db@1.1.3(browserslist@4.24.5):
+ unpipe@1.0.0: {}
+
+ update-browserslist-db@1.1.3(browserslist@4.25.0):
dependencies:
- browserslist: 4.24.5
+ browserslist: 4.25.0
escalade: 3.2.0
picocolors: 1.1.1
@@ -5438,6 +6026,8 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
+ vary@1.1.2: {}
+
vfile-message@2.0.4:
dependencies:
'@types/unist': 2.0.11
@@ -5466,7 +6056,7 @@ snapshots:
which-module@2.0.1: {}
- which-runtime@1.2.1: {}
+ which-runtime@1.3.0: {}
which@2.0.2:
dependencies:
@@ -5531,4 +6121,10 @@ snapshots:
yocto-queue@0.1.0: {}
+ zod-to-json-schema@3.24.5(zod@3.25.67):
+ dependencies:
+ zod: 3.25.67
+
+ zod@3.25.67: {}
+
zwitch@1.0.5: {}
diff --git a/udsp/UWRL/extractJSON.js b/udsp/UWRL/extractJSON.js
new file mode 100644
index 00000000..6c7c82cc
--- /dev/null
+++ b/udsp/UWRL/extractJSON.js
@@ -0,0 +1,66 @@
+// Import the necessary utilities from @universalweb/acid
+// Assuming acid also provides isString and isEmpty for robust checks.
+import { isArray, isEmpty, isString } from '@universalweb/acid';
+const jsonRegex = /\{[^]*\}|\[[^]*\]/;
+/**
+ * Extracts a valid JSON object or array from a given string.
+ * It searches for the first occurrence of a JSON-like structure ({...} or [...])
+ * and then attempts to parse it.
+ *
+ * Returns the parsed JSON object/array if found and valid, otherwise `undefined`.
+ *
+ * @param {string} text - The string to search within.
+ * @returns {object|array|undefined} The parsed JSON object/array if found and valid, otherwise undefined.
+ */
+export function extractAndValidateJson(text) {
+ if (!isString(text) || text.length < 2) {
+ return undefined;
+ }
+ let match = text.match(jsonRegex);
+ while (match) {
+ const potentialJsonString = match[0];
+ if (!potentialJsonString || potentialJsonString.length < 2) {
+ return;
+ }
+ try {
+ const parsedJson = JSON.parse(potentialJsonString);
+ if ((typeof parsedJson === 'object' && parsedJson !== null) || isArray(parsedJson)) {
+ return parsedJson;
+ }
+ } catch (e) {
+ return;
+ }
+ const remainingText = text.substring(match.index + potentialJsonString.length);
+ match = remainingText.match(jsonRegex);
+ }
+ return;
+}
+export function removeJSON(target) {
+ if (!isString(target)) {
+ return;
+ }
+ return target.replace(jsonRegex, '');
+}
+export default extractAndValidateJson;
+// console.log('--- Valid JSON examples ---');
+// const str1 = 'Some random text before {"name": "Alice", "age": {"name": "Alice", "age": 30}} and some after.';
+// console.log('Extracted 1:', extractAndValidateJson(str1));
+// const str2 = 'This string contains an array: [1, 2, {"key": "value"}, 4]. End of string.';
+// console.log('Extracted 2:', extractAndValidateJson(str2));
+// const str3 = '{"single": "object"}';
+// console.log('Extracted 3:', extractAndValidateJson(str3));
+// console.log('\n--- Invalid/No JSON examples (now return undefined) ---');
+// const str7 = 'Just some plain text.';
+// console.log('Extracted 7:', extractAndValidateJson(str7));
+// const str8 = 'Malformed JSON: {"name": "Bob", "age": } invalid syntax';
+// console.log('Extracted 8:', extractAndValidateJson(str8));
+// const str9 = 'Missing closing brace: {"item": 1';
+// console.log('Extracted 9:', extractAndValidateJson(str9));
+// const str10 = 'Empty string: \'\'';
+// console.log('Extracted 10:', extractAndValidateJson(''));
+// const str11 = 'Spaces only: \' \'';
+// console.log('Extracted 11:', extractAndValidateJson(' '));
+// console.log('\n--- Type checks ---');
+// const resultUndefined = extractAndValidateJson('No JSON here');
+// console.log('Is result undefined (explicit check)?', resultUndefined === undefined);
+// console.log('Is result null (explicit check)?', resultUndefined === null);
diff --git a/udsp/UWRL/getScheme.js b/udsp/UWRL/getScheme.js
new file mode 100644
index 00000000..c1a02296
--- /dev/null
+++ b/udsp/UWRL/getScheme.js
@@ -0,0 +1,143 @@
+// TODO: Add support for different schemes
+// Default Binary Universal Web Resource Locator using CBOR given a binary buffer uw:// or buw:// binary-UW
+// String Universal Web Resource Locator using text+UTF8 given as euw:// UTF8 supported enhanced URL
+// Hex/Base64URLSafe Universal Web Resource Locator using hex or URL Safe base64 string data euw[encoding-base-hex]://
+// cuw:// - WWW compatibility UW scheme for backwards compatibility with old URLs
+// juw:// - JSON Universal Web Resource Locator using JSON string data
+// bsuw:// - BSON - Binary JSON Universal Web Resource Locator using JSON string data
+import {
+ get, isNotString, isString, noValue
+} from '@universalweb/acid';
+const schemes = {
+ uw: {
+ description: 'Binary Universal Web Resource Locator'
+ },
+ buw: {
+ description: 'Binary Universal Web Resource Locator'
+ },
+ cuw: {
+ description: 'WWW compatibility UW scheme for backwards compatibility with old URLs'
+ },
+ euw: {
+ description: 'String Universal Web Resource Locator using text+UTF8'
+ },
+ juw: {
+ description: 'JSON Universal Web Resource Locator using JSON string data'
+ },
+ bsuw: {
+ description: 'BSON - Binary JSON Universal Web Resource Locator using JSON string data'
+ },
+ viat: {
+ description: 'VIAT - cryptocurrency'
+ },
+ viats: {
+ description: 'VIAT - cryptocurrency with string based URL'
+ },
+ viatb: {
+ description: 'VIAT - cryptocurrency with binary based URL'
+ }
+};
+const noSchemeRegex = /^(\/\/|:\/\/)|^(?!.*:\/\/)/;
+const schemeRegex = /^([a-zA-Z][a-zA-Z0-9+\-.]+):/;
+export function hasEmptyScheme(urlString) {
+ if (isNotString(urlString)) {
+ return false;
+ }
+ if (noSchemeRegex.test(urlString)) {
+ return true;
+ }
+ return false;
+}
+export function getSchemeName(urlString, defaultScheme) {
+ if (isNotString(urlString)) {
+ return defaultScheme;
+ }
+ if (noSchemeRegex.test(urlString)) {
+ if (defaultScheme && isString(defaultScheme)) {
+ return defaultScheme.toLowerCase();
+ }
+ }
+ const match = urlString.match(schemeRegex);
+ if (match && match[1]) {
+ const schemeMatched = match[1].toLowerCase();
+ if (schemes[schemeMatched]) {
+ return schemeMatched.toLowerCase();
+ }
+ } else if (defaultScheme && isString(defaultScheme)) {
+ return defaultScheme.toLowerCase();
+ }
+}
+export function getSchemeNameAndDelimiter(urlString, defaultScheme = 'uw') {
+ const schemeName = getSchemeName(urlString);
+ if (schemeName) {
+ if (urlString.includes('://')) {
+ return `${schemeName}`;
+ }
+ return `${schemeName}://`;
+ }
+ return `${defaultScheme}://`;
+}
+export function hasSchemeDelimiter(urlString) {
+ if (isNotString(urlString)) {
+ return false;
+ }
+ if (urlString.includes('://')) {
+ return true;
+ }
+ return false;
+}
+export function hasValidScheme(urlString) {
+ if (urlString && getSchemeName(urlString)) {
+ return true;
+ }
+ return false;
+}
+export function appendScheme(urlString, defaultScheme = 'uw') {
+ if (!isString(urlString)) {
+ return;
+ }
+ const schemeName = hasValidScheme(urlString);
+ if (schemeName) {
+ return urlString;
+ }
+ if (hasSchemeDelimiter(urlString)) {
+ return `${defaultScheme}${urlString}`;
+ }
+ return `${defaultScheme}://${urlString}`;
+}
+export function hasEmptyOrValidScheme(urlString) {
+ return hasEmptyScheme(urlString) || hasValidScheme(urlString);
+}
+export function getSchemeNameDefault(urlString, defaultScheme = 'uw') {
+ return getSchemeName(urlString, defaultScheme);
+}
+export function getScheme(url, defaultScheme) {
+ const schemeName = getSchemeNameDefault(url, defaultScheme);
+ if (schemeName) {
+ return schemes[schemeName];
+ }
+ return;
+}
+export function getSchemeProperty(url, defaultScheme, propertyName) {
+ const schemeObject = getScheme(url, defaultScheme);
+ if (schemeObject) {
+ return get(propertyName, schemeObject);
+ }
+ return;
+}
+export function getSchemeMethod(url, defaultScheme) {
+ return getSchemeProperty(url, defaultScheme, 'method');
+}
+export function getSchemeDescription(url, defaultScheme) {
+ return getSchemeProperty(url, defaultScheme, 'description');
+}
+// console.log('getSchemeName', getSchemeName('://example.com'));
+// console.log('getSchemeNameDefault', getSchemeNameDefault('://example.com'));
+// console.log('getScheme', getScheme('://example.com'));
+// console.log('hasValidScheme', hasValidScheme('://example.com'));
+// console.log('hasEmptyScheme', hasEmptyScheme('uw://example.com'));
+// console.log('hasValidScheme', hasValidScheme('uw://example.com'));
+// console.log('hasEmptyOrValidScheme', hasEmptyOrValidScheme('http://example.com'));
+// console.log('hasEmptyOrValidScheme', hasEmptyOrValidScheme('uw://example.com'));
+// console.log('hasEmptyOrValidScheme', hasEmptyOrValidScheme('://example.com'));
+// console.log('getSchemeNameAndDelimiter', getSchemeNameAndDelimiter('://example.com'));
diff --git a/udsp/UWRL/index.js b/udsp/UWRL/index.js
index 27de1c11..22372089 100644
--- a/udsp/UWRL/index.js
+++ b/udsp/UWRL/index.js
@@ -1,4 +1,6 @@
+// EURL: Enhanced Universal Resource Locator
import {
+ assign,
initialString,
isPlainObject,
isString,
@@ -6,72 +8,110 @@ import {
restString,
stringify
} from '@universalweb/acid';
-const ipRegex = /^\b(?:\d{1,3}\.){3}\d{1,3}\b$/;
+import {
+ convertClassicalParams,
+ getFullURL,
+ hasPercentEncoding,
+ ipRegex
+} from './utils.js';
+import { getSchemeName, getSchemeNameAndDelimiter } from './getScheme.js';
+import { extractAndValidateJson } from './extractJSON.js';
class UWRL {
- constructor(urlOriginal, paramaters) {
- let url = urlOriginal.includes('uw://') ? urlOriginal : `uw://${urlOriginal}`;
- if (paramaters) {
- if (isPlainObject(paramaters)) {
- this.paramaters = paramaters;
- this.params = stringify(paramaters);
- } else if (isString(paramaters)) {
- this.params = paramaters;
- this.paramaters = jsonParse(this.params);
- }
- } else {
- const jsonStringStartIndex = url.indexOf('{');
- if (jsonStringStartIndex !== -1) {
- url = urlOriginal.substring(0, jsonStringStartIndex);
- if (jsonStringStartIndex) {
- this.params = urlOriginal.substring(jsonStringStartIndex, urlOriginal.length);
- try {
- this.paramaters = jsonParse(this.params);
- } catch {
- this.paramaters = {};
- }
+ constructor(urlOriginal, parameters, baseURL) {
+ this.originalURL = urlOriginal;
+ this.baseURL = baseURL;
+ this.setURLObject();
+ const urlObject = this.urlObject;
+ if (parameters) {
+ this.setParameters(parameters);
+ }
+ if (ipRegex.test(this.hostname)) {
+ this.ip = this.hostname;
+ }
+ }
+ setURLObject() {
+ const urlObject = getFullURL(this.originalURL, this.baseURL);
+ this.urlObject = urlObject;
+ this.url = urlObject.href;
+ if (urlObject.origin !== 'null') {
+ this.origin = urlObject.origin;
+ }
+ if (urlObject.port?.length) {
+ this.port = urlObject.port;
+ }
+ if (urlObject.hostname?.length) {
+ this.hostname = urlObject.hostname;
+ }
+ if (urlObject.protocol?.length) {
+ this.protocol = urlObject.protocol;
+ }
+ if (urlObject.pathname?.length) {
+ this.pathname = urlObject.pathname;
+ }
+ this.host = urlObject.host;
+ this.setPercentEncodedParameters();
+ }
+ setParameters(parameters) {
+ if (parameters) {
+ if (isPlainObject(parameters)) {
+ assign(this.parameters, parameters);
+ } else if (isString(parameters)) {
+ const extractJSON = extractAndValidateJson(parameters);
+ if (extractJSON) {
+ assign(this.parameters, extractJSON);
}
}
}
- const urlObject = new URL(url);
- if (this.paramaters) {
- if (this.paramaters['#']) {
- this.hash = this.paramaters['#'];
- }
- if (this.paramaters[':']) {
- this.account = this.paramaters[':'][0];
- this.password = this.paramaters[':'][1];
+ }
+ setPercentEncodedParameters() {
+ if (this?.urlObject?.searchParams) {
+ const classicalParams = convertClassicalParams(this.urlObject.searchParams);
+ if (classicalParams) {
+ assign(this.parameters, classicalParams);
}
- } else {
- this.params = urlObject.search;
- this.parameters = urlObject.searchParams;
}
- this.url = url;
- this.origin = `${urlObject.protocol}//${urlObject.host}`;
- this.port = urlObject.port;
- this.host = urlObject.host;
- this.hostname = urlObject.hostname;
- if (ipRegex.test(this.hostname)) {
- this.ip = this.hostname;
+ }
+ extractJSONParameters() {
+ const jsonObject = extractAndValidateJson(this.originalURL);
+ if (jsonObject) {
+ this.parameters = jsonObject;
}
- this.protocol = urlObject.protocol;
}
- get search() {
- return this.paramaterString;
+ processParameters(parameters) {
+ this.setHash();
+ this.setAccount();
+ }
+ setHash() {
+ if (this.parameters['#']) {
+ this.hash = this.parameters['#'];
+ }
+ }
+ setAccount() {
+ if (this.parameters[':']) {
+ this.account = this.parameters[':'][0];
+ this.password = this.parameters[':'][1];
+ }
}
get searchParams() {
return this.parameters;
}
+ get search() {
+ return this.search;
+ }
get href() {
return this.url;
}
hash = '';
isUWRL = true;
+ parameters = {};
}
export function uwrl(...args) {
return new UWRL(...args);
}
-// Supports Username Password and URL Fragments
-// Server can opt in to get the URL fragments
-// fragments are turned into client side state tracking
-// const uwri = new UWRL('uw://localhost:8080/path/to/resource{"query":"value", "#": "fragment", ":": ["username", "password"]}');
+export default uwrl;
+// const uwri = uwrl('://localhost:8080/path/to/resource{"query":"value", "#": "fragment", ":": ["username", "password"]}');
// console.log(uwri);
+// console.log(uwrl('://localhost:8080/path/to/resource["username", "password"]'));
+// console.log(uwrl('example.com/path/to/resource?query=hello%20world&limit=10&sort=asc', {
+// example: 'value'
+// }));
diff --git a/udsp/UWRL/utils.js b/udsp/UWRL/utils.js
new file mode 100644
index 00000000..4f310f5f
--- /dev/null
+++ b/udsp/UWRL/utils.js
@@ -0,0 +1,36 @@
+import { appendScheme, getSchemeName, getSchemeNameAndDelimiter } from './getScheme.js';
+import { extractAndValidateJson, removeJSON } from './extractJSON.js';
+import {
+ initialString,
+ isPlainObject,
+ isString,
+ jsonParse,
+ restString,
+ stringify
+} from '@universalweb/acid';
+import { base } from 'daisyui/imports.js';
+export const ipRegex = /^\b(?:\d{1,3}\.){3}\d{1,3}\b$/;
+export function getFullURL(urlString, baseURL, defaultScheme = 'uw') {
+ const schemeName = (baseURL) ? getSchemeName(baseURL) : getSchemeName(urlString);
+ let target = removeJSON(urlString);
+ if (!baseURL) {
+ target = appendScheme(target);
+ }
+ const url = new URL(target, appendScheme(baseURL));
+ return url;
+}
+// Look for % followed by two hex digits
+export function hasPercentEncoding(str) {
+ const pattern = /%[0-9A-Fa-f]{2}/;
+ return pattern.test(str);
+}
+export function convertClassicalParams(searchParams, target = {}) {
+ for (const [
+ key,
+ value
+ ] of searchParams) {
+ target[key] = value;
+ }
+ return target;
+}
+// console.log(getFullURL('/path/to/resource?query=Hello%20World', 'example.com', 'uw'));
diff --git a/utilities/cryptography/signature/dilithium65.js b/utilities/cryptography/signature/dilithium65.js
index 72854131..6ca974ed 100644
--- a/utilities/cryptography/signature/dilithium65.js
+++ b/utilities/cryptography/signature/dilithium65.js
@@ -13,8 +13,8 @@ export default dilithium65;
// console.log(key);
// const exported = await dilithium65.exportKeypair(key);
// console.log(exported);
-// const msg = Buffer.from('hello world');
// console.log(exported.publicKey.length, exported.privateKey.length);
+// const msg = Buffer.from('hello world');
// const sig = await dilithium65.sign(msg, key);
// console.log(sig.length, dilithium65.signatureSize);
// console.log(await dilithium65.verify(sig, msg, key));
diff --git a/utilities/file.js b/utilities/file.js
index f270908c..6996605b 100644
--- a/utilities/file.js
+++ b/utilities/file.js
@@ -28,11 +28,15 @@ async function createFoldersIfNotExist(folderPath) {
}
}
}
+export async function ensureDirectoryPath(filePath) {
+ const pathNormalized = normalize(filePath);
+ return fsExtra.ensureDir(path.dirname(pathNormalized));
+}
export async function write(filePath, contents, encoding, createPathFlag) {
const pathNormalized = normalize(filePath);
console.log('FILE WRITE', pathNormalized, contents.length, encoding);
if (createPathFlag) {
- await fsExtra.ensureDir(path.dirname(pathNormalized));
+ await ensureDirectoryPath(pathNormalized);
}
return writeFile(pathNormalized, contents, encoding);
}
diff --git a/utilities/schema/bigintType.js b/utilities/schema/bigintType.js
new file mode 100644
index 00000000..25961f77
--- /dev/null
+++ b/utilities/schema/bigintType.js
@@ -0,0 +1,127 @@
+// .pattern(/^[0-9]+n$/)
+export const bigIntType = (joi) => {
+ return {
+ type: 'bigint',
+ base: joi.any(),
+ messages: {
+ 'bigint.base': '"{#label}" must be a BigInt',
+ 'bigint.min': '"{#label}" must be greater than or equal to {#limit}',
+ 'bigint.max': '"{#label}" must be less than or equal to {#limit}',
+ },
+ coerce(value, helpers) {
+ if (typeof value === 'string' && (/^-?\d+n?$/).test(value)) {
+ try {
+ return {
+ value: BigInt(value.endsWith('n') ? value.slice(0, -1) : value)
+ };
+ } catch (e) {
+ return {
+ errors: helpers.error('bigint.base')
+ };
+ }
+ }
+ return {
+ value
+ };
+ },
+ validate(value, helpers) {
+ if (typeof value !== 'bigint') {
+ return {
+ errors: helpers.error('bigint.base')
+ };
+ }
+ return {
+ value
+ };
+ },
+ rules: {
+ min: {
+ method(limit) {
+ return this.$_addRule({
+ name: 'min',
+ args: {
+ limit: BigInt(limit)
+ }
+ });
+ },
+ args: [
+ {
+ name: 'limit',
+ ref: true,
+ assert: (value) => {
+ return typeof value === 'bigint' || typeof value === 'number' || typeof value === 'string';
+ },
+ message: 'limit must be a valid BigInt, number or string',
+ },
+ ],
+ validate(value, helpers, args, options) {
+ if (value < args.limit) {
+ return helpers.error('bigint.min', {
+ limit: args.limit
+ });
+ }
+ return value;
+ },
+ },
+ max: {
+ method(limit) {
+ return this.$_addRule({
+ name: 'max',
+ args: {
+ limit: BigInt(limit)
+ }
+ });
+ },
+ args: [
+ {
+ name: 'limit',
+ ref: true,
+ assert: (value) => {
+ return typeof value === 'bigint' || typeof value === 'number' || typeof value === 'string';
+ },
+ message: 'limit must be a valid BigInt, number or string',
+ },
+ ],
+ validate(value, helpers, args, options) {
+ if (value > args.limit) {
+ return helpers.error('bigint.max', {
+ limit: args.limit
+ });
+ }
+ return value;
+ },
+ },
+ positive: {
+ method() {
+ return this.$_addRule({
+ name: 'positive'
+ });
+ },
+ validate(value, helpers) {
+ if (value <= 0n) {
+ return helpers.error('bigint.min', {
+ limit: 1n
+ });
+ }
+ return value;
+ },
+ },
+ negative: {
+ method() {
+ return this.$_addRule({
+ name: 'negative'
+ });
+ },
+ validate(value, helpers) {
+ if (value >= 0n) {
+ return helpers.error('bigint.max', {
+ limit: -1n
+ });
+ }
+ return value;
+ },
+ },
+ },
+ };
+};
+export default bigIntType;
diff --git a/utilities/schema/index.js b/utilities/schema/index.js
new file mode 100644
index 00000000..3d958911
--- /dev/null
+++ b/utilities/schema/index.js
@@ -0,0 +1,12 @@
+import Joi from 'joi';
+import bigintType from './bigintType.js';
+export const schemaValidator = Joi.extend(bigintType);
+export async function validateSchema(validator, source) {
+ const results = await validator.validate(source);
+ return !(results.error);
+}
+export async function validateSchemaVerbose(validator, source) {
+ const results = await validator.validate(source);
+ return (results.error) ? results.error.details : results.value;
+}
+export default schemaValidator;
diff --git a/viat/blocks/audit/audit.js b/viat/blocks/audit/audit.js
index 0f6985f4..e69de29b 100644
--- a/viat/blocks/audit/audit.js
+++ b/viat/blocks/audit/audit.js
@@ -1,6 +0,0 @@
-// Auditor Block (hash of each individual wallet state)
-// Allows for confirmation of the state by confirming wallets first
-// Individual wallet states can then be hashed and used as a state summary
-// Hash all them together to get the final state
-// Allow progressive hashing to check for wallet state differences to narrow down the search to identify wallets that might not be fully synced
-
diff --git a/viat/blocks/block.js b/viat/blocks/block.js
index 3b7d297c..48ddc05d 100644
--- a/viat/blocks/block.js
+++ b/viat/blocks/block.js
@@ -6,6 +6,8 @@ import {
get,
hasValue,
isArray,
+ isBigInt,
+ isNumber,
isPlainObject,
isString,
isZero,
@@ -14,23 +16,23 @@ import {
toPath
} from '@universalweb/acid';
import { readStructured, write } from '#utilities/file';
+import { validateSchema, validateSchemaVerbose } from '#utilities/schema/index';
import blockDefaults from './defaults.js';
+import { blockSchema } from './schema.js';
import { encodeStrict } from '#utilities/serialize';
import { getParentClassName } from '#utilities/class';
import { getTransactionPath } from './transaction/uri.js';
import { getWallet } from './wallet/uri.js';
import path from 'path';
import { toBase64Url } from '#crypto/utils.js';
+import { toSmallestUnit } from '../math/coin.js';
import viatCipherSuite from '#crypto/cipherSuite/viat.js';
const {
version,
blockTypes
} = blockDefaults;
export class Block {
- constructor(data, config) {
- if (data) {
- assign(this.block, data);
- }
+ constructor(config) {
if (config?.source) {
this.source = function() {
return config.source;
@@ -42,24 +44,42 @@ export class Block {
this.blockType = blockDefaults.blockTypes[this.typeName];
this.fileType = blockDefaults.fileExtensions[this.typeName];
this.filename = blockDefaults.genericFilenames[this.typeName];
- if (getParentClassName(data) === 'Block') {
- this.configByBlock(data, config);
+ if (data) {
+ if (getParentClassName(data) === 'Block') {
+ this.configByBlock(data, config);
+ } else {
+ this.config(data, config);
+ }
}
return this;
}
configByBlock(blockObject, config) {
switch (blockObject.blockType) {
case blockTypes.transaction: {
- return this.configByTransactionBlock(blockObject, config);
+ if (this.configByTransactionBlock) {
+ return this.configByTransactionBlock(blockObject, config);
+ }
+ break;
}
case blockTypes.receipt: {
- return this.configByReceiptBlock(blockObject, config);
+ if (this.configByReceiptBlock) {
+ return this.configByReceiptBlock(blockObject, config);
+ }
+ break;
}
default: {
- return this.configByGenericBlock(blockObject, config);
+ if (this.configByGenericBlock) {
+ return this.configByGenericBlock(blockObject, config);
+ }
+ break;
}
}
}
+ config(data, config) {
+ if (isPlainObject(data)) {
+ this.setData(data);
+ }
+ }
async configByBlockAsync(blockObject, config) {
return this.configByBlock(blockObject, config);
}
@@ -86,13 +106,6 @@ export class Block {
await this.setDefaults();
await this.setHash();
}
- async validate() {
- const hashCheck = await this.validateHash();
- if (!hashCheck) {
- return false;
- }
- return true;
- }
async validateHash() {
const manualHash = await this.hashData();
const hash = await this.getHash();
@@ -107,6 +120,39 @@ export class Block {
this.setMeta('blockType', this.blockType);
this.setMeta('nonce', this.cipherSuite.createBlockNonce(this.nonceSize));
}
+ async createSignature(wallet) {
+ const binary = await this.exportDataBinary();
+ const signature = await wallet.signPartial(binary);
+ return signature;
+ }
+ async sign(wallet) {
+ const signature = await this.createSignature(wallet);
+ await this.set('signature', signature);
+ return this;
+ }
+ async createFullSignature(wallet) {
+ const binary = await this.exportDataBinary();
+ const signature = await wallet.sign(binary);
+ return signature;
+ }
+ async signFull(wallet) {
+ const binary = await this.exportDataBinary();
+ const signature = await this.createFullSignature(wallet, binary);
+ await this.set('signature', signature);
+ return this;
+ }
+ async verifySignature(wallet) {
+ const signature = await this.get('signature');
+ const binary = await this.exportDataBinary();
+ const isValid = await wallet.verifyPartialSignature(signature, binary);
+ return isValid;
+ }
+ async verifyFullSignature(wallet) {
+ const signature = await this.get('signature');
+ const binary = await this.exportDataBinary();
+ const isValid = await wallet.verifySignature(signature, binary);
+ return isValid;
+ }
async hashData() {
const binary = await this.exportDataBinary();
return this.hash512(binary);
@@ -132,22 +178,28 @@ export class Block {
}
return this.get('hash');
}
- async id(value) {
+ async storageID(value) {
if (value) {
- await this.set('id', value);
+ await this.set('storageID', value);
}
- const id = await this.get('id');
- if (id) {
- return id;
+ const storageID = await this.get('storageID');
+ if (storageID) {
+ return storageID;
}
- await this.set('id', await this.hashData());
- return this.get('id');
+ return this.hashData();
}
getCore(propertyName) {
return (propertyName) ? get(propertyName, this.block.data.core) : this.block.data.core;
}
- setCore(propertyName, value) {
- return this.set(propertyName, value, this.block.data.core);
+ setCore(primaryArg, value) {
+ if (isPlainObject(primaryArg)) {
+ if (primaryArg.amount) {
+ primaryArg.amount = toSmallestUnit(primaryArg.amount, 'mana');
+ }
+ assign(this.block.data.core, primaryArg);
+ return this;
+ }
+ return this.set(primaryArg, value, this.block.data.core);
}
getMeta(propertyName) {
return (propertyName) ? get(propertyName, this.block.data.meta) : this.block.data.meta;
@@ -159,6 +211,10 @@ export class Block {
return (propertyName) ? get(propertyName, this.block.data) : this.block.data;
}
setData(propertyName, value) {
+ if (isPlainObject(propertyName)) {
+ assign(this.block.data, propertyName);
+ return this;
+ }
return this.setProperty(propertyName, value, this.block.data);
}
get(propertyName) {
@@ -223,10 +279,10 @@ export class Block {
return this.cipherSuite.hash.hashXOF(binary, options);
}
}
- getParent() {
+ async getParent() {
return this.parent;
}
- getChildren() {
+ async getChildren() {
return this.children;
}
getVersion() {
@@ -235,6 +291,49 @@ export class Block {
getType() {
return this.getMeta('type');
}
+ getSequence() {
+ const sequence = this.getCore('sequence');
+ if (isBigInt(sequence)) {
+ return sequence;
+ }
+ return;
+ }
+ async getParentSequence() {
+ const parentNode = await this.getParent();
+ if (parentNode) {
+ return parentNode.getSequence();
+ }
+ return;
+ }
+ async setSequence() {
+ const parentSequence = await this.getParentSequence();
+ if (isBigInt(parentSequence)) {
+ return parentSequence + 1n;
+ } else {
+ return 0n;
+ }
+ }
+ async validate() {
+ const validateGeneric = await validateSchema(blockSchema, this.block);
+ if (!validateGeneric) {
+ return false;
+ }
+ if (this.blockSchema) {
+ const result = await validateSchema(this.blockSchema, this.block);
+ return result;
+ }
+ return true;
+ }
+ async validateVerbose() {
+ const validateGeneric = await validateSchemaVerbose(blockSchema, this.block);
+ if (!validateGeneric) {
+ return false;
+ }
+ if (this.blockSchema) {
+ const result = await validateSchemaVerbose(this.blockSchema, this.block);
+ return result;
+ }
+ }
version = version;
typeName = 'generic';
blockType = blockDefaults.blockTypes.generic;
@@ -249,6 +348,9 @@ export async function block(...args) {
return source;
}
export default block;
-// const exmple = await block();
-// console.log(exmple);
+// const example = await block();
+// example.initialize();
+// example.setDefaults();
+// await example.setHash();
+// console.log(example.block, await example.validate());
// U3VjaCB2aXNpb24gb2Ygd2hhdCBjb3VsZCBiZSBidXQgb25lIEkgbWF5IG5ldmVyIHNlZS4gVGhlIGN1cnNlIG9mIGRyZWFtcy4=
diff --git a/viat/blocks/receipt/block.js b/viat/blocks/receipt/block.js
index 4738618c..28efcd30 100644
--- a/viat/blocks/receipt/block.js
+++ b/viat/blocks/receipt/block.js
@@ -23,7 +23,7 @@ import viatCipherSuite from '#crypto/cipherSuite/viat.js';
// Both together create a physical link between the two blocks
export class ReceiptBlock extends Block {
constructor(data, config) {
- super(data, config);
+ super(config);
this.initialize(data, config);
return this;
}
@@ -33,6 +33,28 @@ export class ReceiptBlock extends Block {
async getTransactionPath() {
return getTransaction(this.getCore('transaction'), this.getReceiver());
}
+ async configByTransactionBlock(blockObject, config) {
+ const txBlockData = blockObject.getData();
+ const txHash = blockObject.getHash();
+ this.appendToCore(txBlockData.core, txHash);
+ }
+ appendToCore(coreData, txHash) {
+ const {
+ receiver,
+ sender,
+ mana,
+ amount,
+ } = coreData;
+ this.setCore({
+ transaction: txHash,
+ receiver,
+ sender,
+ mana,
+ amount
+ });
+ }
+ async config(data, config) {
+ }
typeName = 'receipt';
}
assignToClass(ReceiptBlock, blockMethods);
@@ -47,8 +69,9 @@ export default receiptBlock;
// receiver: viatCipherSuite.createBlockNonce(64),
// mana: 1000,
// amount: 1000,
-// // Reference a prior confirmed receipt from the receiver's address.
-// priorReceipt: viatCipherSuite.createBlockNonce(64)
+// Reference a prior confirmed receipt's TX hash from the receiver's address. Use path to lookup both receipts and domains.
+// Only valid if hash is from a receipt within the same wallet and links to a validated transaction.
+// priorReceiptTXHash: viatCipherSuite.createBlockNonce(64)
// });
// console.log('Transaction Block', exampleBlock);
// exampleBlock.setDefaults();
diff --git a/viat/blocks/schema.js b/viat/blocks/schema.js
new file mode 100644
index 00000000..4660c728
--- /dev/null
+++ b/viat/blocks/schema.js
@@ -0,0 +1,18 @@
+import { schemaValidator } from '#utilities/schema/index';
+export const blockSchema = schemaValidator.object({
+ data: schemaValidator.object({
+ meta: schemaValidator.object({
+ timestamp: schemaValidator.number()
+ .integer()
+ .min(0)
+ .required(),
+ nonce: schemaValidator.binary().required(),
+ version: schemaValidator.number().integer().required(),
+ blockType: schemaValidator.number().integer().required()
+ }).required(),
+ core: schemaValidator.object({}).required(),
+ }).required(),
+ hash: schemaValidator.binary().required(),
+ signature: schemaValidator.binary().required(),
+}).required();
+export default blockSchema;
diff --git a/viat/blocks/transaction/block.js b/viat/blocks/transaction/block.js
index c1d32813..e04082d1 100644
--- a/viat/blocks/transaction/block.js
+++ b/viat/blocks/transaction/block.js
@@ -11,34 +11,29 @@ import { toBase64Url, toHex } from '#crypto/utils.js';
import { Block } from '../block.js';
import blockDefaults from '../defaults.js';
import { encodeStrict } from '#utilities/serialize';
-import { getBlockFromBlock } from '../utils.js';
+import { getFullPathFromBlock } from '../utils.js';
import { loadBlock } from '#viat/blocks/utils';
import path from 'path';
import receiptBlock from '../receipt/block.js';
+import { transactionBlockSchema } from './schema.js';
import viatCipherSuite from '#crypto/cipherSuite/viat.js';
class TransactionBlock extends Block {
constructor(data, config) {
- super(data, config);
+ super(config);
this.initialize(data, config);
return this;
}
// Receipt Hash Link
// Block Hash (TX DATA || Receipt Meta?)
- async createReceipt(block) {
- this.receipt = await receiptBlock(this);
+ async createReceipt(wallet) {
+ this.receipt = await receiptBlock(this, wallet);
return this;
}
getReceiptPath() {
- const { source, } = this;
const filepath = getTransactionPathFromBlock(this);
- const networkPath = (source) ? source().networkPath : undefined;
- const fullFilepath = (networkPath) ? path.join(networkPath, filepath) : filepath;
- return fullFilepath;
- }
- async getReceipt() {
- const transactionPath = this.getReceiptPath();
- return getBlockFromBlock(transactionPath, this);
+ return filepath;
}
+ blockSchema = transactionBlockSchema;
typeName = 'transaction';
}
assignToClass(TransactionBlock, blockMethods);
@@ -48,10 +43,11 @@ export async function transactionBlock(data, config) {
}
export default transactionBlock;
// const exampleBlock = await transactionBlock({
-// amount: 1000,
+// amount: 1000n,
// receiver: viatCipherSuite.createBlockNonce(64),
// sender: viatCipherSuite.createBlockNonce(64),
-// mana: 1000,
+// mana: 1000n,
+// sequence: 0n
// });
// console.log('Block HASH/ID', await exampleBlock.id());
// console.log('Transaction Block', exampleBlock);
diff --git a/viat/blocks/transaction/notes.md b/viat/blocks/transaction/notes.md
new file mode 100644
index 00000000..c51923ea
--- /dev/null
+++ b/viat/blocks/transaction/notes.md
@@ -0,0 +1,10 @@
+# NOTES
+
+Use hashlink to reverse transaction - requires info - send to address owner must supply hashlink code else reverts
+After receiver submits hashlink code the transaction can then be verified and kept else is reversed due to timelock
+Auto reverse transaction to bad address
+
+Create burn address for burnable assets.
+Viat can't be burned but if sent to this address will be moved out of circulation.
+
+Include Block height or numerical ID starting from 0 for transaction blocks.
diff --git a/viat/blocks/transaction/schema.js b/viat/blocks/transaction/schema.js
new file mode 100644
index 00000000..e7574ed5
--- /dev/null
+++ b/viat/blocks/transaction/schema.js
@@ -0,0 +1,15 @@
+// Basic Block Schema
+import { schemaValidator, validateSchema } from '#utilities/schema/index';
+import viatCipherSuite from '#crypto/cipherSuite/viat.js';
+export const transactionBlockSchema = schemaValidator.object({
+ data: schemaValidator.object({
+ core: schemaValidator.object({
+ amount: schemaValidator.bigint().required(),
+ receiver: schemaValidator.binary().required(),
+ sender: schemaValidator.binary().required(),
+ mana: schemaValidator.bigint().required(),
+ sequence: schemaValidator.bigint().required()
+ }).required(),
+ }).required(),
+}).required();
+export default transactionBlockSchema;
diff --git a/viat/blocks/transaction/uri.js b/viat/blocks/transaction/uri.js
index 92f67f72..d0839129 100644
--- a/viat/blocks/transaction/uri.js
+++ b/viat/blocks/transaction/uri.js
@@ -62,6 +62,10 @@ export async function getTransactionURLFromBlock(block) {
export async function getTransactionPathURLFromBlock(block) {
return getTransactionPathURL(await block.getHash(), block.getSender());
}
+export const directoryTemplate = {
+ // confirmations: {},
+ verifications: {},
+};
export const api = {
blockFilename: transactionBlockFilename,
getPrefixPath: getTransactionPrefixPath,
@@ -72,6 +76,7 @@ export const api = {
getURL: getTransactionURL,
urlToPath: transactionURLToPath,
prefixPath: getTransactionPrefixPath,
+ directoryTemplate,
};
export const blockMethods = {
getPath() {
diff --git a/viat/blocks/utils.js b/viat/blocks/utils.js
index d3871318..6c92138e 100644
--- a/viat/blocks/utils.js
+++ b/viat/blocks/utils.js
@@ -15,20 +15,24 @@ export async function createBlockFromObject(blockObject, config) {
}
}
}
-export async function loadBlock(filepath, pathPrefix) {
- const { source } = this;
- const fullFilepath = (pathPrefix) ? path.join(pathPrefix, filepath) : filepath;
- const blockObject = await readStructured(fullFilepath);
- const config = {
- source
- };
- if (source) {
- return createBlockFromObject(blockObject, config);
- }
-}
-export async function getBlockFromBlock(filepath, sourceBlock) {
- const { source } = sourceBlock;
+export async function getFullPathFromBlock(filepath, source) {
const networkPath = (source) ? source().networkPath : undefined;
const fullFilepath = (networkPath) ? path.join(networkPath, filepath) : filepath;
return fullFilepath;
}
+export async function loadBlock(filepath, config) {
+ const blockObject = await readStructured(filepath);
+ return createBlockFromObject(blockObject, config);
+}
+// SET Start time of nextwork creation invalidate anything before
+// Auto remove any number with more or less integers that possible
+export async function validateTimestamp(sourceBlock) {
+ const timestamp = sourceBlock?.data?.meta?.timestamp;
+ if (!timestamp) {
+ return false;
+ }
+ if (sourceBlock.timestamp && sourceBlock.timestamp > Date.now()) {
+ return false;
+ }
+ return true;
+}
diff --git a/viat/blocks/wallet/block.js b/viat/blocks/wallet/block.js
index 3e561783..502eaed8 100644
--- a/viat/blocks/wallet/block.js
+++ b/viat/blocks/wallet/block.js
@@ -9,3 +9,4 @@
// Backup Address
// Proxy Address
// Identity?
+// role: auditor, validator, user, admin
diff --git a/viat/blocks/wallet/notes.md b/viat/blocks/wallet/notes.md
new file mode 100644
index 00000000..5d23f73b
--- /dev/null
+++ b/viat/blocks/wallet/notes.md
@@ -0,0 +1,14 @@
+# WALLET METHODS
+
+- GET ALL ACTIONS (IN/OUT)
+ - Add up confirmed actions in, out, and final
+ - Add up pending actions in, out, and final
+ - Add up ALL actions in, out, and final
+ - GET ALL ADDRESSES
+ - GET TXs
+ - SEARCH TXs
+ - GET ALL IN ADDRESSES
+ - GET Receipts
+ - SEARCH Receipts
+ - GET ALL OUT ADDRESSES
+ - GET FAVORITES
diff --git a/viat/blocks/wallet/uri.js b/viat/blocks/wallet/uri.js
index 41b50a01..45f29c63 100644
--- a/viat/blocks/wallet/uri.js
+++ b/viat/blocks/wallet/uri.js
@@ -37,6 +37,12 @@ export function getWalletURL(walletAddress) {
export function walletURLToPath(url) {
return url.replace(transactionDefaults.urlPathnameRegex, transactionDefaults.directoryPathname);
}
+export const directoryTemplate = {
+ transactions: {},
+ receipts: {},
+ state: {},
+ data: {},
+};
export const api = {
blockFilename: walletBlockFilename,
getPrefixPath: getWalletPrefixPath,
@@ -49,6 +55,7 @@ export const api = {
getBlockURL: getWalletURL,
urlToPath: walletURLToPath,
prefixPath: getWalletPrefixPath,
+ directoryTemplate,
};
export default api;
// const walletAddressex = viatCipherSuite.createBlockNonce(64);
diff --git a/viat/createWalletCLI.js b/viat/createWalletCLI.js
index 49dba3aa..68d593f9 100755
--- a/viat/createWalletCLI.js
+++ b/viat/createWalletCLI.js
@@ -1,10 +1,20 @@
#!/usr/bin/env node
import { Command, program } from 'commander';
+import {
+ completedLog,
+ errorLog,
+ fatalLog,
+ infoLog,
+ noteLog,
+ successLog,
+ verboseLog,
+ warningLog
+} from '#utilities/logs/logs';
import { decode } from '#utilities/serialize';
import { wallet } from './wallet/wallet.js';
async function createWallet(filename, filepath, key) {
const walletInstance = await wallet();
- // console.log(filename, filepath);
+ infoLog(`Creating wallet with filename: ${filename}, filepath: ${filepath}`);
await walletInstance.saveToFile(filename, filepath, key);
return walletInstance;
}
@@ -16,7 +26,9 @@ program
.action(async (filename, filepath, key) => {
// Execute the function
const result = await createWallet(filename, filepath, key);
- // console.log(await decode(await result.exportBinary()));
+ if (result) {
+ completedLog(`Created wallet with filename: ${filename}, filepath: ${filepath}`);
+ }
});
program.addHelpText('after', `
Example Commands:
diff --git a/viat/defaults.js b/viat/defaults.js
index 4643d334..34f5f219 100644
--- a/viat/defaults.js
+++ b/viat/defaults.js
@@ -12,14 +12,20 @@ const vFED = 'Viat Federal Reserve';
// whole:8 decimal:56|69 total:64|77
// Used for -> for micro payments, nano transactions, quantum payments (ultra-fine granularity transactions), High-Frequency Trading Fees, Low-Value Use Cases, Layer-2 or Batching, Counterparty Compatibility, atomic swaps, Viat Federal Reserve Deflationary Mechanism
const coinDecimalPlaces = 69;
-const coinMaxSupplyDisplay = '52,000,000.0';
+const coinMaxSupplyDisplay = '52,000,000';
const coinMaxWholeSupplyDisplay = '52000000';
+const digitTotal = coinDecimalPlaces + coinMaxWholeSupplyDisplay.length;
+const coinMaxWholeSupplyNumber = 52000000;
+const coinMaxWholeSupplyBigInt = 52000000n;
const coinMaxSupply = `${coinMaxWholeSupplyDisplay}${'0'.padEnd(coinDecimalPlaces, '0')}`;
const coinDigitCount = coinMaxSupply.length;
const coinMaxSupplyLength = coinMaxSupply.length;
const coinMaxWholeSupplyLength = coinMaxWholeSupplyDisplay.length;
const coinMaxSupplyInt = BigInt(coinMaxSupply);
const coinMaxSupplyParsed = '52,000,000.0'.padEnd(coinDecimalPlaces, '0');
+// Add Max Supply in smallest units
+// Check sizes
+// Add smallest unit math for bigint
const viatDefaults = {
coinElementName,
coinElementSymbol,
diff --git a/viat/index.js b/viat/index.js
index df2d07aa..bed7e940 100644
--- a/viat/index.js
+++ b/viat/index.js
@@ -1,2 +1,19 @@
+import { Superstructure, superstructure } from './superstructure/index.js';
import { Wallet, wallet } from './wallet/wallet.js';
-export { Wallet, wallet };
+import { transactionBlock } from './blocks/transaction/block.js';
+// const sender = await wallet();
+// const receiver = await wallet();
+// await sender.generateAddress();
+// const exampleBlock = await transactionBlock({
+// amount: 1000n,
+// receiver: receiver.address,
+// sender: sender.address,
+// mana: 1000n,
+// sequence: 0n
+// });
+// await exampleBlock.signFull(sender);
+// console.log('Wallet Example:', exampleBlock.block);
+// console.log(await exampleBlock.verifyFullSignature(sender));
+export {
+ Wallet, wallet, Superstructure, superstructure
+};
diff --git a/viat/math/coin.js b/viat/math/coin.js
index 23d20e92..a8b74f63 100644
--- a/viat/math/coin.js
+++ b/viat/math/coin.js
@@ -4,6 +4,7 @@ import {
isNotNumber,
isNotString,
isNumber,
+ isString,
noValue
} from '@universalweb/acid';
import { encode } from '#utilities/serialize';
@@ -11,7 +12,10 @@ import viatDefaults from '#viat/defaults';
const {
coinDecimalPlaces, coinMaxSupply, coinMaxSupplyLength, coinMaxWholeSupplyLength, coinMaxSupplyDisplay, coinMaxSupplyInt
} = viatDefaults;
-function displayAmount(bigInt) {
+// TODO: Change API so that using strings is obvious or numbers or bigInt or unify them
+// Already have smallest unit convert for math by removing period combine both sides then add the additional zeroes for full size
+// or maybe do bitMath to merge into a singular number
+export function displayAmount(bigInt) {
if (!isBigInt(bigInt)) {
return;
}
@@ -20,7 +24,7 @@ function displayAmount(bigInt) {
const fracPart = str.slice(-coinDecimalPlaces).replace(/0+$/, '') || '0';
return `${intPart}.${fracPart}`;
}
-function displayAmountWithCommas(bigInt) {
+export function displayAmountWithCommas(bigInt) {
if (!isBigInt(bigInt)) {
return;
}
@@ -29,7 +33,7 @@ function displayAmountWithCommas(bigInt) {
const fracPart = str.slice(-coinDecimalPlaces).replace(/0+$/, '') || '0';
return `${intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',')}.${fracPart}`;
}
-function formatUnitsWithCommas(value) {
+export function formatUnitsWithCommas(value) {
if (isNotString(value)) {
return;
}
@@ -40,31 +44,33 @@ function formatUnitsWithCommas(value) {
const intPart = intPartRaw.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return `${intPart}.${fracPart}`;
}
-function isValidFormattedNumber(str) {
+export function isValidFormattedNumber(str) {
// Must only contain digits, commas, or at most one dot
return (/^[\d,]*\.?\d*$/).test(str);
}
-function normalizeFormattedNumber(str) {
+export function normalizeFormattedNumber(str) {
const cleaned = str.replace(/,/g, '').trim();
if (!(/^\d*\.?\d*$/).test(cleaned)) {
return;
}
return cleaned;
}
-function isBigIntAboveMaxSupply(value) {
+export function isBigIntAboveMaxSupply(value) {
if (hasValue(value)) {
return value.toString().length >= coinMaxSupplyLength;
}
return false;
}
-function isBigIntBelowMaxSupply(value) {
+export function isBigIntBelowMaxSupply(value) {
return value.toString().length <= coinMaxSupplyLength;
}
-function convertToBigIntSafely(value) {
- if (isNotString(value) && isNotNumber(value)) {
- return;
- }
- if (isValidFormattedNumber(value)) {
+export function convertToBigIntSafely(value) {
+ if (isNumber(value)) {
+ const converted = BigInt(value);
+ if (isBigIntBelowMaxSupply(converted)) {
+ return converted;
+ }
+ } else if (isString(value) && isValidFormattedNumber(value)) {
const converted = BigInt(value);
if (isBigIntBelowMaxSupply(converted)) {
return converted;
@@ -72,13 +78,13 @@ function convertToBigIntSafely(value) {
}
return;
}
-function isValidAmount(source) {
+export function isValidAmount(source) {
if (hasValue(source) && isBigInt(source) && isBigIntBelowMaxSupply(source)) {
- return true;
+ return source >= 0n;
}
return false;
}
-function parseUnits(displayStr) {
+export function parseStringUnits(displayStr) {
if (isNotString(displayStr) || !isValidFormattedNumber(displayStr)) {
return;
}
@@ -95,63 +101,87 @@ function parseUnits(displayStr) {
return converted;
}
}
-function normalizeConvertToBigInt(value) {
- return parseUnits(normalizeFormattedNumber(value));
+export function normalizeConvertToBigInt(value) {
+ return parseStringUnits(normalizeFormattedNumber(value));
}
-function ensureZeroBigInt(source) {
+export function ensureZeroBigInt(source) {
if (noValue(source)) {
return 0n;
}
return source;
}
-function toSmallestUnit(value) {
- if (isNotNumber(value) || !isFinite(value)) {
- return;
+export function toSmallestUnit(value) {
+ if (isNumber(value)) {
+ return parseStringUnits(value.toString());
+ } else if (isString(value)) {
+ return parseStringUnits(value);
+ } else if (isBigInt(value)) {
+ const strValue = value.toString();
+ if (isBigIntBelowMaxSupply(value) && strValue.length <= coinMaxSupplyLength) {
+ return value;
+ }
+ }
+ return;
+}
+export function ensureSmallestUnit(value) {
+ if (isNumber(value) && isFinite(value)) {
+ const converted = convertToBigIntSafely(value);
+ if (isBigInt(converted)) {
+ return toSmallestUnit(converted);
+ }
+ return 0n;
+ }
+ if (isBigInt(value)) {
+ return toSmallestUnit(value);
}
- return parseUnits(value.toString());
+ return 0n;
}
-function fromSmallestUnit(value) {
+export function fromSmallestUnit(value) {
const str = value.toString().padStart(coinDecimalPlaces + 1, '0');
const intPart = str.slice(0, -coinDecimalPlaces);
const fracPart = str.slice(-coinDecimalPlaces).replace(/0+$/, '');
return fracPart ? `${intPart}.${fracPart}` : intPart;
}
-function applyPercent(amount, percent) {
- return (amount * BigInt(percent)) / BigInt(10 ** coinDecimalPlaces);
+function getBigIntPercentage(value, percentage) {
+ return (value * percentage) / 100n;
}
-function mod(a, b) {
+function getBigIntPercentageOf(part, whole) {
+ const bigPart = part;
+ const bigWhole = whole;
+ if (bigWhole === 0n) {
+ return;
+ }
+ return (bigPart * 100n) / bigWhole;
+}
+export function mod(a, b) {
return a % b;
}
-function divide(a, b) {
- if (b === 0n) {
- return;
+export function divide(a, b) {
+ if (b === 0n || a === 0n) {
+ return 0n;
}
return a / b;
}
-function multiply(a, b) {
+export function multiply(a, b) {
+ if (b === 0n || a === 0n) {
+ return 0n;
+ }
return a * b;
}
-function subtract(a, b) {
+export function exponent(a, b) {
+ return a ** b;
+}
+export function subtract(a, b) {
if (b > a) {
return;
}
return a - b;
}
-function add(a, b) {
+export function add(a, b) {
return a + b;
}
-const mathUtils = {
- displayAmount,
- parseUnits,
- applyPercent,
- mod,
- divide,
- multiply,
- subtract,
- add
-};
// TODO: Consider SIMD/Bit ops instead
-function bigIntToBuffer(bigInt) {
+export function bigIntToBuffer(bigInt) {
if (isBigInt(bigInt)) {
return Buffer.from(bigInt.toString(16), 'hex');
}
@@ -166,20 +196,20 @@ function bigIntToBuffer(bigInt) {
// }
// return buffer;
// }
-function bufferToBigInt(source) {
+export function bufferToBigInt(source) {
if (Buffer.isBuffer(source)) {
return BigInt(`0x${source.toString('hex')}`);
}
return;
}
-function bufferToBigInt2(buf) {
+export function bufferToBigIntBit(buf) {
let result = 0n;
for (const byte of buf) {
result = (result << 8n) + BigInt(byte);
}
return result;
}
-function getBigIntByteSize(bigint) {
+export function getBigIntByteSize(bigint) {
let bits = 0n;
let n = bigint;
while (n !== 0n) {
@@ -188,13 +218,26 @@ function getBigIntByteSize(bigint) {
}
return Number((bits + 7n) / 8n);
}
+const mathUtils = {
+ displayAmount,
+ parseStringUnits,
+ getBigIntPercentage,
+ mod,
+ divide,
+ multiply,
+ subtract,
+ add,
+ getBigIntByteSize,
+ bufferToBigInt,
+ bufferToBigIntBit
+};
export default mathUtils;
// console.log(getBigIntByteSize(coinMaxSupplyInt));
// console.log(bufferToBigInt(bigIntToBuffer(coinMaxSupplyInt)));
// console.log((await encode(coinMaxSupplyInt)).length);
// console.log((await encode(bigIntToBuffer(coinMaxSupplyInt))).length);
// console.log(isValidAmount(100000000000000000000000000000000000000000000000000000000000n), '100000000000000000000000000000000000000000000000000000000000'.length);
-// console.log(toSmallestUnit(1), fromSmallestUnit(toSmallestUnit(1)));
+// console.log(getBigIntPercentageOf(20n, 200n), BigInt(10n ** 69n), toSmallestUnit(5.5), isValidAmount(0n), fromSmallestUnit(toSmallestUnit(999999)));
// const amountA = 10000000000000000000000000000000000000000000000000000n;
// const amountB = 10000000000000000000000000000000000000000000000000000n;
// const total = add(amountA, amountB);
diff --git a/viat/metaTrie/bloom.js b/viat/metaTrie/bloom.js
new file mode 100644
index 00000000..e69de29b
diff --git a/viat/metaTrie/trie.js b/viat/metaTrie/trie.js
new file mode 100644
index 00000000..f8b85b1a
--- /dev/null
+++ b/viat/metaTrie/trie.js
@@ -0,0 +1,74 @@
+import {
+ eachArray, forOf, hasDot, hasValue,
+ isMap
+} from '@universalweb/acid';
+class FileSystemTrie {
+ constructor() {
+ this.root = new Map();
+ }
+ insert(path, value) {
+ const parts = path.split('/').filter(Boolean);
+ let current = this.root;
+ eachArray(parts, (part, index, source, arrayLength) => {
+ console.log(path, value, current, arrayLength, index);
+ if (isMap(current) && index === (arrayLength - 1) && hasValue(value)) {
+ current.set(part, value);
+ } else if (!current.has(part)) {
+ if (!hasDot(part)) {
+ current.set(part, new Map());
+ }
+ }
+ current = current.get(part);
+ });
+ }
+ get(path) {
+ // Split path into parts, ignoring empty segments
+ const parts = path.split('/').filter(Boolean);
+ let current = this.root;
+ eachArray(parts, (part) => {
+ if (!current.has(part)) {
+ // Break the loop if the path does not exist
+ current = undefined;
+ return false;
+ }
+ current = current.get(part);
+ });
+ return current;
+ }
+ print(root = this.root, indent = '') {
+ const classSource = this;
+ forOf(root.entries(), (value, key) => {
+ if (isMap(value)) {
+ console.log(`${indent}${key}/`);
+ classSource.print(value, `${indent} `);
+ } else {
+ console.log(`${indent}${key}`, value);
+ }
+ });
+ }
+ buildObject(root = this.root) {
+ const obj = {};
+ forOf(root.entries(), (value, key) => {
+ if (isMap(value)) {
+ obj[key] = this.buildObject(value);
+ } else {
+ obj[key] = value;
+ }
+ });
+ return obj;
+ }
+}
+export async function fileSystemTrie(...args) {
+ return new FileSystemTrie(...args);
+}
+export default fileSystemTrie;
+// Example usage:
+// const fsTrie = new FileSystemTrie();
+// fsTrie.insert('/folder1/folder2/file.txt', 'File content');
+// fsTrie.insert('/folder1/folder3');
+// fsTrie.insert('/folder1/folder3/file2.txt', 'Another file');
+// fsTrie.insert('/folder1/folder3/folder4', new Map());
+// fsTrie.print();
+// console.log('Retrieved:', fsTrie.get('/folder1/folder2/file.txt'));
+// console.log('Retrieved folder:', fsTrie.get('/folder1/folder3'));
+// console.log(fsTrie.buildObject());
diff --git a/viat/superStructure/createFilesystem.js b/viat/superStructure/createFilesystem.js
index 64096948..ee87db49 100644
--- a/viat/superStructure/createFilesystem.js
+++ b/viat/superStructure/createFilesystem.js
@@ -18,7 +18,7 @@ const viatFilesystemObject = {
wallets: {
url: 'w',
},
- audit: {
+ audits: {
url: 'a',
},
domains: {
@@ -31,11 +31,10 @@ export async function createViatFilesystem(basePath, filesystemObject = viatFile
export async function viatConfigToFilesystem(config = {}) {
config.source ??= viatFilesystemObject;
config.folderPath ??= getViatDirectory();
- console.log(config);
- // await configToFilesystem(config);
+ await configToFilesystem(config);
return true;
}
-console.log(await viatConfigToFilesystem());
+// console.log(await viatConfigToFilesystem());
// const filesystemFolder = path.normalize(`${currentPath(import.meta)}/../filesystem/testnet/`);
// await createFolderStructure({
// folderPath: filesystemFolder,
diff --git a/viat/superStructure/index.js b/viat/superStructure/index.js
index 697bab1b..6bf0b6ac 100644
--- a/viat/superStructure/index.js
+++ b/viat/superStructure/index.js
@@ -1,10 +1,31 @@
-class SuperStructure {
+export class Superstructure {
constructor() {
+ // Initialize any necessary properties
+ console.log('Superstructure initializing');
}
async createGenesisBlock() {
}
async createGenesisWalletBlock() {
}
- async createGenesisVerificationBlock() {
+ async insertBlock(source) {
+ // Logic to insert a block into the superstructure
+ console.log('Inserting block:', source);
}
+ async appendBlock(source) {
+ // Logic to append a block to the superstructure
+ console.log('Appending block:', source);
+ }
+ async prependBlock(source) {
+ // Logic to prepend a block to the superstructure
+ console.log('Prepending block:', source);
+ }
+ async removeBlock(source) {
+ // Logic to remove a block from the superstructure
+ console.log('Removing block:', source);
+ }
+}
+export async function superstructure() {
+ const source = new Superstructure();
+ return source;
}
+export default superstructure;
diff --git a/viat/wallet/wallet.js b/viat/wallet/wallet.js
index 5c6161fd..5a70e96b 100644
--- a/viat/wallet/wallet.js
+++ b/viat/wallet/wallet.js
@@ -2,6 +2,7 @@
import { decode, encode } from '#utilities/serialize';
import { CryptoID } from '#components/cryptoID/index';
import { isBuffer } from '@universalweb/acid';
+import { transactionBlock } from '#viat/blocks/transaction/block';
export class Wallet extends CryptoID {
constructor(config, optionalArg) {
super(false);
@@ -11,12 +12,22 @@ export class Wallet extends CryptoID {
await this.initialize(config, optionalArg);
return this;
}
- createFolder(initialPath) {
+ async send(amount, receiver, mana = 1n) {
+ const sender = await this.getAddress();
+ const txBlock = await transactionBlock({
+ amount,
+ receiver,
+ sender,
+ mana
+ });
+ console.log('Transaction Block:', txBlock.block);
}
}
export function wallet(config) {
const source = new Wallet(config);
return source;
}
+// const example = await wallet();
+// console.log('Wallet Example:', await example.exportKeypairs());
// (await wallet('/Users/thomasmarchi/MEGA/Github/Network/viat/wallet.bin'));
// console.log('Wallet:', (await wallet('/Users/thomasmarchi/MEGA/Github/Network/viat/wallet.bin')));