This page tests TensorFlow.js and TextEncoder functionality in a browser environment.
+
+
+
Results will appear here...
+
+
+
+
+
diff --git a/docs/publishing-cli.md b/docs/publishing-cli.md
index 722dfc9d..afc69d64 100644
--- a/docs/publishing-cli.md
+++ b/docs/publishing-cli.md
@@ -6,7 +6,7 @@ This document explains how to publish both the @soulcraft/brainy and @soulcraft/
Before publishing, ensure you have:
-1. Node.js >= 24.3.0 installed
+1. Node.js >= 24.4.0 installed
2. An npm account with access to the @soulcraft organization
3. Logged in to npm using `npm login`
diff --git a/package-lock.json b/package-lock.json
index baef2b49..ab6b17c7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -38,7 +38,7 @@
"typescript": "^5.4.5"
},
"engines": {
- "node": ">=24.3.0"
+ "node": ">=24.4.0"
}
},
"node_modules/@aws-crypto/crc32": {
@@ -244,64 +244,64 @@
}
},
"node_modules/@aws-sdk/client-s3": {
- "version": "3.842.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.842.0.tgz",
- "integrity": "sha512-T5Rh72Rcq1xIaM8KkTr1Wpr7/WPCYO++KrM+/Em0rq2jxpjMMhj77ITpgH7eEmNxWmwIndTwqpgfmbpNfk7Gbw==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.844.0.tgz",
+ "integrity": "sha512-Yhp8+U4KFVQqL6phZ5yrHF5PdCvKWbYtLSS+egAfAW+N5w78amhbZcctervj59uqOZHMGDWXuDBklN+7eVfasg==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.840.0",
- "@aws-sdk/credential-provider-node": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
+ "@aws-sdk/credential-provider-node": "3.844.0",
"@aws-sdk/middleware-bucket-endpoint": "3.840.0",
"@aws-sdk/middleware-expect-continue": "3.840.0",
- "@aws-sdk/middleware-flexible-checksums": "3.840.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.844.0",
"@aws-sdk/middleware-host-header": "3.840.0",
"@aws-sdk/middleware-location-constraint": "3.840.0",
"@aws-sdk/middleware-logger": "3.840.0",
"@aws-sdk/middleware-recursion-detection": "3.840.0",
- "@aws-sdk/middleware-sdk-s3": "3.840.0",
+ "@aws-sdk/middleware-sdk-s3": "3.844.0",
"@aws-sdk/middleware-ssec": "3.840.0",
- "@aws-sdk/middleware-user-agent": "3.840.0",
+ "@aws-sdk/middleware-user-agent": "3.844.0",
"@aws-sdk/region-config-resolver": "3.840.0",
- "@aws-sdk/signature-v4-multi-region": "3.840.0",
+ "@aws-sdk/signature-v4-multi-region": "3.844.0",
"@aws-sdk/types": "3.840.0",
- "@aws-sdk/util-endpoints": "3.840.0",
+ "@aws-sdk/util-endpoints": "3.844.0",
"@aws-sdk/util-user-agent-browser": "3.840.0",
- "@aws-sdk/util-user-agent-node": "3.840.0",
+ "@aws-sdk/util-user-agent-node": "3.844.0",
"@aws-sdk/xml-builder": "3.821.0",
"@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
+ "@smithy/core": "^3.7.0",
"@smithy/eventstream-serde-browser": "^4.0.4",
"@smithy/eventstream-serde-config-resolver": "^4.1.2",
"@smithy/eventstream-serde-node": "^4.0.4",
- "@smithy/fetch-http-handler": "^5.0.4",
+ "@smithy/fetch-http-handler": "^5.1.0",
"@smithy/hash-blob-browser": "^4.0.4",
"@smithy/hash-node": "^4.0.4",
"@smithy/hash-stream-node": "^4.0.4",
"@smithy/invalid-dependency": "^4.0.4",
"@smithy/md5-js": "^4.0.4",
"@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
+ "@smithy/middleware-endpoint": "^4.1.14",
+ "@smithy/middleware-retry": "^4.1.15",
"@smithy/middleware-serde": "^4.0.8",
"@smithy/middleware-stack": "^4.0.4",
"@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
+ "@smithy/node-http-handler": "^4.1.0",
"@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"@smithy/url-parser": "^4.0.4",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
+ "@smithy/util-defaults-mode-browser": "^4.0.22",
+ "@smithy/util-defaults-mode-node": "^4.0.22",
"@smithy/util-endpoints": "^3.0.6",
"@smithy/util-middleware": "^4.0.4",
"@smithy/util-retry": "^4.0.6",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/util-stream": "^4.2.3",
"@smithy/util-utf8": "^4.0.0",
"@smithy/util-waiter": "^4.0.6",
"@types/uuid": "^9.0.1",
@@ -319,44 +319,44 @@
"license": "MIT"
},
"node_modules/@aws-sdk/client-sso": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz",
- "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz",
+ "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/middleware-host-header": "3.840.0",
"@aws-sdk/middleware-logger": "3.840.0",
"@aws-sdk/middleware-recursion-detection": "3.840.0",
- "@aws-sdk/middleware-user-agent": "3.840.0",
+ "@aws-sdk/middleware-user-agent": "3.844.0",
"@aws-sdk/region-config-resolver": "3.840.0",
"@aws-sdk/types": "3.840.0",
- "@aws-sdk/util-endpoints": "3.840.0",
+ "@aws-sdk/util-endpoints": "3.844.0",
"@aws-sdk/util-user-agent-browser": "3.840.0",
- "@aws-sdk/util-user-agent-node": "3.840.0",
+ "@aws-sdk/util-user-agent-node": "3.844.0",
"@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
+ "@smithy/core": "^3.7.0",
+ "@smithy/fetch-http-handler": "^5.1.0",
"@smithy/hash-node": "^4.0.4",
"@smithy/invalid-dependency": "^4.0.4",
"@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
+ "@smithy/middleware-endpoint": "^4.1.14",
+ "@smithy/middleware-retry": "^4.1.15",
"@smithy/middleware-serde": "^4.0.8",
"@smithy/middleware-stack": "^4.0.4",
"@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
+ "@smithy/node-http-handler": "^4.1.0",
"@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"@smithy/url-parser": "^4.0.4",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
+ "@smithy/util-defaults-mode-browser": "^4.0.22",
+ "@smithy/util-defaults-mode-node": "^4.0.22",
"@smithy/util-endpoints": "^3.0.6",
"@smithy/util-middleware": "^4.0.4",
"@smithy/util-retry": "^4.0.6",
@@ -368,25 +368,25 @@
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz",
- "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz",
+ "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==",
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.840.0",
"@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
+ "@smithy/core": "^3.7.0",
"@smithy/node-config-provider": "^4.1.3",
"@smithy/property-provider": "^4.0.4",
"@smithy/protocol-http": "^5.1.2",
"@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-middleware": "^4.0.4",
"@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "fast-xml-parser": "5.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -394,12 +394,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz",
- "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz",
+ "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/property-provider": "^4.0.4",
"@smithy/types": "^4.3.1",
@@ -410,20 +410,20 @@
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz",
- "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz",
+ "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/types": "3.840.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
+ "@smithy/fetch-http-handler": "^5.1.0",
+ "@smithy/node-http-handler": "^4.1.0",
"@smithy/property-provider": "^4.0.4",
"@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/util-stream": "^4.2.3",
"tslib": "^2.6.2"
},
"engines": {
@@ -431,18 +431,18 @@
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz",
- "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz",
+ "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
- "@aws-sdk/credential-provider-env": "3.840.0",
- "@aws-sdk/credential-provider-http": "3.840.0",
- "@aws-sdk/credential-provider-process": "3.840.0",
- "@aws-sdk/credential-provider-sso": "3.840.0",
- "@aws-sdk/credential-provider-web-identity": "3.840.0",
- "@aws-sdk/nested-clients": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
+ "@aws-sdk/credential-provider-env": "3.844.0",
+ "@aws-sdk/credential-provider-http": "3.844.0",
+ "@aws-sdk/credential-provider-process": "3.844.0",
+ "@aws-sdk/credential-provider-sso": "3.844.0",
+ "@aws-sdk/credential-provider-web-identity": "3.844.0",
+ "@aws-sdk/nested-clients": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/credential-provider-imds": "^4.0.6",
"@smithy/property-provider": "^4.0.4",
@@ -455,17 +455,17 @@
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz",
- "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz",
+ "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.840.0",
- "@aws-sdk/credential-provider-http": "3.840.0",
- "@aws-sdk/credential-provider-ini": "3.840.0",
- "@aws-sdk/credential-provider-process": "3.840.0",
- "@aws-sdk/credential-provider-sso": "3.840.0",
- "@aws-sdk/credential-provider-web-identity": "3.840.0",
+ "@aws-sdk/credential-provider-env": "3.844.0",
+ "@aws-sdk/credential-provider-http": "3.844.0",
+ "@aws-sdk/credential-provider-ini": "3.844.0",
+ "@aws-sdk/credential-provider-process": "3.844.0",
+ "@aws-sdk/credential-provider-sso": "3.844.0",
+ "@aws-sdk/credential-provider-web-identity": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/credential-provider-imds": "^4.0.6",
"@smithy/property-provider": "^4.0.4",
@@ -478,12 +478,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz",
- "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz",
+ "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/property-provider": "^4.0.4",
"@smithy/shared-ini-file-loader": "^4.0.4",
@@ -495,14 +495,14 @@
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz",
- "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz",
+ "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.840.0",
- "@aws-sdk/core": "3.840.0",
- "@aws-sdk/token-providers": "3.840.0",
+ "@aws-sdk/client-sso": "3.844.0",
+ "@aws-sdk/core": "3.844.0",
+ "@aws-sdk/token-providers": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/property-provider": "^4.0.4",
"@smithy/shared-ini-file-loader": "^4.0.4",
@@ -514,13 +514,13 @@
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz",
- "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz",
+ "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
- "@aws-sdk/nested-clients": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
+ "@aws-sdk/nested-clients": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/property-provider": "^4.0.4",
"@smithy/types": "^4.3.1",
@@ -564,22 +564,22 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.840.0.tgz",
- "integrity": "sha512-Kg/o2G6o72sdoRH0J+avdcf668gM1bp6O4VeEXpXwUj/urQnV5qiB2q1EYT110INHUKWOLXPND3sQAqh6sTqHw==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.844.0.tgz",
+ "integrity": "sha512-LCImZd1hpM0cegfdpgZyK6x4on4Ky+c9XCFURfE4wil1J9HXf6OP4KsfHQwt1yIkMEbFqvd/ab2I5fmp7S7aFA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
"@aws-crypto/crc32c": "5.2.0",
"@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/is-array-buffer": "^4.0.0",
"@smithy/node-config-provider": "^4.1.3",
"@smithy/protocol-http": "^5.1.2",
"@smithy/types": "^4.3.1",
"@smithy/util-middleware": "^4.0.4",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/util-stream": "^4.2.3",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -646,23 +646,23 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.840.0.tgz",
- "integrity": "sha512-rOUji7CayWN3O09zvvgLzDVQe0HiJdZkxoTS6vzOS3WbbdT7joGdVtAJHtn+x776QT3hHzbKU5gnfhel0o6gQA==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.844.0.tgz",
+ "integrity": "sha512-vOD5reqZszXBWMbZFN3EUar203o2i8gcoTdrymY4GMsAPDsh0k8yd3VJRNPuxT/017tP6G+rQepOGzna4umung==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@aws-sdk/util-arn-parser": "3.804.0",
- "@smithy/core": "^3.6.0",
+ "@smithy/core": "^3.7.0",
"@smithy/node-config-provider": "^4.1.3",
"@smithy/protocol-http": "^5.1.2",
"@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"@smithy/util-config-provider": "^4.0.0",
"@smithy/util-middleware": "^4.0.4",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/util-stream": "^4.2.3",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -685,15 +685,15 @@
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz",
- "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz",
+ "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/types": "3.840.0",
- "@aws-sdk/util-endpoints": "3.840.0",
- "@smithy/core": "^3.6.0",
+ "@aws-sdk/util-endpoints": "3.844.0",
+ "@smithy/core": "^3.7.0",
"@smithy/protocol-http": "^5.1.2",
"@smithy/types": "^4.3.1",
"tslib": "^2.6.2"
@@ -703,44 +703,44 @@
}
},
"node_modules/@aws-sdk/nested-clients": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz",
- "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz",
+ "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
"@aws-sdk/middleware-host-header": "3.840.0",
"@aws-sdk/middleware-logger": "3.840.0",
"@aws-sdk/middleware-recursion-detection": "3.840.0",
- "@aws-sdk/middleware-user-agent": "3.840.0",
+ "@aws-sdk/middleware-user-agent": "3.844.0",
"@aws-sdk/region-config-resolver": "3.840.0",
"@aws-sdk/types": "3.840.0",
- "@aws-sdk/util-endpoints": "3.840.0",
+ "@aws-sdk/util-endpoints": "3.844.0",
"@aws-sdk/util-user-agent-browser": "3.840.0",
- "@aws-sdk/util-user-agent-node": "3.840.0",
+ "@aws-sdk/util-user-agent-node": "3.844.0",
"@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
+ "@smithy/core": "^3.7.0",
+ "@smithy/fetch-http-handler": "^5.1.0",
"@smithy/hash-node": "^4.0.4",
"@smithy/invalid-dependency": "^4.0.4",
"@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
+ "@smithy/middleware-endpoint": "^4.1.14",
+ "@smithy/middleware-retry": "^4.1.15",
"@smithy/middleware-serde": "^4.0.8",
"@smithy/middleware-stack": "^4.0.4",
"@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
+ "@smithy/node-http-handler": "^4.1.0",
"@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"@smithy/url-parser": "^4.0.4",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
+ "@smithy/util-defaults-mode-browser": "^4.0.22",
+ "@smithy/util-defaults-mode-node": "^4.0.22",
"@smithy/util-endpoints": "^3.0.6",
"@smithy/util-middleware": "^4.0.4",
"@smithy/util-retry": "^4.0.6",
@@ -769,12 +769,12 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.840.0.tgz",
- "integrity": "sha512-8AoVgHrkSfhvGPtwx23hIUO4MmMnux2pjnso1lrLZGqxfElM6jm2w4jTNLlNXk8uKHGyX89HaAIuT0lL6dJj9g==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.844.0.tgz",
+ "integrity": "sha512-QC8nocQcZ3Bj7vTnuL47iNhcuUjMC46E2L85mU+sPQo3LN2qBVGSOTF+xSWGvmSFDpkN4ZXUMVeA0cJoJFEDFA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.840.0",
+ "@aws-sdk/middleware-sdk-s3": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/protocol-http": "^5.1.2",
"@smithy/signature-v4": "^5.1.2",
@@ -786,13 +786,13 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz",
- "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz",
+ "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.840.0",
- "@aws-sdk/nested-clients": "3.840.0",
+ "@aws-sdk/core": "3.844.0",
+ "@aws-sdk/nested-clients": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/property-provider": "^4.0.4",
"@smithy/shared-ini-file-loader": "^4.0.4",
@@ -829,13 +829,14 @@
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz",
- "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz",
+ "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==",
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.840.0",
"@smithy/types": "^4.3.1",
+ "@smithy/url-parser": "^4.0.4",
"@smithy/util-endpoints": "^3.0.6",
"tslib": "^2.6.2"
},
@@ -868,12 +869,12 @@
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.840.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz",
- "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==",
+ "version": "3.844.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz",
+ "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.840.0",
+ "@aws-sdk/middleware-user-agent": "3.844.0",
"@aws-sdk/types": "3.840.0",
"@smithy/node-config-provider": "^4.1.3",
"@smithy/types": "^4.3.1",
@@ -1712,9 +1713,9 @@
}
},
"node_modules/@smithy/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.6.0.tgz",
- "integrity": "sha512-Pgvfb+TQ4wUNLyHzvgCP4aYZMh16y7GcfF59oirRHcgGgkH1e/s9C0nv/v3WP+Quymyr5je71HeFQCwh+44XLg==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.7.0.tgz",
+ "integrity": "sha512-7ov8hu/4j0uPZv8b27oeOFtIBtlFmM3ibrPv/Omx1uUdoXvcpJ00U+H/OWWC/keAguLlcqwtyL2/jTlSnApgNQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/middleware-serde": "^4.0.8",
@@ -1723,7 +1724,7 @@
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-middleware": "^4.0.4",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/util-stream": "^4.2.3",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -1818,9 +1819,9 @@
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz",
- "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.1.0.tgz",
+ "integrity": "sha512-mADw7MS0bYe2OGKkHYMaqarOXuDwRbO6ArD91XhHcl2ynjGCFF+hvqf0LyQcYxkA1zaWjefSkU7Ne9mqgApSgQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/protocol-http": "^5.1.2",
@@ -1931,12 +1932,12 @@
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "4.1.13",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.13.tgz",
- "integrity": "sha512-xg3EHV/Q5ZdAO5b0UiIMj3RIOCobuS40pBBODguUDVdko6YK6QIzCVRrHTogVuEKglBWqWenRnZ71iZnLL3ZAQ==",
+ "version": "4.1.14",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.14.tgz",
+ "integrity": "sha512-+BGLpK5D93gCcSEceaaYhUD/+OCGXM1IDaq/jKUQ+ujB0PTWlWN85noodKw/IPFZhIKFCNEe19PGd/reUMeLSQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.6.0",
+ "@smithy/core": "^3.7.0",
"@smithy/middleware-serde": "^4.0.8",
"@smithy/node-config-provider": "^4.1.3",
"@smithy/shared-ini-file-loader": "^4.0.4",
@@ -1950,15 +1951,15 @@
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "4.1.14",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.14.tgz",
- "integrity": "sha512-eoXaLlDGpKvdmvt+YBfRXE7HmIEtFF+DJCbTPwuLunP0YUnrydl+C4tS+vEM0+nyxXrX3PSUFqC+lP1+EHB1Tw==",
+ "version": "4.1.15",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.15.tgz",
+ "integrity": "sha512-iKYUJpiyTQ33U2KlOZeUb0GwtzWR3C0soYcKuCnTmJrvt6XwTPQZhMfsjJZNw7PpQ3TU4Ati1qLSrkSJxnnSMQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/node-config-provider": "^4.1.3",
"@smithy/protocol-http": "^5.1.2",
"@smithy/service-error-classification": "^4.0.6",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"@smithy/util-middleware": "^4.0.4",
"@smithy/util-retry": "^4.0.6",
@@ -2012,9 +2013,9 @@
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.1.0.tgz",
+ "integrity": "sha512-vqfSiHz2v8b3TTTrdXi03vNz1KLYYS3bhHCDv36FYDqxT7jvTll1mMnCrkD+gOvgwybuunh/2VmvOMqwBegxEg==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/abort-controller": "^4.0.4",
@@ -2125,17 +2126,17 @@
}
},
"node_modules/@smithy/smithy-client": {
- "version": "4.4.5",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.5.tgz",
- "integrity": "sha512-+lynZjGuUFJaMdDYSTMnP/uPBBXXukVfrJlP+1U/Dp5SFTEI++w6NMga8DjOENxecOF71V9Z2DllaVDYRnGlkg==",
+ "version": "4.4.6",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.6.tgz",
+ "integrity": "sha512-3wfhywdzB/CFszP6moa5L3lf5/zSfQoH0kvVSdkyK2az5qZet0sn2PAHjcTDiq296Y4RP5yxF7B6S6+3oeBUCQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.6.0",
- "@smithy/middleware-endpoint": "^4.1.13",
+ "@smithy/core": "^3.7.0",
+ "@smithy/middleware-endpoint": "^4.1.14",
"@smithy/middleware-stack": "^4.0.4",
"@smithy/protocol-http": "^5.1.2",
"@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/util-stream": "^4.2.3",
"tslib": "^2.6.2"
},
"engines": {
@@ -2232,13 +2233,13 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.0.21",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.21.tgz",
- "integrity": "sha512-wM0jhTytgXu3wzJoIqpbBAG5U6BwiubZ6QKzSbP7/VbmF1v96xlAbX2Am/mz0Zep0NLvLh84JT0tuZnk3wmYQA==",
+ "version": "4.0.22",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.22.tgz",
+ "integrity": "sha512-hjElSW18Wq3fUAWVk6nbk7pGrV7ZT14DL1IUobmqhV3lxcsIenr5FUsDe2jlTVaS8OYBI3x+Og9URv5YcKb5QA==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/property-provider": "^4.0.4",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
@@ -2248,16 +2249,16 @@
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.0.21",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.21.tgz",
- "integrity": "sha512-/F34zkoU0GzpUgLJydHY8Rxu9lBn8xQC/s/0M0U9lLBkYbA1htaAFjWYJzpzsbXPuri5D1H8gjp2jBum05qBrA==",
+ "version": "4.0.22",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.22.tgz",
+ "integrity": "sha512-7B8mfQBtwwr2aNRRmU39k/bsRtv9B6/1mTMrGmmdJFKmLAH+KgIiOuhaqfKOBGh9sZ/VkZxbvm94rI4MMYpFjQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/config-resolver": "^4.1.4",
"@smithy/credential-provider-imds": "^4.0.6",
"@smithy/node-config-provider": "^4.1.3",
"@smithy/property-provider": "^4.0.4",
- "@smithy/smithy-client": "^4.4.5",
+ "@smithy/smithy-client": "^4.4.6",
"@smithy/types": "^4.3.1",
"tslib": "^2.6.2"
},
@@ -2319,13 +2320,13 @@
}
},
"node_modules/@smithy/util-stream": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz",
- "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.3.tgz",
+ "integrity": "sha512-cQn412DWHHFNKrQfbHY8vSFI3nTROY1aIKji9N0tpp8gUABRilr7wdf8fqBbSlXresobM+tQFNk6I+0LXK/YZg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
+ "@smithy/fetch-http-handler": "^5.1.0",
+ "@smithy/node-http-handler": "^4.1.0",
"@smithy/types": "^4.3.1",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-buffer-from": "^4.0.0",
@@ -2520,9 +2521,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "20.19.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.4.tgz",
- "integrity": "sha512-OP+We5WV8Xnbuvw0zC2m4qfB/BJvjyCwtNjhHdJxV1639SGSKrLmJkc3fMnp2Qy8nJyHp8RO6umxELN/dS1/EA==",
+ "version": "20.19.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.7.tgz",
+ "integrity": "sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
@@ -2805,9 +2806,9 @@
}
},
"node_modules/agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2908,9 +2909,9 @@
"license": "MIT"
},
"node_modules/bare-events": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
- "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz",
+ "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==",
"dev": true,
"license": "Apache-2.0",
"optional": true
@@ -3770,22 +3771,18 @@
"license": "MIT"
},
"node_modules/fast-xml-parser": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
- "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz",
+ "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
}
],
"license": "MIT",
"dependencies": {
- "strnum": "^1.0.5"
+ "strnum": "^2.1.0"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -3986,9 +3983,9 @@
}
},
"node_modules/get-uri": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",
- "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5304,9 +5301,9 @@
}
},
"node_modules/socks": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz",
- "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==",
+ "version": "2.8.6",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz",
+ "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5423,9 +5420,9 @@
}
},
"node_modules/strnum": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
- "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz",
+ "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==",
"funding": [
{
"type": "github",
diff --git a/package.json b/package.json
index d516a5ce..dfdbce81 100644
--- a/package.json
+++ b/package.json
@@ -22,14 +22,22 @@
"./types/augmentations": {
"import": "./dist/types/augmentations.js",
"types": "./dist/types/augmentations.d.ts"
+ },
+ "./utils/textEncoding": {
+ "import": "./dist/utils/textEncoding.js",
+ "types": "./dist/utils/textEncoding.d.ts"
+ },
+ "./dist/utils/textEncoding.js": {
+ "import": "./dist/utils/textEncoding.js",
+ "types": "./dist/utils/textEncoding.d.ts"
}
},
"engines": {
- "node": ">=24.3.0"
+ "node": ">=24.4.0"
},
"scripts": {
"prebuild": "node scripts/generate-version.js",
- "build": "BUILD_TYPE=unified rollup -c rollup.config.js && node scripts/patch-textencoder.js",
+ "build": "BUILD_TYPE=unified rollup -c rollup.config.js",
"build:browser": "BUILD_TYPE=browser rollup -c rollup.config.js",
"build:cli": "cd cli-package && npm run build",
"start": "node dist/unified.js",
@@ -53,7 +61,9 @@
"postinstall": "echo 'Note: If you encounter dependency conflicts with TensorFlow.js packages, please use: npm install --legacy-peer-deps'",
"dry-run": "npm pack --dry-run",
"test:cli": "node scripts/test-cli-locally.js",
- "test:all": "node scripts/test-all-environments.js"
+ "test:tensorflow": "node test-tensorflow-textencoder.js",
+ "test:all": "node scripts/test-all-environments.js",
+ "test": "npm run test:all"
},
"keywords": [
"vector-database",
diff --git a/scripts/test-all-environments.js b/scripts/test-all-environments.js
index 043f6835..83e868c2 100644
--- a/scripts/test-all-environments.js
+++ b/scripts/test-all-environments.js
@@ -66,6 +66,11 @@ async function runAllTests() {
runCommand('npm run build')
log('Main package built successfully!', colors.green)
+ // Apply TextEncoder patch
+ log('Applying TextEncoder patch...', colors.yellow)
+ runCommand('node scripts/patch-textencoder.js')
+ log('TextEncoder patch applied successfully!', colors.green)
+
// Build the browser package
log('Building browser package...', colors.yellow)
runCommand('npm run build:browser')
@@ -89,6 +94,11 @@ async function runAllTests() {
log(textEncodingResult)
log('Unified text encoding test completed!', colors.green)
+ log('Running TensorFlow and TextEncoder test...', colors.yellow)
+ const tensorflowTextEncoderResult = runCommand('node test-tensorflow-textencoder.js')
+ log(tensorflowTextEncoderResult)
+ log('TensorFlow and TextEncoder test completed!', colors.green)
+
logSection('RUNNING BROWSER TESTS')
// Start a simple HTTP server to serve the test files
@@ -214,6 +224,25 @@ async function runAllTests() {
log('Fallback test result:', colors.green)
log(fallbackResult.replace(/<[^>]*>/g, '').trim())
+ // Test TensorFlow and TextEncoder in browser
+ log('Running TensorFlow and TextEncoder browser test...', colors.yellow)
+ await page.goto(`http://localhost:${PORT}/demo/test-tensorflow-textencoder.html`)
+ await page.waitForSelector('#runTest')
+ await page.click('#runTest')
+ await page.waitForFunction(
+ () => {
+ const resultText = document.getElementById('result').textContent
+ return resultText.includes('Test completed')
+ },
+ { timeout: 30000 }
+ )
+
+ const browserTensorflowTextEncoderResult = await page.evaluate(() => {
+ return document.getElementById('result').innerHTML
+ })
+ log('TensorFlow and TextEncoder browser test result:', colors.green)
+ log(browserTensorflowTextEncoderResult.replace(/<[^>]*>/g, '').trim())
+
// Close the browser and server
await browser.close()
server.close()
@@ -239,6 +268,11 @@ async function runAllTests() {
log('Testing pipeline command...', colors.yellow)
const pipelineResult = runCommand('brainy test-pipeline "This is a test"')
log('Pipeline test completed!', colors.green)
+
+ // Test TensorFlow and TextEncoder in CLI
+ log('Testing TensorFlow and TextEncoder in CLI...', colors.yellow)
+ const cliTensorflowResult = runCommand('brainy test-tensorflow-textencoder')
+ log('TensorFlow and TextEncoder CLI test completed!', colors.green)
} catch (error) {
log(
"CLI tests failed. This might be expected if you don't have the CLI installed globally.",
diff --git a/src/index.ts b/src/index.ts
index 58acad54..814e445c 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,12 +1,12 @@
/**
- * OPFS BrainyData
- * A vector database using HNSW indexing with Origin Private File System storage
+ * Brainy
+ * A vector and graph database using HNSW
*/
-// Import unified text encoding utilities first to ensure they're available
-import { applyTensorFlowPatch } from './utils/textEncoding.js'
-// Apply the TensorFlow.js platform patch if needed
-applyTensorFlowPatch()
+// Import the setup file for its side-effects.
+// This MUST be the very first import to ensure patches are applied
+// before any other module (like TensorFlow.js) is loaded.
+import './setup.js'
// Export main BrainyData class and related types
import { BrainyData, BrainyDataConfig } from './brainyData.js'
@@ -39,10 +39,7 @@ import {
} from './utils/embedding.js'
// Export worker utilities
-import {
- executeInThread,
- cleanupWorkerPools
-} from './utils/workerUtils.js'
+import { executeInThread, cleanupWorkerPools } from './utils/workerUtils.js'
// Export environment utilities
import {
diff --git a/src/setup.ts b/src/setup.ts
new file mode 100644
index 00000000..edd4be4d
--- /dev/null
+++ b/src/setup.ts
@@ -0,0 +1,12 @@
+/**
+ * This file is imported for its side effects to patch the environment
+ * for TensorFlow.js before any other library code runs.
+ *
+ * It ensures that by the time TensorFlow.js is imported by any other
+ * module, the necessary compatibility fixes for the current Node.js
+ * environment are already in place.
+ */
+import { applyTensorFlowPatch } from './utils/textEncoding.js'
+
+// Apply the TensorFlow.js platform patch if needed
+applyTensorFlowPatch()
diff --git a/src/storage/fileSystemStorage.ts b/src/storage/fileSystemStorage.ts
index 19d77476..8a448f98 100644
--- a/src/storage/fileSystemStorage.ts
+++ b/src/storage/fileSystemStorage.ts
@@ -1,12 +1,47 @@
import { GraphVerb, HNSWNoun, StorageAdapter } from '../coreTypes.js'
-// Import Node.js built-in modules
-// Using dynamic imports for compatibility with ES modules
+// Dynamically and asynchronously load Node.js modules at the top level.
+// This ensures they are available as soon as this module is imported,
+// preventing race conditions with dependencies like TensorFlow.js.
let fs: any
let path: any
-// We'll initialize these modules in the init() method
-// No synchronous loading here to avoid issues with ES modules
+const nodeModulesPromise = (async () => {
+ // A reliable check for a Node.js environment.
+ const isNode =
+ typeof process !== 'undefined' &&
+ process.versions != null &&
+ process.versions.node != null
+
+ if (!isNode) {
+ return { fs: null, path: null }
+ }
+
+ try {
+ // Use the 'node:' prefix for unambiguous importing of built-in modules.
+ const fsModule = await import('node:fs')
+ const pathModule = await import('node:path')
+ // Return the modules, preferring the default export if it exists.
+ return {
+ fs: fsModule.default || fsModule,
+ path: pathModule.default || pathModule
+ }
+ } catch (error) {
+ console.error(
+ 'FileSystemStorage: Failed to load Node.js modules. This adapter is not supported in this environment.',
+ error
+ )
+ return { fs: null, path: null }
+ }
+})()
+
+// Immediately assign the modules once the promise resolves.
+nodeModulesPromise.then((modules) => {
+ fs = modules.fs
+ path = modules.path
+})
+
+// --- End of Refactored Code ---
// Constants for directory and file names
const ROOT_DIR = 'brainy-data'
@@ -63,80 +98,17 @@ export class FileSystemStorage implements StorageAdapter {
return
}
+ // Wait for the top-level module loading to complete.
+ await nodeModulesPromise
+
+ // Check if the modules were loaded successfully.
+ if (!fs || !path) {
+ throw new Error(
+ 'FileSystemStorage requires a Node.js environment, but `fs` and `path` modules could not be loaded.'
+ )
+ }
+
try {
- // Check if fs and path modules are available and have required methods
- if (!fs || !path || typeof path.resolve !== 'function') {
- console.log(
- 'Node.js modules not properly loaded, attempting to load them now'
- )
-
- // Try multiple approaches to load the modules
- const loadAttempts = [
- // Attempt 1: Use dynamic import
- async () => {
- console.log(
- 'Attempting to load Node.js modules with dynamic import'
- )
- const fsModule = await import('fs')
- const pathModule = await import('path')
-
- const fsResolved = fsModule.default || fsModule
- const pathResolved = pathModule.default || pathModule
-
- if (!pathResolved || typeof pathResolved.resolve !== 'function') {
- throw new Error(
- 'path.resolve is not a function after dynamic import'
- )
- }
-
- return { fs: fsResolved, path: pathResolved }
- },
-
- // Attempt 2: Use dynamic import with node: prefix
- async () => {
- console.log(
- 'Attempting to load Node.js modules with dynamic import("node:...")'
- )
- const fsModule = await import('node:fs')
- const pathModule = await import('node:path')
-
- const fsResolved = fsModule.default || fsModule
- const pathResolved = pathModule.default || pathModule
-
- if (!pathResolved || typeof pathResolved.resolve !== 'function') {
- throw new Error(
- 'path.resolve is not a function after dynamic import("node:path")'
- )
- }
-
- return { fs: fsResolved, path: pathResolved }
- }
- ]
-
- // Try each loading method until one succeeds
- let lastError = null
- for (const loadAttempt of loadAttempts) {
- try {
- const modules = await loadAttempt()
- fs = modules.fs
- path = modules.path
- console.log('Successfully loaded Node.js modules')
- break
- } catch (error) {
- lastError = error
- console.warn(`Module loading attempt failed:`, error)
- // Continue to the next attempt
- }
- }
-
- // If all attempts failed, throw an error
- if (!fs || !path || typeof path.resolve !== 'function') {
- throw new Error(
- `Failed to import Node.js modules after multiple attempts: ${lastError}. This adapter requires a Node.js environment.`
- )
- }
- }
-
// Now set up the directory paths
const rootDir = this.rootDir || process.cwd()
this.rootDir = path.resolve(rootDir, ROOT_DIR)
@@ -158,8 +130,6 @@ export class FileSystemStorage implements StorageAdapter {
await this.ensureDirectoryExists(this.nounsDir)
await this.ensureDirectoryExists(this.verbsDir)
await this.ensureDirectoryExists(this.metadataDir)
-
- // Create noun type directories
await this.ensureDirectoryExists(this.personDir)
await this.ensureDirectoryExists(this.placeDir)
await this.ensureDirectoryExists(this.thingDir)
@@ -169,841 +139,352 @@ export class FileSystemStorage implements StorageAdapter {
await this.ensureDirectoryExists(this.defaultDir)
this.isInitialized = true
- } catch (error) {
- console.error('Failed to initialize file system storage:', error)
- throw new Error(`Failed to initialize file system storage: ${error}`)
+ } catch (error: any) {
+ console.error('Error initializing FileSystemStorage:', error)
+ throw error
}
}
- /**
- * Save a node to storage
- */
- public async saveNoun(noun: HNSWNoun): Promise