diff --git a/.joystick/PROCESS_ID b/.joystick/PROCESS_ID new file mode 100644 index 000000000..5a136e687 --- /dev/null +++ b/.joystick/PROCESS_ID @@ -0,0 +1 @@ +DW0BVIX0KmGLwr08FQEjsyxPVdauu8t4 \ No newline at end of file diff --git a/cli/package-lock.json b/cli/package-lock.json index 2ed270dc3..00c3b62d2 100644 --- a/cli/package-lock.json +++ b/cli/package-lock.json @@ -1,12 +1,12 @@ { "name": "@joystick.js/cli", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@joystick.js/cli", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "license": "SAUCR", "dependencies": { "@aws-sdk/client-s3": "^3.879.0", diff --git a/cli/package.json b/cli/package.json index db7b74760..1ab1ad3f1 100644 --- a/cli/package.json +++ b/cli/package.json @@ -2,7 +2,7 @@ "name": "@joystick.js/cli", "type": "module", "version": "1.0.0-rc.3", - "canary_version": "0.0.0-canary.2276", + "canary_version": "0.0.0-canary.2289", "description": "The CLI for Joystick.", "main": "dist/index.js", "bin": { diff --git a/db/package-lock.json b/db/package-lock.json index 905e92fab..47aab71d4 100644 --- a/db/package-lock.json +++ b/db/package-lock.json @@ -1,12 +1,12 @@ { "name": "@joystick.js/db", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@joystick.js/db", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "license": "SAUCR", "dependencies": { "@aws-sdk/client-s3": "^3.879.0", diff --git a/db/package.json b/db/package.json index 873153b5b..33694ea4f 100644 --- a/db/package.json +++ b/db/package.json @@ -2,7 +2,7 @@ "name": "@joystick.js/db", "type": "module", "version": "1.0.0-rc.3", - "canary_version": "0.0.0-canary.2276", + "canary_version": "0.0.0-canary.2289", "description": "JoystickDB - A minimalist database server for the Joystick framework", "main": "./dist/server/index.js", "scripts": { diff --git a/node/dist/app/index.js b/node/dist/app/index.js index 702cf23f1..bb4598b76 100644 --- a/node/dist/app/index.js +++ b/node/dist/app/index.js @@ -1 +1 @@ -import v from"http";import $ from"fs";import q from"./api/accounts/authenticated.js";import O from"./api/accounts/login.js";import E from"./api/accounts/logout.js";import F from"./api/accounts/recover_password.js";import N from"./api/accounts/reset_password.js";import R from"./api/accounts/signup.js";import S from"./api/accounts/user.js";import D from"./api/accounts/verify_email.js";import I from"./api/test/accounts/delete.js";import W from"./api/test/accounts/signup.js";import A from"./api/test/bootstrap.js";import T from"./api/test/process.js";import P from"./api/test/queues.js";import U from"./databases/mongodb/create_indexes.js";import C from"./databases/postgresql/create_indexes.js";import J from"./databases/postgresql/create_tables.js";import h from"../lib/dynamic_import.js";import L from"./generate_machine_id.js";import B from"./generate_process_id.js";import H from"../lib/get_browser_safe_request.js";import d from"../lib/get_joystick_build_path.js";import b from"./databases/get_target_database_connection.js";import V from"../lib/get_translations.js";import Y from"./handle_process_errors.js";import z from"./settings/load.js";import K from"../lib/parse_route_pattern.js";import p from"../lib/path_exists.js";import Q from"./push/index.js";import G from"./push/logger.js";import M from"./queues/index.js";import f from"../lib/read_mod_component_css.js";import j from"../lib/read_mod_global_css.js";import X from"./register_app_options.js";import Z from"./cron_jobs/register.js";import tt from"./databases/register_database.js";import st from"./api/register_getters.js";import et from"./routes/register_route_from_function.js";import ot from"./routes/register_route_from_object.js";import it from"./api/register_setters.js";import at from"./uploaders/register.js";import rt from"./websockets/register.js";import nt from"./ssr/index.js";import pt from"./start_express.js";import ct from"./start_node_as_cluster.js";import _t from"../lib/strip_preceeding_slash.js";import m from"../lib/types.js";import mt from"../lib/websocket_client.js";const{readFile:_,readdir:g}=$.promises,lt=z();class dt{constructor(t={}){v.globalAgent.maxSockets=1/0,Y(t?.events),X(this,t),this.generate_machine_id(),this.generate_process_id(),process.title=process.env.NODE_ENV==="test"?"joystick_test_app":"joystick_app",process.joystick={app_options:t,external_process_ids:[],track_external_process:(s="")=>{process.send({external_process_id:s}),process.joystick.external_process_ids.push(s)}}}async connect_databases(){const t=lt?.config?.databases;for(let s=0;si?.provider===o?.provider)?.length>1;await tt(i,e,r)}if(t?.length>0){const s=b("queues"),i=b("users");process.databases._queues=s?.connection,process.databases._users=i?.connection;const e=[s,i],r=e?.filter(a=>a?.provider==="mongodb")?.map(a=>a?.database_type);await U(r);const o=e?.filter(a=>a?.provider==="postgresql")?.map(a=>a?.database_type);await J(o),await C(o)}}async generate_machine_id(){this.joystick_machine_id=await L()}async generate_process_id(){this.joystick_process_id=await B()}async load_translations(){const t=d();if(!await p(t))return;process._joystick_translations={normal:{files:[],path:`${t}i18n`,cache:{}},email:{files:[],path:`${t}i18n/email`,cache:{}}};const s=async i=>{const e=process._joystick_translations[i];if(await p(e.path))try{const r=await g(e.path);e.files=r.filter(o=>o.endsWith(".js")&&!o.startsWith("._"));for(const o of e.files){const a=`${e.path}/${o}`;try{const n=await h(a);e.cache[o]=n}catch(n){console.warn(`Failed to load translation file: ${a}`,n.message)}}}catch(r){console.warn(`Failed to scan translation directory: ${e.path}`,r.message)}};await s("normal"),await s("email")}async load_email_templates(){const s=`${d()}email`;if(await p(s)){process._joystick_email_templates={},process._joystick_email_base_files={};try{const i=await g(s),e=i.filter(o=>o.endsWith(".js")&&!o.startsWith("._"));for(const o of e){const a=`${s}/${o}`,n=o.replace(".js","");try{const c=await h(a);process._joystick_email_templates[n]=c}catch(c){console.warn(`Failed to load email template: ${a}`,c.message)}}const r=i.filter(o=>o.startsWith("base")&&(o.endsWith(".html")||o.endsWith(".css")));for(const o of r){const a=`${s}/${o}`;try{const n=await _(a,"utf-8");process._joystick_email_base_files[o]=n}catch(n){console.warn(`Failed to load email base file: ${a}`,n.message)}}}catch(i){console.warn(`Failed to scan email templates directory: ${s}`,i.message)}}}async load_ui(){const t=d();if(!await p(t))return;process._joystick_html=await _("index.html","utf-8"),process._joystick_components={};const s=async e=>{try{const r=await g(e,{withFileTypes:!0});for(const o of r)if(o.isDirectory()){const n=`${`${e}/${o.name}`}/index.js`;if(await p(n))try{const c=await h(n),u=n.replace(`${t}`,"");process._joystick_components[u]=c}catch(c){console.warn(`Failed to load component: ${n}`,c.message)}}}catch(r){console.warn(`Failed to scan directory: ${e}`,r.message)}},i=[`${t}ui/components`,`${t}ui/layouts`,`${t}ui/pages`];for(const e of i)await p(e)&&await s(e)}on_after_start_server(t={}){process.on("message",s=>{if(typeof s=="string"){const i=JSON.parse(s);["RESTART"].includes(i?.type),i?.type==="BUILD_ERROR"&&(process.BUILD_ERROR=JSON.parse(s))}}),console.log(`App running at: http://localhost:${t.port}`)}register_accounts(){this.express.app.get("/api/_accounts/authenticated",q),this.express.app.post("/api/_accounts/user",S),this.express.app.post("/api/_accounts/login",O),this.express.app.post("/api/_accounts/logout",E),this.express.app.post("/api/_accounts/recover-password",F),this.express.app.post("/api/_accounts/reset-password",N),this.express.app.post("/api/_accounts/signup",R),this.express.app.get("/api/_accounts/verify-email",D)}register_api(){const t=this?.options?.api?.getters,s=this?.options?.api?.setters,i=this?.options?.api?.options,e=this?.options?.api?.context;t&&m.is_object(t)&&Object.keys(t||{}).length>0&&st(this.express.app,Object.entries(t||{}),e,i),s&&m.is_object(s)&&Object.keys(s||{}).length>0&&it(this.express.app,Object.entries(s||{}),e,i)}register_caches(){process.caches={},m.is_function(this.options.caches)&&this.options.caches()}register_cron_jobs(){Z(this.options.cronJobs||this.options.cron_jobs)}register_dynamic_pages(){this.express.app.post("/_joystick/dynamic_page/data",async(t={},s={})=>{const i=d(),e=_t(t?.body?.page),r=`${i}/${e}`;if(!t?.body?.page||!await p(r))return handle_api_error("joystick.dynamic_pages.load",new Error(`Component not found at ${r}.`),s);const o=await h(r);if(o){const a=K(t?.body?.route_pattern||"",t?.body?.path),n=H({params:a?.params||{},query:t?.body?.query_params||{},url:t?.body?.path,headers:t?.headers,context:t?.context}),c=await nt({is_dynamic_page_render:!0,component_to_render:o,api_schema:this?.options?.api,component_options:{props:t?.body?.props},req:n});let u={};try{const k=`${d()}i18n`,w=process._joystick_translations?.normal?.files||[];w.length>0&&(u=await V({req:n,language_files_path:k,language_files:w,render_component_path:e}))}catch(y){console.warn("Failed to load translations for dynamic page:",y.message)}return s.status(200).send({data:c,req:n,url:{params:a?.params||{},query:t?.body?.query_params||{},path:t?.body?.path,route:t?.body?.route_pattern||t?.body?.path},i18n:u})}return s.status(200).send({})})}register_fixtures(){m.is_function(this.options.fixtures)&&this.options.fixtures()}register_indexes(){m.is_function(this.options.indexes)&&this.options.indexes()}async register_mod(){if(!await p("private/mod"))return;const s=await p("private/mod/mod_version.txt")&&(await _("private/mod/mod_version.txt","utf-8"))?.trim()||"free";let i,e,r,o={},a={};if(s==="plus"){i=await p("private/mod/mod-light-plus.min.css")&&await _("private/mod/mod-light-plus.min.css","utf-8")||"",e=await p("private/mod/mod-dark-plus.min.css")&&await _("private/mod/mod-dark-plus.min.css","utf-8")||"",r={esm:await p("lib/mod-plus.esm.min.js")&&await _("lib/mod-plus.esm.min.js","utf-8")||"",iife:await p("lib/mod-plus.iife.min.js")&&await _("lib/mod-plus.iife.min.js","utf-8")||""},o=await j();const n=await f("free"),c=await f("plus");a={...n||{},...c||{}}}else i=await p("private/mod/mod-light.min.css")&&await _("private/mod/mod-light.min.css","utf-8")||"",e=await p("private/mod/mod-dark.min.css")&&await _("private/mod/mod-dark.min.css","utf-8")||"",r={esm:await p("lib/mod.esm.min.js")&&await _("lib/mod.esm.min.js","utf-8")||"",iife:await p("lib/mod.iife.min.js")&&await _("lib/mod.iife.min.js","utf-8")||""},o=await j(),a={...await f("free")||{}};this.mod={version:s,css:{light:i,dark:e},js:r,globals:o,components:a}}async register_push(){process.env.NODE_ENV!=="development"&&process.env.IS_PUSH_DEPLOYED&&(this.express.app.get("/api/_push/health",async(t={},s={})=>t?.headers?.["x-push-instance-token"]!==process.env.PUSH_INSTANCE_TOKEN?s.status(403).send("403 - You are not allowed to access this endpoint."):s.status(200).send("ok")),process.push_instances_websocket=mt({url:"wss://push.cheatcode.co/api/_websockets/instances",options:{max_sends_per_second:10,logging:!1,auto_reconnect:!0,reconnect_attempts:1/0,reconnect_delay_in_seconds:10}}),await Q(),await G(),console.log("App running at http://localhost:2600"))}register_queues(){if(m.is_object(this.options.queues)){const t=Object.entries(this.options.queues||{});for(let s=0;sA(t,s,this)),this.express.app.get("/api/_test/process",T),this.express.app.delete("/api/_test/accounts",I),this.express.app.post("/api/_test/accounts/signup",W),this.express.app.post("/api/_test/queues",(t={},s={})=>P(t,s,this))}register_uploaders(){at(this.options.uploaders,this)}register_websockets(){rt(this.options.websockets,this)}async start(){await this.load_translations(),await this.load_email_templates(),await this.load_ui(),await this.connect_databases(),await this.register_mod(),this.register_caches(),this.register_cron_jobs(),this.register_queues(),this.start_express(),this.register_websockets(),this.register_tests(),this.register_push(),this.register_accounts(),this.register_api(),this.register_routes(),this.register_dynamic_pages(),this.register_uploaders(),this.register_fixtures(),this.register_indexes()}start_express(){this.express=pt(this.on_after_start_server,this)}}const x=async(l={})=>{const t=new dt(l);return await t.start(l),t},ut=(l={})=>new Promise(async t=>{if(l?.cluster)ct(async()=>{const s=await x(l);return t(s.express)});else{const s=await x(l);return t(s.express)}});var _s=ut;export{_s as default}; +import D from"http";import I from"fs";import E from"./api/accounts/authenticated.js";import F from"./api/accounts/login.js";import J from"./api/accounts/logout.js";import R from"./api/accounts/recover_password.js";import B from"./api/accounts/reset_password.js";import U from"./api/accounts/signup.js";import N from"./api/accounts/user.js";import A from"./api/accounts/verify_email.js";import S from"./api/test/accounts/delete.js";import W from"./api/test/accounts/signup.js";import G from"./api/test/bootstrap.js";import P from"./api/test/process.js";import T from"./api/test/queues.js";import C from"./databases/mongodb/create_indexes.js";import L from"./databases/postgresql/create_indexes.js";import H from"./databases/postgresql/create_tables.js";import u from"../lib/dynamic_import.js";import V from"./generate_machine_id.js";import Y from"./generate_process_id.js";import z from"../lib/get_browser_safe_request.js";import f from"../lib/get_joystick_build_path.js";import w from"./databases/get_target_database_connection.js";import K from"../lib/get_translations.js";import Q from"./handle_process_errors.js";import M from"./settings/load.js";import X from"../lib/parse_route_pattern.js";import p from"../lib/path_exists.js";import Z from"./push/index.js";import tt from"./push/logger.js";import st from"./queues/index.js";import y from"../lib/read_mod_component_css.js";import k from"../lib/read_mod_global_css.js";import et from"./register_app_options.js";import ot from"./cron_jobs/register.js";import it from"./databases/register_database.js";import x from"./api/register_getters.js";import v from"./routes/register_route_from_function.js";import $ from"./routes/register_route_from_object.js";import O from"./api/register_setters.js";import at from"./uploaders/register.js";import rt from"./websockets/register.js";import nt from"./ssr/index.js";import ct from"./start_express.js";import pt from"./start_node_as_cluster.js";import _t from"../lib/strip_preceeding_slash.js";import m from"../lib/types.js";import mt from"../lib/websocket_client.js";const{readFile:_,readdir:b}=I.promises,lt=M();class dt{constructor(t={}){D.globalAgent.maxSockets=1/0,Q(t?.events),et(this,t),this.generate_machine_id(),this.generate_process_id(),process.title=process.env.NODE_ENV==="test"?"joystick_test_app":"joystick_app",process.joystick={app_options:t,external_process_ids:[],track_external_process:(s="")=>{process.send({external_process_id:s}),process.joystick.external_process_ids.push(s)}}}async connect_databases(){const t=lt?.config?.databases||this.options?.config?.databases;for(let s=0;so?.provider===i?.provider)?.length>1;await it(o,e,n)}if(t?.length>0){const s=w("queues"),o=w("users");process.databases._queues=s?.connection,process.databases._users=o?.connection;const e=[s,o],n=e?.filter(a=>a?.provider==="mongodb")?.map(a=>a?.database_type);await C(n);const i=e?.filter(a=>a?.provider==="postgresql")?.map(a=>a?.database_type);await H(i),await L(i)}}async generate_machine_id(){this.joystick_machine_id=await V()}async generate_process_id(){this.joystick_process_id=await Y()}async load_translations(){const t=f();if(!await p(t))return;process._joystick_translations={normal:{files:[],path:`${t}i18n`,cache:{}},email:{files:[],path:`${t}i18n/email`,cache:{}}};const s=async o=>{const e=process._joystick_translations[o];if(await p(e.path))try{const n=await b(e.path);e.files=n.filter(i=>i.endsWith(".js")&&!i.startsWith("._"));for(const i of e.files){const a=`${e.path}/${i}`;try{const r=await u(a);e.cache[i]=r}catch(r){console.warn(`Failed to load translation file: ${a}`,r.message)}}}catch(n){console.warn(`Failed to scan translation directory: ${e.path}`,n.message)}};await s("normal"),await s("email")}async load_email_templates(){const s=`${f()}email`;if(await p(s)){process._joystick_email_templates={},process._joystick_email_base_files={};try{const o=await b(s),e=o.filter(i=>i.endsWith(".js")&&!i.startsWith("._"));for(const i of e){const a=`${s}/${i}`,r=i.replace(".js","");try{const c=await u(a);process._joystick_email_templates[r]=c}catch(c){console.warn(`Failed to load email template: ${a}`,c.message)}}const n=o.filter(i=>i.startsWith("base")&&(i.endsWith(".html")||i.endsWith(".css")));for(const i of n){const a=`${s}/${i}`;try{const r=await _(a,"utf-8");process._joystick_email_base_files[i]=r}catch(r){console.warn(`Failed to load email base file: ${a}`,r.message)}}}catch(o){console.warn(`Failed to scan email templates directory: ${s}`,o.message)}}}async load_ui(){const t=f();if(!await p(t))return;process._joystick_html=await _("index.html","utf-8"),process._joystick_components={};const s=async e=>{try{const n=await b(e,{withFileTypes:!0});for(const i of n)if(i.isDirectory()){const r=`${`${e}/${i.name}`}/index.js`;if(await p(r))try{const c=await u(r),l=r.replace(`${t}`,"");process._joystick_components[l]=c}catch(c){console.warn(`Failed to load component: ${r}`,c.message)}}}catch(n){console.warn(`Failed to scan directory: ${e}`,n.message)}},o=[`${t}ui/components`,`${t}ui/layouts`,`${t}ui/pages`];for(const e of o)await p(e)&&await s(e);try{const e=await u("../lib/joystickdb_gui/utils/resolve_component_path.js"),n=e.default||e,i=["ui/layouts/main.js","ui/pages/login.js","ui/pages/dashboard.js","ui/pages/databases.js","ui/pages/collections.js","ui/pages/documents.js","ui/pages/query.js","ui/pages/admin/index.js","ui/pages/admin/users.js","ui/pages/admin/replication.js","ui/pages/admin/stats.js"];for(const a of i)try{const r=n(a),c=await u(r);process._joystick_components[r]=c}catch(r){console.warn(`Failed to load JoystickDB component: ${a}`,r.message)}}catch(e){console.warn("Failed to load JoystickDB component resolver:",e.message)}}on_after_start_server(t={}){process.on("message",s=>{if(typeof s=="string"){const o=JSON.parse(s);["RESTART"].includes(o?.type),o?.type==="BUILD_ERROR"&&(process.BUILD_ERROR=JSON.parse(s))}}),console.log(`App running at: http://localhost:${t.port}`)}register_accounts(){this.express.app.get("/api/_accounts/authenticated",E),this.express.app.post("/api/_accounts/user",N),this.express.app.post("/api/_accounts/login",F),this.express.app.post("/api/_accounts/logout",J),this.express.app.post("/api/_accounts/recover-password",R),this.express.app.post("/api/_accounts/reset-password",B),this.express.app.post("/api/_accounts/signup",U),this.express.app.get("/api/_accounts/verify-email",A)}register_api(){const t=this?.options?.api?.getters,s=this?.options?.api?.setters,o=this?.options?.api?.options,e=this?.options?.api?.context;t&&m.is_object(t)&&Object.keys(t||{}).length>0&&x(this.express.app,Object.entries(t||{}),e,o),s&&m.is_object(s)&&Object.keys(s||{}).length>0&&O(this.express.app,Object.entries(s||{}),e,o)}register_caches(){process.caches={},m.is_function(this.options.caches)&&this.options.caches()}register_cron_jobs(){ot(this.options.cronJobs||this.options.cron_jobs)}register_dynamic_pages(){this.express.app.post("/_joystick/dynamic_page/data",async(t={},s={})=>{const o=f(),e=_t(t?.body?.page),n=`${o}/${e}`;if(!t?.body?.page||!await p(n))return handle_api_error("joystick.dynamic_pages.load",new Error(`Component not found at ${n}.`),s);const i=await u(n);if(i){const a=X(t?.body?.route_pattern||"",t?.body?.path),r=z({params:a?.params||{},query:t?.body?.query_params||{},url:t?.body?.path,headers:t?.headers,context:t?.context}),c=await nt({is_dynamic_page_render:!0,component_to_render:i,api_schema:this?.options?.api,component_options:{props:t?.body?.props},req:r});let l={};try{const g=`${f()}i18n`,j=process._joystick_translations?.normal?.files||[];j.length>0&&(l=await K({req:r,language_files_path:g,language_files:j,render_component_path:e}))}catch(h){console.warn("Failed to load translations for dynamic page:",h.message)}return s.status(200).send({data:c,req:r,url:{params:a?.params||{},query:t?.body?.query_params||{},path:t?.body?.path,route:t?.body?.route_pattern||t?.body?.path},i18n:l})}return s.status(200).send({})})}register_fixtures(){m.is_function(this.options.fixtures)&&this.options.fixtures()}register_indexes(){m.is_function(this.options.indexes)&&this.options.indexes()}async register_mod(){if(!await p("private/mod"))return;const s=await p("private/mod/mod_version.txt")&&(await _("private/mod/mod_version.txt","utf-8"))?.trim()||"free";let o,e,n,i={},a={};if(s==="plus"){o=await p("private/mod/mod-light-plus.min.css")&&await _("private/mod/mod-light-plus.min.css","utf-8")||"",e=await p("private/mod/mod-dark-plus.min.css")&&await _("private/mod/mod-dark-plus.min.css","utf-8")||"",n={esm:await p("lib/mod-plus.esm.min.js")&&await _("lib/mod-plus.esm.min.js","utf-8")||"",iife:await p("lib/mod-plus.iife.min.js")&&await _("lib/mod-plus.iife.min.js","utf-8")||""},i=await k();const r=await y("free"),c=await y("plus");a={...r||{},...c||{}}}else o=await p("private/mod/mod-light.min.css")&&await _("private/mod/mod-light.min.css","utf-8")||"",e=await p("private/mod/mod-dark.min.css")&&await _("private/mod/mod-dark.min.css","utf-8")||"",n={esm:await p("lib/mod.esm.min.js")&&await _("lib/mod.esm.min.js","utf-8")||"",iife:await p("lib/mod.iife.min.js")&&await _("lib/mod.iife.min.js","utf-8")||""},i=await k(),a={...await y("free")||{}};this.mod={version:s,css:{light:o,dark:e},js:n,globals:i,components:a}}async register_push(){process.env.NODE_ENV!=="development"&&process.env.IS_PUSH_DEPLOYED&&(this.express.app.get("/api/_push/health",async(t={},s={})=>t?.headers?.["x-push-instance-token"]!==process.env.PUSH_INSTANCE_TOKEN?s.status(403).send("403 - You are not allowed to access this endpoint."):s.status(200).send("ok")),process.push_instances_websocket=mt({url:"wss://push.cheatcode.co/api/_websockets/instances",options:{max_sends_per_second:10,logging:!1,auto_reconnect:!0,reconnect_attempts:1/0,reconnect_delay_in_seconds:10}}),await Z(),await tt(),console.log("App running at http://localhost:2600"))}register_queues(){if(m.is_object(this.options.queues)){const t=Object.entries(this.options.queues||{});for(let s=0;sG(t,s,this)),this.express.app.get("/api/_test/process",P),this.express.app.delete("/api/_test/accounts",S),this.express.app.post("/api/_test/accounts/signup",W),this.express.app.post("/api/_test/queues",(t={},s={})=>T(t,s,this))}register_uploaders(){at(this.options.uploaders,this)}register_websockets(){rt(this.options.websockets,this)}async register_joystickdb_gui(){const t=process.databases?Object.keys(process.databases):[],s=t.some(o=>o==="joystickdb"||o.startsWith("joystickdb_"));if(console.log("JoystickDB GUI Detection:",{database_keys:t,has_joystickdb:s,process_databases_exists:!!process.databases}),s)try{console.log("Attempting to load JoystickDB GUI...");const o=await u("../lib/joystickdb_gui/index.js"),e=o.default||o;console.log("JoystickDB GUI module loaded:",{has_routes:!!e.routes,has_api:!!e.api,routes_count:Object.keys(e.routes||{}).length,api_structure:e.api?Object.keys(e.api):[]});const n=Object.entries(e.routes||{});for(let r=0;r0&&x(this.express.app,Object.entries(i),this?.options?.api?.context,this?.options?.api?.options),Object.keys(a).length>0&&O(this.express.app,Object.entries(a),this?.options?.api?.context,this?.options?.api?.options),console.log("JoystickDB GUI registered successfully at /joystickdb")}catch(o){console.error("Failed to register JoystickDB GUI:",o),console.error("Error stack:",o.stack)}else console.log("JoystickDB not detected in databases, skipping GUI registration")}async start(){await this.load_translations(),await this.load_email_templates(),await this.load_ui(),await this.connect_databases(),await this.register_mod(),this.register_caches(),this.register_cron_jobs(),this.register_queues(),this.start_express(),this.register_websockets(),this.register_tests(),this.register_push(),this.register_accounts(),this.register_api(),await this.register_joystickdb_gui(),this.register_routes(),this.register_dynamic_pages(),this.register_uploaders(),this.register_fixtures(),this.register_indexes()}start_express(){this.express=ct(this.on_after_start_server,this)}}const q=async(d={})=>{const t=new dt(d);return await t.start(d),t},ut=(d={})=>new Promise(async t=>{if(d?.cluster)pt(async()=>{const s=await q(d);return t(s.express)});else{const s=await q(d);return t(s.express)}});var _s=ut;export{_s as default}; diff --git a/node/dist/app/middleware/render/index.js b/node/dist/app/middleware/render/index.js index b871e37ee..f449b5310 100644 --- a/node/dist/app/middleware/render/index.js +++ b/node/dist/app/middleware/render/index.js @@ -1 +1 @@ -import k from"fs";import i from"../generate_joystick_error_page.js";import j from"../../../lib/get_joystick_build_path.js";import b from"../../../lib/get_translations.js";import $ from"./get_url.js";import w from"../../ssr/index.js";import u from"../../../lib/strip_preceeding_slash.js";const{readFile:E}=k.promises,z=j(),A=(o,s,_,e={})=>{s.render=async(l="",t={})=>{const m=u(l),c=u(t?.layout),n=m,a=t?.layout?c:null;if(!process._joystick_components[n])return s.status(404).send(i({type:"page_not_found",path:`res.render('${n}')`,frame:null,stack:`A page component at the path ${n} could not be found.`}));if(a&&!process._joystick_components[a])return s.status(404).send(i({type:"layout_not_found",path:`res.render('${n}', { layout: '${c}' })`,frame:null,stack:`A layout component at the path ${t?.layout} could not be found.`}));const r=process._joystick_components[n],h=a?process._joystick_components[a]:null,p={...t?.props||{},theme:o?.cookies?.theme||"light"};a&&(p.page=r);const d=process._joystick_html,f=await b({language_files:process._joystick_translations?.normal?.files||[],language_files_path:process._joystick_translations?.normal?.path||`${z}i18n`,render_component_path:l,req:o}),y=$(o),g=await w({api_schema:e?.options?.api,attributes:t?.attributes,base_html:d,component_options:{props:p,translations:f,url:y},component_to_render:h||r,escaping:t?.escaping,head:t?.head,render_component_path:m,render_layout_path:c,req:o,res:s,mod:t?.mod===!1?null:{in_use:!!e?.mod,css:e?.mod?.css||null,js:e?.mod?.js||null,theme:o?.cookies?.theme||e?.options?.mod?.default_theme||"light",components_in_use:t?.mod?.components}});return s.status(200).send(g)},_()};var G=A;export{G as default}; +import k from"fs";import p from"../generate_joystick_error_page.js";import j from"../../../lib/get_joystick_build_path.js";import b from"../../../lib/get_translations.js";import $ from"./get_url.js";import w from"../../ssr/index.js";import r from"../../../lib/strip_preceeding_slash.js";const{readFile:E}=k.promises,z=j(),A=(o,s,_,a={})=>{s.render=async(l="",t={})=>{const m=l.startsWith("/")?l:r(l),c=t?.layout?t.layout.startsWith("/")?t.layout:r(t.layout):null,e=m,n=c;if(!process._joystick_components[e])return s.status(404).send(p({type:"page_not_found",path:`res.render('${e}')`,frame:null,stack:`A page component at the path ${e} could not be found.`}));if(n&&!process._joystick_components[n])return s.status(404).send(p({type:"layout_not_found",path:`res.render('${e}', { layout: '${c}' })`,frame:null,stack:`A layout component at the path ${t?.layout} could not be found.`}));const i=process._joystick_components[e],h=n?process._joystick_components[n]:null,u={...t?.props||{},theme:o?.cookies?.theme||"light"};n&&(u.page=i);const y=process._joystick_html,d=await b({language_files:process._joystick_translations?.normal?.files||[],language_files_path:process._joystick_translations?.normal?.path||`${z}i18n`,render_component_path:l,req:o}),f=$(o),g=await w({api_schema:a?.options?.api,attributes:t?.attributes,base_html:y,component_options:{props:u,translations:d,url:f},component_to_render:h||i,escaping:t?.escaping,head:t?.head,render_component_path:m,render_layout_path:c,req:o,res:s,mod:t?.mod===!1?null:{in_use:!!a?.mod,css:a?.mod?.css||null,js:a?.mod?.js||null,theme:o?.cookies?.theme||a?.options?.mod?.default_theme||"light",components_in_use:t?.mod?.components}});return s.status(200).send(g)},_()};var G=A;export{G as default}; diff --git a/node/dist/lib/joystickdb_gui/api/getters.js b/node/dist/lib/joystickdb_gui/api/getters.js new file mode 100644 index 000000000..5bd82b770 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/api/getters.js @@ -0,0 +1 @@ +import"../client/joystickdb_client.js";const d={joystickdb_stats:{authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");return await i.get_stats()}},joystickdb_databases:{authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");return await i.list_databases()}},joystickdb_collections:{input:{database:{type:"string",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");return await i.db(e.database).list_collections()}},joystickdb_documents:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},limit:{type:"integer",required:!1,max:1e3},skip:{type:"integer",required:!1},filter:{type:"object",required:!1},sort:{type:"object",required:!1}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");const o=i.db(e.database).collection(e.collection),r={limit:e.limit||20};e.skip&&(r.skip=e.skip),e.sort&&(r.sort=e.sort);const n=e.filter||{},c=await o.find(n,r),a=await o.count_documents(n);return{documents:c,total:a}}},joystickdb_indexes:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");return await i.db(e.database).collection(e.collection).get_indexes()}},joystickdb_replication_status:{authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");try{return await i.admin_operation({operation:"get_sync_status"})}catch(s){return{error:s.message}}}},joystickdb_document_by_id:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},document_id:{type:"string",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");return await i.db(e.database).get_document(e.collection,e.document_id)}},joystickdb_backup_list:{authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,get:async(e={},t={})=>{const i=t?.req?.session?.joystickdb_client;if(!i)throw new Error("No JoystickDB connection available");return await i.list_backups()}}};var b=d;export{b as default}; diff --git a/node/dist/lib/joystickdb_gui/api/index.js b/node/dist/lib/joystickdb_gui/api/index.js new file mode 100644 index 000000000..7f9c0769a --- /dev/null +++ b/node/dist/lib/joystickdb_gui/api/index.js @@ -0,0 +1 @@ +import t from"./getters.js";import e from"./setters.js";const s={getters:{...t},setters:{...e}};var i=s;export{i as default}; diff --git a/node/dist/lib/joystickdb_gui/api/setters.js b/node/dist/lib/joystickdb_gui/api/setters.js new file mode 100644 index 000000000..d7912ea28 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/api/setters.js @@ -0,0 +1 @@ +import n from"../client/joystickdb_client.js";const s={joystickdb_authenticate:{input:{username:{type:"string",required:!0},password:{type:"string",required:!0}},set:async(e={},t={})=>{try{const o=await new n({username:e.username,password:e.password}).connect();return t.req.session.joystickdb_user={username:e.username},t.req.session.joystickdb_client=o,{success:!0,username:e.username}}catch(r){throw new Error(`Authentication failed: ${r.message}`)}}},joystickdb_create_document:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},document:{type:"object",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.db(e.database).collection(e.collection).insert_one(e.document)}},joystickdb_update_document:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},filter:{type:"object",required:!0},update:{type:"object",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.db(e.database).collection(e.collection).update_one(e.filter,e.update)}},joystickdb_delete_document:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},filter:{type:"object",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.db(e.database).collection(e.collection).delete_one(e.filter)}},joystickdb_create_index:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},field:{type:"string",required:!0},options:{type:"object",required:!1}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.db(e.database).collection(e.collection).create_index(e.field,e.options||{})}},joystickdb_drop_index:{input:{database:{type:"string",required:!0},collection:{type:"string",required:!0},field:{type:"string",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.db(e.database).collection(e.collection).drop_index(e.field)}},joystickdb_force_sync:{authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.admin_operation({operation:"force_sync"})}},joystickdb_create_backup:{authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.backup_now()}},joystickdb_restore_backup:{input:{backup_name:{type:"string",required:!0}},authorized:(e={},t={})=>!!t?.req?.session?.joystickdb_user,set:async(e={},t={})=>{const r=t?.req?.session?.joystickdb_client;if(!r)throw new Error("No JoystickDB connection available");return await r.restore_backup(e.backup_name)}}};var a=s;export{a as default}; diff --git a/node/dist/lib/joystickdb_gui/client/joystickdb_client.js b/node/dist/lib/joystickdb_gui/client/joystickdb_client.js new file mode 100644 index 000000000..16ac8f292 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/client/joystickdb_client.js @@ -0,0 +1 @@ +import c from"../../../lib/joystickdb/index.js";class o{constructor(t){this.credentials=t,this.client=null}async connect(){if(this.client)return this.client;try{return this.client=c.client({port:1983,authentication:this.credentials,timeout:5e3}),new Promise((t,i)=>{const e=setTimeout(()=>{i(new Error("Connection timeout"))},5e3);this.client.on("authenticated",()=>{clearTimeout(e),t(this.client)}),this.client.on("error",n=>{clearTimeout(e),i(n)})})}catch(t){throw new Error(`Failed to connect to JoystickDB: ${t.message}`)}}async disconnect(){this.client&&(this.client.disconnect(),this.client=null)}}var l=o;export{l as default}; diff --git a/node/dist/lib/joystickdb_gui/index.js b/node/dist/lib/joystickdb_gui/index.js new file mode 100644 index 000000000..d1b8e8cbb --- /dev/null +++ b/node/dist/lib/joystickdb_gui/index.js @@ -0,0 +1 @@ +import o from"./routes/index.js";import t from"./api/index.js";const i={routes:o,api:t};var p=i;export{p as default}; diff --git a/node/dist/lib/joystickdb_gui/middleware/auth.js b/node/dist/lib/joystickdb_gui/middleware/auth.js new file mode 100644 index 000000000..c7580dbc0 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/middleware/auth.js @@ -0,0 +1 @@ +const o=(s={},i={},t={})=>{if(!s.session?.joystickdb_user||!s.session?.joystickdb_client)return i.redirect("/joystickdb/login?error=authentication_required");s.joystickdb_client=s.session.joystickdb_client,s.joystickdb_user=s.session.joystickdb_user,t()};var e=o;export{e as default}; diff --git a/node/dist/lib/joystickdb_gui/routes/index.js b/node/dist/lib/joystickdb_gui/routes/index.js new file mode 100644 index 000000000..d2d061871 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/routes/index.js @@ -0,0 +1 @@ +import d from"../middleware/auth.js";import s from"../utils/resolve_component_path.js";const o={"/joystickdb":(e={},a={})=>e.session?.joystickdb_user?a.redirect("/joystickdb/dashboard"):a.redirect("/joystickdb/login"),"/joystickdb/login":(e={},a={})=>{if(e.session?.joystickdb_user)return a.redirect("/joystickdb/dashboard");a.render(s("ui/pages/login.js"),{layout:s("ui/layouts/main.js"),props:{error:e.query.error}})},"/joystickdb/logout":{method:"POST",handler:(e={},a={})=>{e.session.joystickdb_user=null,e.session.joystickdb_client=null,a.redirect("/joystickdb/login")}},"/joystickdb/dashboard":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/dashboard.js"),{layout:s("ui/layouts/main.js"),props:{user:e.session.joystickdb_user}})}},"/joystickdb/databases":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/databases.js"),{layout:s("ui/layouts/main.js")})}},"/joystickdb/databases/:database":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/collections.js"),{layout:s("ui/layouts/main.js"),props:{database:e.params.database}})}},"/joystickdb/databases/:database/:collection":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/documents.js"),{layout:s("ui/layouts/main.js"),props:{database:e.params.database,collection:e.params.collection}})}},"/joystickdb/query/:database/:collection":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/query.js"),{layout:s("ui/layouts/main.js"),props:{database:e.params.database,collection:e.params.collection}})}},"/joystickdb/admin":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/admin/index.js"),{layout:s("ui/layouts/main.js")})}},"/joystickdb/admin/users":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/admin/users.js"),{layout:s("ui/layouts/main.js")})}},"/joystickdb/admin/replication":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/admin/replication.js"),{layout:s("ui/layouts/main.js")})}},"/joystickdb/admin/stats":{method:"GET",middleware:[d],handler:(e={},a={})=>{a.render(s("ui/pages/admin/stats.js"),{layout:s("ui/layouts/main.js")})}}};var r=o;export{r as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/layouts/main.js b/node/dist/lib/joystickdb_gui/ui/layouts/main.js new file mode 100644 index 000000000..781489207 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/layouts/main.js @@ -0,0 +1,331 @@ +import e from"@joystick.js/ui";const b=e.component({css:` + :root { + --jdb-brand: #6366f1; + --jdb-success: #10b981; + --jdb-warning: #f59e0b; + --jdb-danger: #ef4444; + --jdb-info: #3b82f6; + --jdb-neutral-1: #ffffff; + --jdb-neutral-2: #f8fafc; + --jdb-neutral-3: #e2e8f0; + --jdb-neutral-4: #cbd5e1; + --jdb-neutral-5: #94a3b8; + --jdb-neutral-6: #64748b; + --jdb-neutral-7: #475569; + --jdb-neutral-8: #334155; + --jdb-neutral-9: #1e293b; + --jdb-border-radius: 6px; + --jdb-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --jdb-font-size-sm: 14px; + --jdb-font-size-base: 16px; + --jdb-font-size-lg: 18px; + --jdb-spacing-xs: 4px; + --jdb-spacing-sm: 8px; + --jdb-spacing-md: 16px; + --jdb-spacing-lg: 24px; + --jdb-spacing-xl: 32px; + } + .joystickdb-root { + font-family: var(--jdb-font-family); + color: var(--jdb-neutral-8); + margin: 0; + padding: 0; + } + .jdb-dashboard { + display: flex; + min-height: 100vh; + background: var(--jdb-neutral-2); + } + .jdb-sidebar { + width: 280px; + background: var(--jdb-neutral-1); + border-right: 1px solid var(--jdb-neutral-3); + display: flex; + flex-direction: column; + } + .jdb-sidebar-header { + padding: var(--jdb-spacing-lg); + border-bottom: 1px solid var(--jdb-neutral-3); + } + .jdb-sidebar-header h2 { + margin: 0 0 var(--jdb-spacing-xs) 0; + color: var(--jdb-brand); + font-size: 1.5rem; + font-weight: 700; + } + .jdb-sidebar-header p { + margin: 0; + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-sm); + } + .jdb-sidebar-nav { + flex: 1; + padding: var(--jdb-spacing-md); + overflow-y: auto; + } + .jdb-nav-section { + margin-bottom: var(--jdb-spacing-lg); + } + .jdb-nav-section h5 { + margin: 0 0 var(--jdb-spacing-sm) 0; + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-sm); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + } + .jdb-nav-list { + list-style: none; + margin: 0; + padding: 0; + } + .jdb-nav-list li { + margin-bottom: var(--jdb-spacing-xs); + } + .jdb-nav-link { + display: flex; + align-items: center; + gap: var(--jdb-spacing-sm); + padding: var(--jdb-spacing-sm) var(--jdb-spacing-md); + color: var(--jdb-neutral-7); + text-decoration: none; + border-radius: var(--jdb-border-radius); + transition: all 0.2s ease; + } + .jdb-nav-link:hover { + background: var(--jdb-neutral-2); + color: var(--jdb-neutral-8); + } + .jdb-nav-list li.active .jdb-nav-link { + background: var(--jdb-brand); + color: var(--jdb-neutral-1); + } + .jdb-sidebar-footer { + padding: var(--jdb-spacing-md); + border-top: 1px solid var(--jdb-neutral-3); + } + .jdb-user-info { + display: flex; + align-items: center; + gap: var(--jdb-spacing-sm); + } + .jdb-user-avatar { + width: 32px; + height: 32px; + background: var(--jdb-brand); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: 14px; + } + .jdb-user-details { + flex: 1; + } + .jdb-user-details strong { + display: block; + color: var(--jdb-neutral-8); + font-size: var(--jdb-font-size-sm); + } + .jdb-user-details small { + color: var(--jdb-neutral-6); + font-size: 12px; + } + .jdb-btn-sm { + padding: var(--jdb-spacing-xs) var(--jdb-spacing-sm); + font-size: var(--jdb-font-size-sm); + background: var(--jdb-neutral-1); + border: 1px solid var(--jdb-neutral-4); + border-radius: var(--jdb-border-radius); + color: var(--jdb-neutral-8); + cursor: pointer; + text-decoration: none; + transition: all 0.2s; + } + .jdb-btn-sm:hover { + background: var(--jdb-neutral-2); + border-color: var(--jdb-neutral-5); + } + .jdb-main { + flex: 1; + display: flex; + flex-direction: column; + } + .jdb-header { + background: var(--jdb-neutral-1); + border-bottom: 1px solid var(--jdb-neutral-3); + padding: var(--jdb-spacing-md) var(--jdb-spacing-lg); + display: flex; + justify-content: space-between; + align-items: center; + } + .jdb-breadcrumbs { + display: flex; + align-items: center; + gap: var(--jdb-spacing-sm); + } + .jdb-breadcrumb { + color: var(--jdb-neutral-6); + text-decoration: none; + font-size: var(--jdb-font-size-sm); + } + .jdb-breadcrumb:hover { + color: var(--jdb-brand); + } + .jdb-breadcrumb-separator { + color: var(--jdb-neutral-5); + } + .jdb-content { + flex: 1; + padding: var(--jdb-spacing-lg); + overflow-y: auto; + } + .jdb-btn { + display: inline-flex; + align-items: center; + gap: var(--jdb-spacing-xs); + padding: var(--jdb-spacing-sm) var(--jdb-spacing-md); + border: 1px solid var(--jdb-neutral-4); + border-radius: var(--jdb-border-radius); + background: var(--jdb-neutral-1); + color: var(--jdb-neutral-8); + text-decoration: none; + cursor: pointer; + font-size: var(--jdb-font-size-base); + transition: all 0.2s; + } + .jdb-btn:hover { + border-color: var(--jdb-neutral-5); + background: var(--jdb-neutral-2); + } + .jdb-btn-primary { + background: var(--jdb-brand); + color: white; + border-color: var(--jdb-brand); + } + .jdb-btn-primary:hover { + background: #5855ec; + border-color: #5855ec; + } + .jdb-btn-success { + background: var(--jdb-success); + color: white; + border-color: var(--jdb-success); + } + .jdb-btn-success:hover { + background: #047857; + border-color: #047857; + } + .jdb-btn-danger { + background: var(--jdb-danger); + color: white; + border-color: var(--jdb-danger); + } + .jdb-btn-danger:hover { + background: #dc2626; + border-color: #dc2626; + } + .jdb-input { + padding: var(--jdb-spacing-sm); + border: 1px solid var(--jdb-neutral-4); + border-radius: var(--jdb-border-radius); + font-size: var(--jdb-font-size-base); + width: 100%; + } + .jdb-input:focus { + outline: none; + border-color: var(--jdb-brand); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); + } + .jdb-table { + width: 100%; + border-collapse: collapse; + background: white; + border-radius: var(--jdb-border-radius); + overflow: hidden; + } + .jdb-table th, + .jdb-table td { + padding: var(--jdb-spacing-md); + text-align: left; + border-bottom: 1px solid var(--jdb-neutral-3); + } + .jdb-table th { + background: var(--jdb-neutral-2); + font-weight: 600; + } + .jdb-card { + background: white; + border-radius: var(--jdb-border-radius); + border: 1px solid var(--jdb-neutral-3); + overflow: hidden; + } + .jdb-card-header { + padding: var(--jdb-spacing-lg); + border-bottom: 1px solid var(--jdb-neutral-3); + display: flex; + justify-content: space-between; + align-items: center; + } + .jdb-card-content { + padding: var(--jdb-spacing-lg); + } + `,render:({component:r,props:d,url:a})=>` +
+ +
+
+
+ Dashboard + ${a.path!=="/joystickdb/dashboard"?'/':""} +
+
+ +
+
+
+ ${r(d.page,d)} +
+
+
+ `});var n=b;export{n as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/admin/index.js b/node/dist/lib/joystickdb_gui/ui/pages/admin/index.js new file mode 100644 index 000000000..c26b25196 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/admin/index.js @@ -0,0 +1,25 @@ +import s from"@joystick.js/ui";const a=s.component({data:async(t={})=>({stats:await t.get("joystickdb_get_stats")}),events:{"click a":(t={},e={})=>{const i=t.target.getAttribute("href");i&&(window.location.href=i)}},render:({data:t})=>(console.log("Admin dashboard data:",t),` +
+

JoystickDB Administration

+

Manage your JoystickDB instance settings and monitor performance.

+ +
+

Statistics

+
    +
  • Databases: ${t?.stats?.total_databases||0}
  • +
  • Collections: ${t?.stats?.total_collections||0}
  • +
  • Documents: ${t?.stats?.total_documents||0}
  • +
  • Storage Used: ${t?.stats?.storage_size||"0 B"}
  • +
+
+ +
+

Admin Tools

+
    +
  • User Management - Manage JoystickDB users, roles, and permissions
  • +
  • Replication - Configure database replication and clustering
  • +
  • Statistics - View detailed performance metrics and analytics
  • +
+
+
+ `)});var o=a;export{o as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/admin/replication.js b/node/dist/lib/joystickdb_gui/ui/pages/admin/replication.js new file mode 100644 index 000000000..d29628a8c --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/admin/replication.js @@ -0,0 +1,61 @@ +import l from"@joystick.js/ui";const n=l.component({data:async(i={})=>({replication_status:await i.get("joystickdb_get_replication_status")}),render:({data:i,each:e,when:a})=>(console.log("Admin replication data:",i),` +
+

Admin > Replication

+ +

Replication Management

+

Configure and monitor database replication settings.

+ +
+

Replication Status

+

Status: ${i?.replication_status?.enabled?"Enabled":"Disabled"}

+ + ${a(i?.replication_status?.enabled,` +
    +
  • Primary Node: ${i.replication_status.primary_node||"Unknown"}
  • +
  • Replica Set: ${i.replication_status.replica_set||"Unknown"}
  • +
  • Total Replicas: ${i.replication_status.replica_count||0}
  • +
+ `)} +
+ +

+ ${a(!i?.replication_status?.enabled,` + + `)} + ${a(i?.replication_status?.enabled,` + + + `)} +

+ + ${a(i?.replication_status?.enabled&&i?.replication_status?.replicas,` +
+

Replicas

+ ${e(i.replication_status.replicas,t=>` +
+

${t.name} (${t.type})

+
    +
  • Host: ${t.host}
  • +
  • Port: ${t.port}
  • +
  • Health: ${t.healthy?"Healthy":"Unhealthy"}
  • +
  • Lag: ${t.lag||"0"}ms
  • +
+
+ `)} +
+ `)} + + ${a(!i?.replication_status?.enabled,` +
+

About Replication

+

Database replication provides high availability and data redundancy by maintaining copies of your data across multiple servers.

+
    +
  • Automatic failover if primary node goes down
  • +
  • Read scaling across replica nodes
  • +
  • Geographic distribution for better performance
  • +
  • Data backup and disaster recovery
  • +
+
+ `)} +
+ `)});var s=n;export{s as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/admin/stats.js b/node/dist/lib/joystickdb_gui/ui/pages/admin/stats.js new file mode 100644 index 000000000..f5b6cae31 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/admin/stats.js @@ -0,0 +1,58 @@ +import o from"@joystick.js/ui";const d=o.component({data:async(t={})=>({detailed_stats:await t.get("joystickdb_get_detailed_stats")}),events:{"click .refresh-stats":(t={},s={})=>{s.data.refetch()}},render:({data:t,each:s,when:i})=>(console.log("Admin stats data:",t),` +
+

Admin > Statistics

+ +

Performance Statistics

+ +

+ + +

+ +
+

Performance Metrics

+
    +
  • Read Operations: ${t?.detailed_stats?.operations?.reads||0}
  • +
  • Write Operations: ${t?.detailed_stats?.operations?.writes||0}
  • +
  • Avg Response Time: ${t?.detailed_stats?.performance?.avg_response_time||0}ms
  • +
  • Active Connections: ${t?.detailed_stats?.connections?.active||0}
  • +
  • Memory Used: ${t?.detailed_stats?.memory?.used||"0 MB"}
  • +
  • Disk Usage: ${t?.detailed_stats?.storage?.disk_usage||"0%"}
  • +
+
+ +
+

Charts

+

\u{1F4CA} Operations Over Time (Chart placeholder)

+

\u{1F4C8} Response Time Trends (Chart placeholder)

+
+ + ${i(t?.detailed_stats?.slow_queries,` +
+

Slow Queries

+ + + + + + + + + + + ${s(t.detailed_stats.slow_queries,e=>` + + + + + + + `)} + +
QueryCollectionResponse TimeCount
${JSON.stringify(e.query).substring(0,50)}...${e.collection}${e.avg_response_time}ms${e.count}
+
+ `)} + +

Last updated: ${new Date().toLocaleString()}

+
+ `)});var r=d;export{r as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/admin/users.js b/node/dist/lib/joystickdb_gui/ui/pages/admin/users.js new file mode 100644 index 000000000..ee3acefb7 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/admin/users.js @@ -0,0 +1,48 @@ +import o from"@joystick.js/ui";const d=o.component({data:async(e={})=>({users:await e.get("joystickdb_get_users")}),render:({data:e,each:n,when:s})=>(console.log("Admin users data:",e),` +
+

Admin > Users

+ +

User Management

+

Manage JoystickDB users and their permissions.

+ +

+ + +

+ + ${s(e?.users&&e.users.length>0,` + + + + + + + + + + + + + ${n(e.users,t=>` + + + + + + + + + `)} + +
UsernameEmailRolesStatusLast LoginActions
${t.username}${t.email}${(t.roles||["user"]).join(", ")}${t.active?"Active":"Inactive"}${t.last_login?new Date(t.last_login).toLocaleDateString():"Never"} + + + +
+ `)} + + ${s(!e?.users||e.users.length===0,` +

No users found.

+ `)} +
+ `)});var i=d;export{i as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/collections.js b/node/dist/lib/joystickdb_gui/ui/pages/collections.js new file mode 100644 index 000000000..6e29e654a --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/collections.js @@ -0,0 +1,23 @@ +import s from"@joystick.js/ui";const o=s.component({data:async(a={},t={})=>({collections:await a.get("joystickdb_get_collections",{input:{database:t?.params?.database}}),database_name:t?.params?.database}),events:{"click a":(a={},t={})=>{const n=a.target.getAttribute("data-collection"),e=t.data?.database_name;n&&e&&(window.location.href=`/joystickdb/databases/${e}/${n}`)}},render:({data:a,each:t,when:n})=>(console.log("Collections data:",a),` +
+

Databases > ${a?.database_name||"Unknown"}

+ +

Collections in ${a?.database_name||"Unknown"}

+

Select a collection to browse its documents:

+ + + + ${n(!a?.collections||a.collections.length===0,` +

No collections found in this database.

+ `)} +
+ `)});var i=o;export{i as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/dashboard.js b/node/dist/lib/joystickdb_gui/ui/pages/dashboard.js new file mode 100644 index 000000000..b934a8a01 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/dashboard.js @@ -0,0 +1,81 @@ +import s from"@joystick.js/ui";const t=s.component({data:async(a={})=>({stats:await a.get("joystickdb_stats"),databases:await a.get("joystickdb_databases")}),css:` + .jdb-dashboard-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: var(--jdb-spacing-lg); + margin-bottom: var(--jdb-spacing-xl); + } + .jdb-stat-card { + background: white; + border-radius: var(--jdb-border-radius); + padding: var(--jdb-spacing-lg); + border: 1px solid var(--jdb-neutral-3); + } + .jdb-stat-title { + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-sm); + margin: 0 0 0.5rem 0; + text-transform: uppercase; + letter-spacing: 0.5px; + } + .jdb-stat-value { + font-size: 2rem; + font-weight: 700; + color: var(--jdb-neutral-8); + margin: 0; + } + .jdb-quick-actions { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: var(--jdb-spacing-md); + } + .jdb-dashboard-page h1 { + margin: 0 0 var(--jdb-spacing-lg) 0; + color: var(--jdb-neutral-8); + font-size: 1.75rem; + font-weight: 700; + } + `,render:({data:a,when:d})=>` +
+

Database Overview

+
+
+

Total Databases

+

${a?.databases?.databases?.length||0}

+
+
+

Active Connections

+

${a?.stats?.connections?.active||0}

+
+
+

Operations/sec

+

${a?.stats?.performance?.ops_per_second||0}

+
+
+

Memory Usage

+

${Math.round(a?.stats?.memory?.heapUsed/1024/1024)||0} MB

+
+
+ +
+ `});var i=t;export{i as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/databases.js b/node/dist/lib/joystickdb_gui/ui/pages/databases.js new file mode 100644 index 000000000..f33d47b68 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/databases.js @@ -0,0 +1,20 @@ +import o from"@joystick.js/ui";const n=o.component({data:async(a={})=>({databases:await a.get("joystickdb_get_databases")}),events:{"click a":(a={},s={})=>{const t=a.target.getAttribute("data-database");t&&(window.location.href=`/joystickdb/databases/${t}`)}},render:({data:a,each:s,when:t})=>(console.log("Databases data:",a),` +
+

Databases

+

Select a database to browse its collections:

+ + + + ${t(!a?.databases||a.databases.length===0,` +

No databases found.

+ `)} +
+ `)});var c=n;export{c as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/documents.js b/node/dist/lib/joystickdb_gui/ui/pages/documents.js new file mode 100644 index 000000000..65ef44a43 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/documents.js @@ -0,0 +1,51 @@ +import c from"@joystick.js/ui";const d=c.component({data:async(t={},e={})=>({documents:await t.get("joystickdb_get_documents",{input:{database:e?.params?.database,collection:e?.params?.collection,limit:20}}),database_name:e?.params?.database,collection_name:e?.params?.collection}),state:{selected_document:null},events:{"click .document-id":(t={},e={})=>{const s=t.target.textContent,n=e.data.documents.find(o=>o._id===s);e.set_state({selected_document:n})}},render:({data:t,state:e,each:s,when:n})=>(console.log("Documents data:",t),` +
+

+ Databases > + ${t?.database_name} > + ${t?.collection_name||"Unknown"} +

+ +

Documents in ${t?.collection_name||"Unknown"}

+ +

+ + Query Builder +

+ + ${n(t?.documents&&t.documents.length>0,` + + + + + + + + + + ${s(t.documents,o=>` + + + + + + `)} + +
IDPreviewSize
${o._id}${JSON.stringify(o).substring(0,100)}...${Math.ceil(JSON.stringify(o).length/1024)} KB
+ `)} + + ${n(!t?.documents||t.documents.length===0,` +

No documents found in this collection.

+ `)} + + ${n(e.selected_document,` +
+
+

Document Details

+
${JSON.stringify(e.selected_document,null,2)}
+ +
+
+ `)} +
+ `)});var a=d;export{a as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/login.js b/node/dist/lib/joystickdb_gui/ui/pages/login.js new file mode 100644 index 000000000..5989482d8 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/login.js @@ -0,0 +1,102 @@ +import a,{set as d}from"@joystick.js/ui";const t=a.component({state:{loading:!1,error:null},events:{"submit .login-form":async(r={},o={})=>{r.preventDefault(),o.set_state({loading:!0,error:null});try{await d("joystickdb_authenticate",{input:{username:r.target.username.value,password:r.target.password.value}}),window.location.href="/joystickdb/dashboard"}catch(e){o.set_state({loading:!1,error:e.message||"Authentication failed"})}}},css:` + .joystickdb-login { + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background: var(--jdb-neutral-2); + font-family: var(--jdb-font-family); + } + .jdb-login-card { + background: white; + padding: 2rem; + border-radius: var(--jdb-border-radius); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + max-width: 400px; + width: 100%; + border: 1px solid var(--jdb-neutral-3); + } + .jdb-login-title { + margin: 0 0 0.5rem 0; + color: var(--jdb-neutral-8); + font-size: 1.5rem; + font-weight: 600; + } + .jdb-login-subtitle { + margin: 0 0 2rem 0; + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-base); + } + .jdb-form-group { + margin-bottom: 1rem; + } + .jdb-label { + display: block; + margin-bottom: 0.5rem; + font-weight: 500; + color: var(--jdb-neutral-7); + } + .jdb-error { + background: #fef2f2; + color: #dc2626; + padding: 0.75rem; + border-radius: var(--jdb-border-radius); + margin-bottom: 1rem; + border: 1px solid #fecaca; + } + .jdb-btn-block { + width: 100%; + display: flex; + justify-content: center; + } + .jdb-btn:disabled { + opacity: 0.6; + cursor: not-allowed; + } + `,render:({state:r,props:o,when:e})=>` + + `});var n=t;export{n as default}; diff --git a/node/dist/lib/joystickdb_gui/ui/pages/query.js b/node/dist/lib/joystickdb_gui/ui/pages/query.js new file mode 100644 index 000000000..5a004767d --- /dev/null +++ b/node/dist/lib/joystickdb_gui/ui/pages/query.js @@ -0,0 +1,52 @@ +import a from"@joystick.js/ui";const l=a.component({data:async(r={},e={})=>({database_name:e?.params?.database,collection_name:e?.params?.collection}),state:{query:"{}",results:null,loading:!1,error:null},events:{"submit form":async(r={},e={})=>{r.preventDefault();const o=r.target.query.value;if(!o.trim()){e.set_state({error:"Query cannot be empty"});return}e.set_state({loading:!0,error:null,results:null});try{const t=await api.set("joystickdb_run_query",{input:{database:e.data.database_name,collection:e.data.collection_name,query:o}});e.set_state({loading:!1,results:t})}catch(t){e.set_state({loading:!1,error:t.message||"Query execution failed"})}}},render:({data:r,state:e,when:o})=>(console.log("Query page data:",r),console.log("Query state:",e),` +
+

+ Databases > + ${r?.database_name} > + ${r?.collection_name} > Query +

+ +

Query ${r?.collection_name||"Unknown"}

+ +
+
+

Query Builder

+ +
+ + +
+
+ +
+

Example Queries:

+
    +
  • {}
  • +
  • { "status": "active" }
  • +
  • { "createdAt": { "$gte": "2024-01-01" } }
  • +
  • { "name": { "$regex": "john", "$options": "i" } }
  • +
+
+ +
+

Results

+ + ${o(e.loading,"

Executing query...

")} + + ${o(e.error,`

Error: ${e.error}

`)} + + ${o(e.results,` +

Found: ${Array.isArray(e.results)?e.results.length:1} result(s)

+
${JSON.stringify(e.results,null,2)}
+ `)} + + ${o(!e.loading&&!e.error&&!e.results,` +

Execute a query to see results here.

+ `)} +
+
+ `)});var u=l;export{u as default}; diff --git a/node/dist/lib/joystickdb_gui/utils/resolve_component_path.js b/node/dist/lib/joystickdb_gui/utils/resolve_component_path.js new file mode 100644 index 000000000..af6346ad5 --- /dev/null +++ b/node/dist/lib/joystickdb_gui/utils/resolve_component_path.js @@ -0,0 +1 @@ +import e from"path";import{fileURLToPath as r}from"url";const l=r(import.meta.url),_=e.dirname(l),c=(a="")=>{const s=e.resolve(_,".."),n=a.replace(/^\/+/,""),t=e.resolve(s,n),o=e.relative(process.cwd(),t);return o.startsWith("node_modules/")?t:o};var d=c;export{d as default}; diff --git a/node/package-lock.json b/node/package-lock.json index f397369f1..3e078fcd8 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1,16 +1,16 @@ { "name": "@joystick.js/node", - "version": "0.0.0-canary.2276", + "version": "1.0.0-rc.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@joystick.js/node", - "version": "0.0.0-canary.2276", + "version": "1.0.0-rc.3", "license": "SAUCR", "dependencies": { "@aws-sdk/client-s3": "^3.478.0", - "@aws-sdk/lib-storage": "^3.478.0", + "@aws-sdk/lib-storage": "^3.903.0", "bcrypt": "^5.1.1", "chalk": "^5.3.0", "compression": "^1.7.4", @@ -22,6 +22,7 @@ "linkedom": "^0.16.4", "mongo-uri-tool": "^1.0.1", "mongodb": "^6.16.0", + "msgpackr": "^1.11.5", "multer": "^1.4.5-lts.1", "node-cron": "^3.0.3", "node-fetch": "^3.3.2", @@ -43,747 +44,813 @@ } }, "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/crc32/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/crc32c": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", - "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/crc32c/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dependencies": { - "tslib": "^1.11.1" + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@aws-crypto/sha1-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", - "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dependencies": { "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.478.0.tgz", - "integrity": "sha512-OUpbCCnK71lQQ07BohJOx9ZER0rPqRAGOVIIVhNEkeN0uYFLzB7/o5a7+FEPUQXEd5rZRZgbxN5xEmnNW/0Waw==", - "dependencies": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-bucket-endpoint": "3.470.0", - "@aws-sdk/middleware-expect-continue": "3.468.0", - "@aws-sdk/middleware-flexible-checksums": "3.468.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-location-constraint": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-sdk-s3": "3.474.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-ssec": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/signature-v4-multi-region": "3.474.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@aws-sdk/xml-builder": "3.472.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-blob-browser": "^2.0.16", - "@smithy/hash-node": "^2.0.17", - "@smithy/hash-stream-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/md5-js": "^2.0.17", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.478.0.tgz", - "integrity": "sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.478.0.tgz", - "integrity": "sha512-D+QID0dYzmn9dcxgKP3/nMndUqiQbDLsqI0Zf2pG4MW5gPhVNKlDGIV3Ztz8SkMjzGJExNOLW2L569o8jshJVw==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.901.0.tgz", + "integrity": "sha512-wyKhZ51ur1tFuguZ6PgrUsot9KopqD0Tmxw8O8P/N3suQDxFPr0Yo7Y77ezDRDZQ95Ml3C0jlvx79HCo8VxdWA==", + "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.901.0", + "@aws-sdk/credential-provider-node": "3.901.0", + "@aws-sdk/middleware-bucket-endpoint": "3.901.0", + "@aws-sdk/middleware-expect-continue": "3.901.0", + "@aws-sdk/middleware-flexible-checksums": "3.901.0", + "@aws-sdk/middleware-host-header": "3.901.0", + "@aws-sdk/middleware-location-constraint": "3.901.0", + "@aws-sdk/middleware-logger": "3.901.0", + "@aws-sdk/middleware-recursion-detection": "3.901.0", + "@aws-sdk/middleware-sdk-s3": "3.901.0", + "@aws-sdk/middleware-ssec": "3.901.0", + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/region-config-resolver": "3.901.0", + "@aws-sdk/signature-v4-multi-region": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@aws-sdk/util-user-agent-browser": "3.901.0", + "@aws-sdk/util-user-agent-node": "3.901.0", + "@aws-sdk/xml-builder": "3.901.0", + "@smithy/config-resolver": "^4.3.0", + "@smithy/core": "^3.14.0", + "@smithy/eventstream-serde-browser": "^4.2.0", + "@smithy/eventstream-serde-config-resolver": "^4.3.0", + "@smithy/eventstream-serde-node": "^4.2.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/hash-blob-browser": "^4.2.0", + "@smithy/hash-node": "^4.2.0", + "@smithy/hash-stream-node": "^4.2.0", + "@smithy/invalid-dependency": "^4.2.0", + "@smithy/md5-js": "^4.2.0", + "@smithy/middleware-content-length": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-retry": "^4.4.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.2.0", + "@smithy/util-defaults-mode-node": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.901.0.tgz", + "integrity": "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/middleware-host-header": "3.901.0", + "@aws-sdk/middleware-logger": "3.901.0", + "@aws-sdk/middleware-recursion-detection": "3.901.0", + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/region-config-resolver": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@aws-sdk/util-user-agent-browser": "3.901.0", + "@aws-sdk/util-user-agent-node": "3.901.0", + "@smithy/config-resolver": "^4.3.0", + "@smithy/core": "^3.14.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/hash-node": "^4.2.0", + "@smithy/invalid-dependency": "^4.2.0", + "@smithy/middleware-content-length": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-retry": "^4.4.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.2.0", + "@smithy/util-defaults-mode-node": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/core": { - "version": "3.477.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.477.0.tgz", - "integrity": "sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", + "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@aws-sdk/xml-builder": "3.901.0", + "@smithy/core": "^3.14.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/signature-v4": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", - "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.901.0.tgz", + "integrity": "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.901.0.tgz", + "integrity": "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ==", + "dependencies": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-stream": "^4.4.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.478.0.tgz", - "integrity": "sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.901.0.tgz", + "integrity": "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw==", + "dependencies": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/credential-provider-env": "3.901.0", + "@aws-sdk/credential-provider-http": "3.901.0", + "@aws-sdk/credential-provider-process": "3.901.0", + "@aws-sdk/credential-provider-sso": "3.901.0", + "@aws-sdk/credential-provider-web-identity": "3.901.0", + "@aws-sdk/nested-clients": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/credential-provider-imds": "^4.2.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.478.0.tgz", - "integrity": "sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.901.0.tgz", + "integrity": "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.901.0", + "@aws-sdk/credential-provider-http": "3.901.0", + "@aws-sdk/credential-provider-ini": "3.901.0", + "@aws-sdk/credential-provider-process": "3.901.0", + "@aws-sdk/credential-provider-sso": "3.901.0", + "@aws-sdk/credential-provider-web-identity": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/credential-provider-imds": "^4.2.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", - "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.901.0.tgz", + "integrity": "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.478.0.tgz", - "integrity": "sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.901.0.tgz", + "integrity": "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw==", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/client-sso": "3.901.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/token-providers": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", - "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.901.0.tgz", + "integrity": "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/core": "3.901.0", + "@aws-sdk/nested-clients": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.478.0.tgz", - "integrity": "sha512-R1D+hX8Lea9mBZqj2A4hWkSNGCTv5pCsX/+fmfnFtmKL4gPn2MZ1GtnI6Rnk0zyTrQL94SpVc6CcEvhWsm5oiQ==", + "version": "3.903.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.903.0.tgz", + "integrity": "sha512-/CFhz/QtPSI9CVAdlW6JrfMyPjnE38a8pzTi8CMCWXu51c1NqzcGXo80LZUwzWkcWk5ZqPWRYzrw43TQ8ia78w==", "dependencies": { - "@smithy/abort-controller": "^2.0.1", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/smithy-client": "^2.1.18", + "@smithy/abort-controller": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/smithy-client": "^4.7.0", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.0.0" + "@aws-sdk/client-s3": "^3.901.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.470.0.tgz", - "integrity": "sha512-vLXXNWtsRmEIwzJ9HUQfIuTNAsEzvCv0Icsnkvt2BiBZXnmHdp2vIC3e3+kfy1D7dVQloXqMmnfcLu/BUMu2Jw==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.901.0.tgz", + "integrity": "sha512-mPF3N6eZlVs9G8aBSzvtoxR1RZqMo1aIwR+X8BAZSkhfj55fVF2no4IfPXfdFO3I66N+zEQ8nKoB0uTATWrogQ==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.468.0.tgz", - "integrity": "sha512-/wmLjmfgeulxhhmnxX3X3N933TvGsYckVIFjAtDSpLjqkbwzEcNiLq7AdmNJ4BfxG0MCMgcht561DCCD19x8Bg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.901.0.tgz", + "integrity": "sha512-bwq9nj6MH38hlJwOY9QXIDwa6lI48UsaZpaXbdD71BljEIRlxDzfB4JaYb+ZNNK7RIAdzsP/K05mJty6KJAQHw==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.468.0.tgz", - "integrity": "sha512-LQwL/N5MCj3Y5keLLewHTqeAXUIMsHFZyxDXRm/uxrOon9ufLKDvGvzAmfwn1/CuSUo66ZfT8VPSA4BsC90RtA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.901.0.tgz", + "integrity": "sha512-63lcKfggVUFyXhE4SsFXShCTCyh7ZHEqXLyYEL4DwX+VWtxutf9t9m3fF0TNUYDE8eEGWiRXhegj8l4FjuW+wA==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.468.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", - "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.901.0.tgz", + "integrity": "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.468.0.tgz", - "integrity": "sha512-0gBX/lDynQr4YIhM9h1dVnkVWqrg+34iOCVIUq8jHxzUzgZWglGkG9lHGGg0r1xkLTmegeoo1OKH8wrQ6n33Cg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.901.0.tgz", + "integrity": "sha512-MuCS5R2ngNoYifkVt05CTULvYVWX0dvRT0/Md4jE3a0u0yMygYy31C1zorwfE/SUgAQXyLmUx8ATmPp9PppImQ==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", - "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.901.0.tgz", + "integrity": "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", - "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.901.0.tgz", + "integrity": "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@aws/lambda-invoke-store": "^0.0.1", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.474.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.474.0.tgz", - "integrity": "sha512-62aAo/8u5daIabeJ+gseYeHeShe9eYH6mH+kfWmLsHybXCCv1EaD/ZkdXWNhL0HZ3bUI1z1SF1p8jjTAWALnwA==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", - "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.901.0.tgz", + "integrity": "sha512-prgjVC3fDT2VIlmQPiw/cLee8r4frTam9GILRUVQyDdNtshNwV3MiaSCLzzQJjKJlLgnBLNUHJCSmvUVtg+3iA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.14.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/signature-v4": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.468.0.tgz", - "integrity": "sha512-y1qLW24wRkOGBTK5d6eJXf6d8HYo4rzT4a1mNDN1rd18NSffwQ6Yke5qeUiIaxa0y/l+FvvNYErbhYtij2rJoQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.901.0.tgz", + "integrity": "sha512-YiLLJmA3RvjL38mFLuu8fhTTGWtp2qT24VqpucgfoyziYcTgIQkJJmKi90Xp6R6/3VcArqilyRgM1+x8i/em+Q==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz", - "integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.901.0.tgz", + "integrity": "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ==", + "dependencies": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@smithy/core": "^3.14.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.901.0.tgz", + "integrity": "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/middleware-host-header": "3.901.0", + "@aws-sdk/middleware-logger": "3.901.0", + "@aws-sdk/middleware-recursion-detection": "3.901.0", + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/region-config-resolver": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@aws-sdk/util-user-agent-browser": "3.901.0", + "@aws-sdk/util-user-agent-node": "3.901.0", + "@smithy/config-resolver": "^4.3.0", + "@smithy/core": "^3.14.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/hash-node": "^4.2.0", + "@smithy/invalid-dependency": "^4.2.0", + "@smithy/middleware-content-length": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-retry": "^4.4.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.2.0", + "@smithy/util-defaults-mode-node": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.470.0.tgz", - "integrity": "sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.901.0.tgz", + "integrity": "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.474.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.474.0.tgz", - "integrity": "sha512-93OWRQgTJZASXLrlUNX7mmXknNkYxFYldRLARmYQccONmnIqgYQW0lQj8BFwqkHJTzSMik3/UsU0SHKwZ9ynYA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.901.0.tgz", + "integrity": "sha512-2IWxbll/pRucp1WQkHi2W5E2SVPGBvk4Is923H7gpNksbVFws18ItjMM8ZpGm44cJEoy1zR5gjhLFklatpuoOw==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.474.0", - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/middleware-sdk-s3": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/signature-v4": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.478.0.tgz", - "integrity": "sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.901.0.tgz", + "integrity": "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ==", + "dependencies": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/nested-clients": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", - "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.901.0.tgz", + "integrity": "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.465.0.tgz", - "integrity": "sha512-zOJ82vzDJFqBX9yZBlNeHHrul/kpx/DCoxzW5UBbZeb26kfV53QhMSoEmY8/lEbBqlqargJ/sgRC845GFhHNQw==", + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz", - "integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.901.0.tgz", + "integrity": "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", - "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", - "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.901.0.tgz", + "integrity": "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", - "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.901.0.tgz", + "integrity": "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -794,24 +861,25 @@ } } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dependencies": { - "tslib": "^2.3.1" - } - }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.472.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.472.0.tgz", - "integrity": "sha512-PwjVxz1hr9up8QkddabuScPZ/d5aDHgvHYgK4acHYzltXL4wngfvimi5ZqXTzVWF2QANxHmWnHUr45QJX71oJQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.901.0.tgz", + "integrity": "sha512-pxFCkuAP7Q94wMTNPAwi6hEtNrp/BdFf+HOrIEeFQsk4EoOmpKY3I6S+u6A9Wg295J80Kh74LqDWM22ux3z6Aw==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz", + "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==", + "engines": { + "node": ">=18.0.0" } }, "node_modules/@colors/colors": { @@ -1390,6 +1458,78 @@ "sparse-bitfield": "^3.0.3" } }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@redis/bloom": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.8.0.tgz", @@ -1463,640 +1603,684 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.15.tgz", - "integrity": "sha512-JkS36PIS3/UCbq/MaozzV7jECeL+BTt4R75bwY8i+4RASys4xOyUS1HsRyUNSqUXFP4QyCz5aNnh3ltuaxv+pw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.0.tgz", + "integrity": "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/chunked-blob-reader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz", - "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.1.tgz", - "integrity": "sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.0.tgz", + "integrity": "sha512-HNbGWdyTfSM1nfrZKQjYTvD8k086+M8s1EYkBUdGC++lhxegUp2HgNf5RIt6oOGVvsC26hBCW/11tv8KbwLn/Q==", "dependencies": { - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/util-base64": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/config-resolver": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.21.tgz", - "integrity": "sha512-rlLIGT+BeqjnA6C2FWumPRJS1UW07iU5ZxDHtFuyam4W65gIaOFMjkB90ofKCIh+0mLVQrQFrl/VLtQT/6FWTA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.3.0.tgz", + "integrity": "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.2.1.tgz", - "integrity": "sha512-f6cwmMuHo7RIw/c184NBd2rGeGvGIX6p55HSrG5jfR3qkNYo80PHRfhzkJMq1+mv1ZjI5p8NhenWMMkIRJR4tw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.14.0.tgz", + "integrity": "sha512-XJ4z5FxvY/t0Dibms/+gLJrI5niRoY0BCmE02fwmPcRYFPI4KI876xaE79YGWIKnEslMbuQPsIEsoU/DXa0DoA==", "dependencies": { - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@smithy/middleware-serde": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.4.tgz", - "integrity": "sha512-cwPJN1fa1YOQzhBlTXRavABEYRRchci1X79QRwzaNLySnIMJfztyv1Zkst0iZPLMnpn8+CnHu3wOHS11J5Dr3A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.0.tgz", + "integrity": "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/property-provider": "^2.0.16", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-codec": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.15.tgz", - "integrity": "sha512-crjvz3j1gGPwA0us6cwS7+5gAn35CTmqu/oIxVbYJo2Qm/sGAye6zGJnMDk3BKhWZw5kcU1G4MxciTkuBpOZPg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.0.tgz", + "integrity": "sha512-XE7CtKfyxYiNZ5vz7OvyTf1osrdbJfmUy+rbh+NLQmZumMGvY0mT0Cq1qKSfhrvLtRYzMsOBuRpi10dyI0EBPg==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-hex-encoding": "^2.0.0", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.6.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.15.tgz", - "integrity": "sha512-WiFG5N9j3jmS5P0z5Xev6dO0c3lf7EJYC2Ncb0xDnWFvShwXNn741AF71ABr5EcZw8F4rQma0362MMjAwJeZog==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.0.tgz", + "integrity": "sha512-U53p7fcrk27k8irLhOwUu+UYnBqsXNLKl1XevOpsxK3y1Lndk8R7CSiZV6FN3fYFuTPuJy5pP6qa/bjDzEkRvA==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.15.tgz", - "integrity": "sha512-o65d2LRjgCbWYH+VVNlWXtmsI231SO99ZTOL4UuIPa6WTjbSHWtlXvUcJG9libhEKWmEV9DIUiH2IqyPWi7ubA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.0.tgz", + "integrity": "sha512-uwx54t8W2Yo9Jr3nVF5cNnkAAnMCJ8Wrm+wDlQY6rY/IrEgZS3OqagtCu/9ceIcZFQ1zVW/zbN9dxb5esuojfA==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.15.tgz", - "integrity": "sha512-9OOXiIhHq1VeOG6xdHkn2ZayfMYM3vzdUTV3zhcCnt+tMqA3BJK3XXTJFRR2BV28rtRM778DzqbBTf+hqwQPTg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.0.tgz", + "integrity": "sha512-yjM2L6QGmWgJjVu/IgYd6hMzwm/tf4VFX0lm8/SvGbGBwc+aFl3hOzvO/e9IJ2XI+22Tx1Zg3vRpFRs04SWFcg==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.15.tgz", - "integrity": "sha512-dP8AQp/pXlWBjvL0TaPBJC3rM0GoYv7O0Uim8d/7UKZ2Wo13bFI3/BhQfY/1DeiP1m23iCHFNFtOQxfQNBB8rQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.0.tgz", + "integrity": "sha512-C3jxz6GeRzNyGKhU7oV656ZbuHY93mrfkT12rmjDdZch142ykjn8do+VOkeRNjSGKw01p4g+hdalPYPhmMwk1g==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/eventstream-codec": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.1.tgz", - "integrity": "sha512-6MNk16fqb8EwcYY8O8WxB3ArFkLZ2XppsSNo1h7SQcFdDDwIumiJeO6wRzm7iB68xvsOQzsdQKbdtTieS3hfSQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.0.tgz", + "integrity": "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw==", "dependencies": { - "@smithy/protocol-http": "^3.0.11", - "@smithy/querystring-builder": "^2.0.15", - "@smithy/types": "^2.7.0", - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^5.3.0", + "@smithy/querystring-builder": "^4.2.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/hash-blob-browser": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.16.tgz", - "integrity": "sha512-cSYRi05LA7DZDwjB1HL0BP8B56eUNNeLglVH147QTXFyuXJq/7erAIiLRfsyXB8+GfFHkSS5BHbc76a7k/AYPA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.0.tgz", + "integrity": "sha512-MWmrRTPqVKpN8NmxmJPTeQuhewTt8Chf+waB38LXHZoA02+BeWYVQ9ViAwHjug8m7lQb1UWuGqp3JoGDOWvvuA==", "dependencies": { - "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.1", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/hash-node": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.17.tgz", - "integrity": "sha512-Il6WuBcI1nD+e2DM7tTADMf01wEPGK8PAhz4D+YmDUVaoBqlA+CaH2uDJhiySifmuKBZj748IfygXty81znKhw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.0.tgz", + "integrity": "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA==", "dependencies": { - "@smithy/types": "^2.7.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/hash-stream-node": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.17.tgz", - "integrity": "sha512-ey8DtnATzp1mOXgS7rqMwSmAki6iJA+jgNucKcxRkhMB1rrICfHg+rhmIF50iLPDHUhTcS5pBMOrLzzpZftvNQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.0.tgz", + "integrity": "sha512-8dELAuGv+UEjtzrpMeNBZc1sJhO8GxFVV/Yh21wE35oX4lOE697+lsMHBoUIFAUuYkTMIeu0EuJSEsH7/8Y+UQ==", "dependencies": { - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.15.tgz", - "integrity": "sha512-dlEKBFFwVfzA5QroHlBS94NpgYjXhwN/bFfun+7w3rgxNvVy79SK0w05iGc7UAeC5t+D7gBxrzdnD6hreZnDVQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.0.tgz", + "integrity": "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/is-array-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", - "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/md5-js": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.17.tgz", - "integrity": "sha512-jmISTCnEkOnm2oCNx/rMkvBT/eQh3aA6nktevkzbmn/VYqYEuc5Z2n5sTTqsciMSO01Lvf56wG1A4twDqovYeQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.0.tgz", + "integrity": "sha512-LFEPniXGKRQArFmDQ3MgArXlClFJMsXDteuQQY8WG1/zzv6gVSo96+qpkuu1oJp4MZsKrwchY0cuAoPKzEbaNA==", "dependencies": { - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.17.tgz", - "integrity": "sha512-OyadvMcKC7lFXTNBa8/foEv7jOaqshQZkjWS9coEXPRZnNnihU/Ls+8ZuJwGNCOrN2WxXZFmDWhegbnM4vak8w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.0.tgz", + "integrity": "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ==", "dependencies": { - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.3.tgz", - "integrity": "sha512-nYfxuq0S/xoAjdLbyn1ixeVB6cyH9wYCMtbbOCpcCRYR5u2mMtqUtVjjPAZ/DIdlK3qe0tpB0Q76szFGNuz+kQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.0.tgz", + "integrity": "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw==", "dependencies": { - "@smithy/middleware-serde": "^2.0.15", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/shared-ini-file-loader": "^2.2.7", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@smithy/core": "^3.14.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/middleware-retry": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.25.tgz", - "integrity": "sha512-FXhafCPvx/9L9OgHJ3cdo/pD1f7ngC7DKsjDV2J7k6LO/Yl69POoBLk4sI1OZPUGc4dfxriENlTma9Nj1hI+IQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.0.tgz", + "integrity": "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/service-error-classification": "^2.0.8", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/service-error-classification": "^4.2.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.15.tgz", - "integrity": "sha512-FOZRFk/zN4AT4wzGuBY+39XWe+ZnCFd0gZtyw3f9Okn2CJPixl9GyWe98TIaljeZdqWkgrzGyPre20AcW2UMHQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.0.tgz", + "integrity": "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.9.tgz", - "integrity": "sha512-bCB5dUtGQ5wh7QNL2ELxmDc6g7ih7jWU3Kx6MYH1h4mZbv9xL3WyhKHojRltThCB1arLPyTUFDi+x6fB/oabtA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.0.tgz", + "integrity": "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/node-config-provider": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.8.tgz", - "integrity": "sha512-+w26OKakaBUGp+UG+dxYZtFb5fs3tgHg3/QrRrmUZj+rl3cIuw840vFUXX35cVPTUCQIiTqmz7CpVF7+hdINdQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.0.tgz", + "integrity": "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA==", "dependencies": { - "@smithy/property-provider": "^2.0.16", - "@smithy/shared-ini-file-loader": "^2.2.7", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/node-http-handler": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.2.1.tgz", - "integrity": "sha512-8iAKQrC8+VFHPAT8pg4/j6hlsTQh+NKOWlctJBrYtQa4ExcxX7aSg3vdQ2XLoYwJotFUurg/NLqFCmZaPRrogw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.3.0.tgz", + "integrity": "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q==", "dependencies": { - "@smithy/abort-controller": "^2.0.15", - "@smithy/protocol-http": "^3.0.11", - "@smithy/querystring-builder": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/querystring-builder": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.16.tgz", - "integrity": "sha512-28Ky0LlOqtEjwg5CdHmwwaDRHcTWfPRzkT6HrhwOSRS2RryAvuDfJrZpM+BMcrdeCyEg1mbcgIMoqTla+rdL8Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.0.tgz", + "integrity": "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/protocol-http": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.11.tgz", - "integrity": "sha512-3ziB8fHuXIRamV/akp/sqiWmNPR6X+9SB8Xxnozzj+Nq7hSpyKdFHd1FLpBkgfGFUTzzcBJQlDZPSyxzmdcx5A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.0.tgz", + "integrity": "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.15.tgz", - "integrity": "sha512-e1q85aT6HutvouOdN+dMsN0jcdshp50PSCvxDvo6aIM57LqeXimjfONUEgfqQ4IFpYWAtVixptyIRE5frMp/2A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.0.tgz", + "integrity": "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A==", "dependencies": { - "@smithy/types": "^2.7.0", - "@smithy/util-uri-escape": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.15.tgz", - "integrity": "sha512-jbBvoK3cc81Cj1c1TH1qMYxNQKHrYQ2DoTntN9FBbtUWcGhc+T4FP6kCKYwRLXyU4AajwGIZstvNAmIEgUUNTQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.0.tgz", + "integrity": "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.8.tgz", - "integrity": "sha512-jCw9+005im8tsfYvwwSc4TTvd29kXRFkH9peQBg5R/4DD03ieGm6v6Hpv9nIAh98GwgYg1KrztcINC1s4o7/hg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.0.tgz", + "integrity": "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA==", "dependencies": { - "@smithy/types": "^2.7.0" + "@smithy/types": "^4.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.7.tgz", - "integrity": "sha512-0Qt5CuiogIuvQIfK+be7oVHcPsayLgfLJGkPlbgdbl0lD28nUKu4p11L+UG3SAEsqc9UsazO+nErPXw7+IgDpQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.0.tgz", + "integrity": "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/signature-v4": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.18.tgz", - "integrity": "sha512-SJRAj9jT/l9ocm8D0GojMbnA1sp7I4JeStOQ4lEXI8A5eHE73vbjlzlqIFB7cLvIgau0oUl4cGVpF9IGCrvjlw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.0.tgz", + "integrity": "sha512-MKNyhXEs99xAZaFhm88h+3/V+tCRDQ+PrDzRqL0xdDpq4gjxcMmf5rBA3YXgqZqMZ/XwemZEurCBQMfxZOWq/g==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.15", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/smithy-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.2.0.tgz", - "integrity": "sha512-C/bkNue5H5Obgl83SnlBt4v6VM68CqIjIELh3vAabud87xFYznLNKtj6Qb69Z+QOnLp9T+We++sEem/f2AHE+Q==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.7.0.tgz", + "integrity": "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ==", "dependencies": { - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-stream": "^2.0.23", - "tslib": "^2.5.0" + "@smithy/core": "^3.14.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-stream": "^4.4.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/types": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", - "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", + "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/url-parser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.15.tgz", - "integrity": "sha512-sADUncUj9rNbOTrdDGm4EXlUs0eQ9dyEo+V74PJoULY4jSQxS+9gwEgsPYyiu8PUOv16JC/MpHonOgqP/IEDZA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.0.tgz", + "integrity": "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A==", "dependencies": { - "@smithy/querystring-parser": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/querystring-parser": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/util-base64": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", - "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.2.0.tgz", + "integrity": "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.1.tgz", - "integrity": "sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/util-body-length-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", - "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.0.tgz", + "integrity": "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-buffer-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", - "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dependencies": { - "@smithy/is-array-buffer": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-config-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", - "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.23.tgz", - "integrity": "sha512-2u+7t7Wgz1jlfsf6il3pz6DIzyJHS3qrnNnmATICm00pQeqp2D4kUOYauOgKGIeKgVpwzzq8+hFQe749r3xR5w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.2.0.tgz", + "integrity": "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ==", "dependencies": { - "@smithy/property-provider": "^2.0.16", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.30.tgz", - "integrity": "sha512-nmcmEyRlClNprp7mBnUzfmW6HrKQK+yvl+cyXCRUoQSxRvZuLDrztV+JD+zr3qV/oirEc4Q0QNIrrhTDCE6JeA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.0.tgz", + "integrity": "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg==", "dependencies": { - "@smithy/config-resolver": "^2.0.21", - "@smithy/credential-provider-imds": "^2.1.4", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/property-provider": "^2.0.16", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/config-resolver": "^4.3.0", + "@smithy/credential-provider-imds": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-endpoints": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.7.tgz", - "integrity": "sha512-Q2gEind3jxoLk6hdKWyESMU7LnXz8aamVwM+VeVjOYzYT1PalGlY/ETa48hv2YpV4+YV604y93YngyzzzQ4IIA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.0.tgz", + "integrity": "sha512-TXeCn22D56vvWr/5xPqALc9oO+LN+QpFjrSM7peG/ckqEPoI3zaKZFp+bFwfmiHhn5MGWPaLCqDOJPPIixk9Wg==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", - "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-middleware": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.8.tgz", - "integrity": "sha512-qkvqQjM8fRGGA8P2ydWylMhenCDP8VlkPn8kiNuFEaFz9xnUKC2irfqsBSJrfrOB9Qt6pQsI58r3zvvumhFMkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.0.tgz", + "integrity": "sha512-u9OOfDa43MjagtJZ8AapJcmimP+K2Z7szXn8xbty4aza+7P1wjFmy2ewjSbhEiYQoW1unTlOAIV165weYAaowA==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-retry": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.8.tgz", - "integrity": "sha512-cQTPnVaVFMjjS6cb44WV2yXtHVyXDC5icKyIbejMarJEApYeJWpBU3LINTxHqp/tyLI+MZOUdosr2mZ3sdziNg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.0.tgz", + "integrity": "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg==", "dependencies": { - "@smithy/service-error-classification": "^2.0.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/service-error-classification": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-stream": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.23.tgz", - "integrity": "sha512-OJMWq99LAZJUzUwTk+00plyxX3ESktBaGPhqNIEVab+53gLULiWN9B/8bRABLg0K6R6Xg4t80uRdhk3B/LZqMQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.4.0.tgz", + "integrity": "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg==", "dependencies": { - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/types": "^2.7.0", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-uri-escape": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", - "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", - "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/util-waiter": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.15.tgz", - "integrity": "sha512-9Y+btzzB7MhLADW7xgD6SjvmoYaRkrb/9SCbNGmNdfO47v38rxb90IGXyDtAK0Shl9bMthTmLgjlfYc+vtz2Qw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.0.tgz", + "integrity": "sha512-0Z+nxUU4/4T+SL8BCNN4ztKdQjToNvUYmkF1kXO5T7Yz3Gafzh0HeIG6mrkN8Fz3gn9hSyxuAT+6h4vM+iQSBQ==", "dependencies": { - "@smithy/abort-controller": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@types/triple-beam": { @@ -2294,9 +2478,9 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -3042,21 +3226,17 @@ } }, "node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "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": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } ], "dependencies": { - "strnum": "^1.0.5" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -3846,6 +4026,35 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, "node_modules/multer": { "version": "1.4.5-lts.1", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", @@ -3940,6 +4149,20 @@ "url": "https://opencollective.com/node-fetch" } }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/node-html-parser": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.11.tgz", @@ -4950,9 +5173,15 @@ } }, "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ] }, "node_modules/systeminformation": { "version": "5.25.11", @@ -5514,689 +5743,710 @@ }, "dependencies": { "@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "requires": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.6.2" } }, "@aws-crypto/crc32c": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", - "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "requires": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "requires": { - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.6.2" } }, "@aws-crypto/sha1-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", - "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "requires": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" }, "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "requires": { + "tslib": "^2.6.2" + } + }, + "@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "requires": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + } + }, + "@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "requires": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + } } } }, "@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "requires": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" }, "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "requires": { + "tslib": "^2.6.2" + } + }, + "@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "requires": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + } + }, + "@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "requires": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + } } } }, "@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "requires": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.6.2" } }, "@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "requires": { - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.6.2" } }, "@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "requires": { "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" }, "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "requires": { + "tslib": "^2.6.2" + } + }, + "@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "requires": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + } + }, + "@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "requires": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + } } } }, "@aws-sdk/client-s3": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.478.0.tgz", - "integrity": "sha512-OUpbCCnK71lQQ07BohJOx9ZER0rPqRAGOVIIVhNEkeN0uYFLzB7/o5a7+FEPUQXEd5rZRZgbxN5xEmnNW/0Waw==", - "requires": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-bucket-endpoint": "3.470.0", - "@aws-sdk/middleware-expect-continue": "3.468.0", - "@aws-sdk/middleware-flexible-checksums": "3.468.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-location-constraint": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-sdk-s3": "3.474.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-ssec": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/signature-v4-multi-region": "3.474.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@aws-sdk/xml-builder": "3.472.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-blob-browser": "^2.0.16", - "@smithy/hash-node": "^2.0.17", - "@smithy/hash-stream-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/md5-js": "^2.0.17", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.901.0.tgz", + "integrity": "sha512-wyKhZ51ur1tFuguZ6PgrUsot9KopqD0Tmxw8O8P/N3suQDxFPr0Yo7Y77ezDRDZQ95Ml3C0jlvx79HCo8VxdWA==", + "requires": { + "@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.901.0", + "@aws-sdk/credential-provider-node": "3.901.0", + "@aws-sdk/middleware-bucket-endpoint": "3.901.0", + "@aws-sdk/middleware-expect-continue": "3.901.0", + "@aws-sdk/middleware-flexible-checksums": "3.901.0", + "@aws-sdk/middleware-host-header": "3.901.0", + "@aws-sdk/middleware-location-constraint": "3.901.0", + "@aws-sdk/middleware-logger": "3.901.0", + "@aws-sdk/middleware-recursion-detection": "3.901.0", + "@aws-sdk/middleware-sdk-s3": "3.901.0", + "@aws-sdk/middleware-ssec": "3.901.0", + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/region-config-resolver": "3.901.0", + "@aws-sdk/signature-v4-multi-region": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@aws-sdk/util-user-agent-browser": "3.901.0", + "@aws-sdk/util-user-agent-node": "3.901.0", + "@aws-sdk/xml-builder": "3.901.0", + "@smithy/config-resolver": "^4.3.0", + "@smithy/core": "^3.14.0", + "@smithy/eventstream-serde-browser": "^4.2.0", + "@smithy/eventstream-serde-config-resolver": "^4.3.0", + "@smithy/eventstream-serde-node": "^4.2.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/hash-blob-browser": "^4.2.0", + "@smithy/hash-node": "^4.2.0", + "@smithy/hash-stream-node": "^4.2.0", + "@smithy/invalid-dependency": "^4.2.0", + "@smithy/md5-js": "^4.2.0", + "@smithy/middleware-content-length": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-retry": "^4.4.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.2.0", + "@smithy/util-defaults-mode-node": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" } }, "@aws-sdk/client-sso": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.478.0.tgz", - "integrity": "sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g==", - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sts": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.478.0.tgz", - "integrity": "sha512-D+QID0dYzmn9dcxgKP3/nMndUqiQbDLsqI0Zf2pG4MW5gPhVNKlDGIV3Ztz8SkMjzGJExNOLW2L569o8jshJVw==", - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.901.0.tgz", + "integrity": "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg==", + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/middleware-host-header": "3.901.0", + "@aws-sdk/middleware-logger": "3.901.0", + "@aws-sdk/middleware-recursion-detection": "3.901.0", + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/region-config-resolver": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@aws-sdk/util-user-agent-browser": "3.901.0", + "@aws-sdk/util-user-agent-node": "3.901.0", + "@smithy/config-resolver": "^4.3.0", + "@smithy/core": "^3.14.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/hash-node": "^4.2.0", + "@smithy/invalid-dependency": "^4.2.0", + "@smithy/middleware-content-length": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-retry": "^4.4.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.2.0", + "@smithy/util-defaults-mode-node": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/core": { - "version": "3.477.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.477.0.tgz", - "integrity": "sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==", - "requires": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", + "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", + "requires": { + "@aws-sdk/types": "3.901.0", + "@aws-sdk/xml-builder": "3.901.0", + "@smithy/core": "^3.14.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/signature-v4": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", - "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", - "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.901.0.tgz", + "integrity": "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA==", + "requires": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-http": { + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.901.0.tgz", + "integrity": "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ==", + "requires": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-stream": "^4.4.0", + "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.478.0.tgz", - "integrity": "sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw==", - "requires": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.901.0.tgz", + "integrity": "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw==", + "requires": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/credential-provider-env": "3.901.0", + "@aws-sdk/credential-provider-http": "3.901.0", + "@aws-sdk/credential-provider-process": "3.901.0", + "@aws-sdk/credential-provider-sso": "3.901.0", + "@aws-sdk/credential-provider-web-identity": "3.901.0", + "@aws-sdk/nested-clients": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/credential-provider-imds": "^4.2.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.478.0.tgz", - "integrity": "sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA==", - "requires": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.901.0.tgz", + "integrity": "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ==", + "requires": { + "@aws-sdk/credential-provider-env": "3.901.0", + "@aws-sdk/credential-provider-http": "3.901.0", + "@aws-sdk/credential-provider-ini": "3.901.0", + "@aws-sdk/credential-provider-process": "3.901.0", + "@aws-sdk/credential-provider-sso": "3.901.0", + "@aws-sdk/credential-provider-web-identity": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/credential-provider-imds": "^4.2.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", - "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.901.0.tgz", + "integrity": "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.478.0.tgz", - "integrity": "sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.901.0.tgz", + "integrity": "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw==", "requires": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/client-sso": "3.901.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/token-providers": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", - "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.901.0.tgz", + "integrity": "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/core": "3.901.0", + "@aws-sdk/nested-clients": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/lib-storage": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.478.0.tgz", - "integrity": "sha512-R1D+hX8Lea9mBZqj2A4hWkSNGCTv5pCsX/+fmfnFtmKL4gPn2MZ1GtnI6Rnk0zyTrQL94SpVc6CcEvhWsm5oiQ==", + "version": "3.903.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.903.0.tgz", + "integrity": "sha512-/CFhz/QtPSI9CVAdlW6JrfMyPjnE38a8pzTi8CMCWXu51c1NqzcGXo80LZUwzWkcWk5ZqPWRYzrw43TQ8ia78w==", "requires": { - "@smithy/abort-controller": "^2.0.1", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/smithy-client": "^2.1.18", + "@smithy/abort-controller": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/smithy-client": "^4.7.0", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-bucket-endpoint": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.470.0.tgz", - "integrity": "sha512-vLXXNWtsRmEIwzJ9HUQfIuTNAsEzvCv0Icsnkvt2BiBZXnmHdp2vIC3e3+kfy1D7dVQloXqMmnfcLu/BUMu2Jw==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.901.0.tgz", + "integrity": "sha512-mPF3N6eZlVs9G8aBSzvtoxR1RZqMo1aIwR+X8BAZSkhfj55fVF2no4IfPXfdFO3I66N+zEQ8nKoB0uTATWrogQ==", "requires": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-expect-continue": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.468.0.tgz", - "integrity": "sha512-/wmLjmfgeulxhhmnxX3X3N933TvGsYckVIFjAtDSpLjqkbwzEcNiLq7AdmNJ4BfxG0MCMgcht561DCCD19x8Bg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.901.0.tgz", + "integrity": "sha512-bwq9nj6MH38hlJwOY9QXIDwa6lI48UsaZpaXbdD71BljEIRlxDzfB4JaYb+ZNNK7RIAdzsP/K05mJty6KJAQHw==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-flexible-checksums": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.468.0.tgz", - "integrity": "sha512-LQwL/N5MCj3Y5keLLewHTqeAXUIMsHFZyxDXRm/uxrOon9ufLKDvGvzAmfwn1/CuSUo66ZfT8VPSA4BsC90RtA==", - "requires": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.468.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.901.0.tgz", + "integrity": "sha512-63lcKfggVUFyXhE4SsFXShCTCyh7ZHEqXLyYEL4DwX+VWtxutf9t9m3fF0TNUYDE8eEGWiRXhegj8l4FjuW+wA==", + "requires": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", - "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.901.0.tgz", + "integrity": "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-location-constraint": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.468.0.tgz", - "integrity": "sha512-0gBX/lDynQr4YIhM9h1dVnkVWqrg+34iOCVIUq8jHxzUzgZWglGkG9lHGGg0r1xkLTmegeoo1OKH8wrQ6n33Cg==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.901.0.tgz", + "integrity": "sha512-MuCS5R2ngNoYifkVt05CTULvYVWX0dvRT0/Md4jE3a0u0yMygYy31C1zorwfE/SUgAQXyLmUx8ATmPp9PppImQ==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-logger": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", - "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.901.0.tgz", + "integrity": "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", - "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.901.0.tgz", + "integrity": "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@aws/lambda-invoke-store": "^0.0.1", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-sdk-s3": { - "version": "3.474.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.474.0.tgz", - "integrity": "sha512-62aAo/8u5daIabeJ+gseYeHeShe9eYH6mH+kfWmLsHybXCCv1EaD/ZkdXWNhL0HZ3bUI1z1SF1p8jjTAWALnwA==", - "requires": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-signing": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", - "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", - "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.901.0.tgz", + "integrity": "sha512-prgjVC3fDT2VIlmQPiw/cLee8r4frTam9GILRUVQyDdNtshNwV3MiaSCLzzQJjKJlLgnBLNUHJCSmvUVtg+3iA==", + "requires": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.14.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/signature-v4": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-ssec": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.468.0.tgz", - "integrity": "sha512-y1qLW24wRkOGBTK5d6eJXf6d8HYo4rzT4a1mNDN1rd18NSffwQ6Yke5qeUiIaxa0y/l+FvvNYErbhYtij2rJoQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.901.0.tgz", + "integrity": "sha512-YiLLJmA3RvjL38mFLuu8fhTTGWtp2qT24VqpucgfoyziYcTgIQkJJmKi90Xp6R6/3VcArqilyRgM1+x8i/em+Q==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz", - "integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==", - "requires": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.901.0.tgz", + "integrity": "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ==", + "requires": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@smithy/core": "^3.14.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/nested-clients": { + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.901.0.tgz", + "integrity": "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag==", + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.901.0", + "@aws-sdk/middleware-host-header": "3.901.0", + "@aws-sdk/middleware-logger": "3.901.0", + "@aws-sdk/middleware-recursion-detection": "3.901.0", + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/region-config-resolver": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@aws-sdk/util-endpoints": "3.901.0", + "@aws-sdk/util-user-agent-browser": "3.901.0", + "@aws-sdk/util-user-agent-node": "3.901.0", + "@smithy/config-resolver": "^4.3.0", + "@smithy/core": "^3.14.0", + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/hash-node": "^4.2.0", + "@smithy/invalid-dependency": "^4.2.0", + "@smithy/middleware-content-length": "^4.2.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-retry": "^4.4.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.2.0", + "@smithy/util-defaults-mode-node": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.470.0.tgz", - "integrity": "sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.901.0.tgz", + "integrity": "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A==", "requires": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/signature-v4-multi-region": { - "version": "3.474.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.474.0.tgz", - "integrity": "sha512-93OWRQgTJZASXLrlUNX7mmXknNkYxFYldRLARmYQccONmnIqgYQW0lQj8BFwqkHJTzSMik3/UsU0SHKwZ9ynYA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.901.0.tgz", + "integrity": "sha512-2IWxbll/pRucp1WQkHi2W5E2SVPGBvk4Is923H7gpNksbVFws18ItjMM8ZpGm44cJEoy1zR5gjhLFklatpuoOw==", "requires": { - "@aws-sdk/middleware-sdk-s3": "3.474.0", - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@aws-sdk/middleware-sdk-s3": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/signature-v4": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/token-providers": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.478.0.tgz", - "integrity": "sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A==", - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.901.0.tgz", + "integrity": "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ==", + "requires": { + "@aws-sdk/core": "3.901.0", + "@aws-sdk/nested-clients": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/types": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", - "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.901.0.tgz", + "integrity": "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/util-arn-parser": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.465.0.tgz", - "integrity": "sha512-zOJ82vzDJFqBX9yZBlNeHHrul/kpx/DCoxzW5UBbZeb26kfV53QhMSoEmY8/lEbBqlqargJ/sgRC845GFhHNQw==", + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@aws-sdk/util-endpoints": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz", - "integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.901.0.tgz", + "integrity": "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-endpoints": "^3.2.0", + "tslib": "^2.6.2" } }, "@aws-sdk/util-locate-window": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", - "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", - "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.901.0.tgz", + "integrity": "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg==", "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.901.0", + "@smithy/types": "^4.6.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", - "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", - "requires": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.901.0.tgz", + "integrity": "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw==", "requires": { - "tslib": "^2.3.1" + "@aws-sdk/middleware-user-agent": "3.901.0", + "@aws-sdk/types": "3.901.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@aws-sdk/xml-builder": { - "version": "3.472.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.472.0.tgz", - "integrity": "sha512-PwjVxz1hr9up8QkddabuScPZ/d5aDHgvHYgK4acHYzltXL4wngfvimi5ZqXTzVWF2QANxHmWnHUr45QJX71oJQ==", + "version": "3.901.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.901.0.tgz", + "integrity": "sha512-pxFCkuAP7Q94wMTNPAwi6hEtNrp/BdFf+HOrIEeFQsk4EoOmpKY3I6S+u6A9Wg295J80Kh74LqDWM22ux3z6Aw==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" } }, + "@aws/lambda-invoke-store": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz", + "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==" + }, "@colors/colors": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", @@ -6483,6 +6733,42 @@ "sparse-bitfield": "^3.0.3" } }, + "@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "optional": true + }, "@redis/bloom": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.8.0.tgz", @@ -6525,517 +6811,531 @@ } }, "@smithy/abort-controller": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.15.tgz", - "integrity": "sha512-JkS36PIS3/UCbq/MaozzV7jECeL+BTt4R75bwY8i+4RASys4xOyUS1HsRyUNSqUXFP4QyCz5aNnh3ltuaxv+pw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.0.tgz", + "integrity": "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/chunked-blob-reader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz", - "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/chunked-blob-reader-native": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.1.tgz", - "integrity": "sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.0.tgz", + "integrity": "sha512-HNbGWdyTfSM1nfrZKQjYTvD8k086+M8s1EYkBUdGC++lhxegUp2HgNf5RIt6oOGVvsC26hBCW/11tv8KbwLn/Q==", "requires": { - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/util-base64": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/config-resolver": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.21.tgz", - "integrity": "sha512-rlLIGT+BeqjnA6C2FWumPRJS1UW07iU5ZxDHtFuyam4W65gIaOFMjkB90ofKCIh+0mLVQrQFrl/VLtQT/6FWTA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.3.0.tgz", + "integrity": "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ==", "requires": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.2.1.tgz", - "integrity": "sha512-f6cwmMuHo7RIw/c184NBd2rGeGvGIX6p55HSrG5jfR3qkNYo80PHRfhzkJMq1+mv1ZjI5p8NhenWMMkIRJR4tw==", - "requires": { - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.14.0.tgz", + "integrity": "sha512-XJ4z5FxvY/t0Dibms/+gLJrI5niRoY0BCmE02fwmPcRYFPI4KI876xaE79YGWIKnEslMbuQPsIEsoU/DXa0DoA==", + "requires": { + "@smithy/middleware-serde": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-stream": "^4.4.0", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" } }, "@smithy/credential-provider-imds": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.4.tgz", - "integrity": "sha512-cwPJN1fa1YOQzhBlTXRavABEYRRchci1X79QRwzaNLySnIMJfztyv1Zkst0iZPLMnpn8+CnHu3wOHS11J5Dr3A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.0.tgz", + "integrity": "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big==", "requires": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/property-provider": "^2.0.16", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/eventstream-codec": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.15.tgz", - "integrity": "sha512-crjvz3j1gGPwA0us6cwS7+5gAn35CTmqu/oIxVbYJo2Qm/sGAye6zGJnMDk3BKhWZw5kcU1G4MxciTkuBpOZPg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.0.tgz", + "integrity": "sha512-XE7CtKfyxYiNZ5vz7OvyTf1osrdbJfmUy+rbh+NLQmZumMGvY0mT0Cq1qKSfhrvLtRYzMsOBuRpi10dyI0EBPg==", "requires": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-hex-encoding": "^2.0.0", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.6.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-browser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.15.tgz", - "integrity": "sha512-WiFG5N9j3jmS5P0z5Xev6dO0c3lf7EJYC2Ncb0xDnWFvShwXNn741AF71ABr5EcZw8F4rQma0362MMjAwJeZog==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.0.tgz", + "integrity": "sha512-U53p7fcrk27k8irLhOwUu+UYnBqsXNLKl1XevOpsxK3y1Lndk8R7CSiZV6FN3fYFuTPuJy5pP6qa/bjDzEkRvA==", "requires": { - "@smithy/eventstream-serde-universal": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-config-resolver": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.15.tgz", - "integrity": "sha512-o65d2LRjgCbWYH+VVNlWXtmsI231SO99ZTOL4UuIPa6WTjbSHWtlXvUcJG9libhEKWmEV9DIUiH2IqyPWi7ubA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.0.tgz", + "integrity": "sha512-uwx54t8W2Yo9Jr3nVF5cNnkAAnMCJ8Wrm+wDlQY6rY/IrEgZS3OqagtCu/9ceIcZFQ1zVW/zbN9dxb5esuojfA==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-node": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.15.tgz", - "integrity": "sha512-9OOXiIhHq1VeOG6xdHkn2ZayfMYM3vzdUTV3zhcCnt+tMqA3BJK3XXTJFRR2BV28rtRM778DzqbBTf+hqwQPTg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.0.tgz", + "integrity": "sha512-yjM2L6QGmWgJjVu/IgYd6hMzwm/tf4VFX0lm8/SvGbGBwc+aFl3hOzvO/e9IJ2XI+22Tx1Zg3vRpFRs04SWFcg==", "requires": { - "@smithy/eventstream-serde-universal": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-universal": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.15.tgz", - "integrity": "sha512-dP8AQp/pXlWBjvL0TaPBJC3rM0GoYv7O0Uim8d/7UKZ2Wo13bFI3/BhQfY/1DeiP1m23iCHFNFtOQxfQNBB8rQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.0.tgz", + "integrity": "sha512-C3jxz6GeRzNyGKhU7oV656ZbuHY93mrfkT12rmjDdZch142ykjn8do+VOkeRNjSGKw01p4g+hdalPYPhmMwk1g==", "requires": { - "@smithy/eventstream-codec": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/eventstream-codec": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/fetch-http-handler": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.1.tgz", - "integrity": "sha512-6MNk16fqb8EwcYY8O8WxB3ArFkLZ2XppsSNo1h7SQcFdDDwIumiJeO6wRzm7iB68xvsOQzsdQKbdtTieS3hfSQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.0.tgz", + "integrity": "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw==", "requires": { - "@smithy/protocol-http": "^3.0.11", - "@smithy/querystring-builder": "^2.0.15", - "@smithy/types": "^2.7.0", - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^5.3.0", + "@smithy/querystring-builder": "^4.2.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/hash-blob-browser": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.16.tgz", - "integrity": "sha512-cSYRi05LA7DZDwjB1HL0BP8B56eUNNeLglVH147QTXFyuXJq/7erAIiLRfsyXB8+GfFHkSS5BHbc76a7k/AYPA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.0.tgz", + "integrity": "sha512-MWmrRTPqVKpN8NmxmJPTeQuhewTt8Chf+waB38LXHZoA02+BeWYVQ9ViAwHjug8m7lQb1UWuGqp3JoGDOWvvuA==", "requires": { - "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.1", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/hash-node": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.17.tgz", - "integrity": "sha512-Il6WuBcI1nD+e2DM7tTADMf01wEPGK8PAhz4D+YmDUVaoBqlA+CaH2uDJhiySifmuKBZj748IfygXty81znKhw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.0.tgz", + "integrity": "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA==", "requires": { - "@smithy/types": "^2.7.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/hash-stream-node": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.17.tgz", - "integrity": "sha512-ey8DtnATzp1mOXgS7rqMwSmAki6iJA+jgNucKcxRkhMB1rrICfHg+rhmIF50iLPDHUhTcS5pBMOrLzzpZftvNQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.0.tgz", + "integrity": "sha512-8dELAuGv+UEjtzrpMeNBZc1sJhO8GxFVV/Yh21wE35oX4lOE697+lsMHBoUIFAUuYkTMIeu0EuJSEsH7/8Y+UQ==", "requires": { - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/invalid-dependency": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.15.tgz", - "integrity": "sha512-dlEKBFFwVfzA5QroHlBS94NpgYjXhwN/bFfun+7w3rgxNvVy79SK0w05iGc7UAeC5t+D7gBxrzdnD6hreZnDVQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.0.tgz", + "integrity": "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/is-array-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", - "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/md5-js": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.17.tgz", - "integrity": "sha512-jmISTCnEkOnm2oCNx/rMkvBT/eQh3aA6nktevkzbmn/VYqYEuc5Z2n5sTTqsciMSO01Lvf56wG1A4twDqovYeQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.0.tgz", + "integrity": "sha512-LFEPniXGKRQArFmDQ3MgArXlClFJMsXDteuQQY8WG1/zzv6gVSo96+qpkuu1oJp4MZsKrwchY0cuAoPKzEbaNA==", "requires": { - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/middleware-content-length": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.17.tgz", - "integrity": "sha512-OyadvMcKC7lFXTNBa8/foEv7jOaqshQZkjWS9coEXPRZnNnihU/Ls+8ZuJwGNCOrN2WxXZFmDWhegbnM4vak8w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.0.tgz", + "integrity": "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ==", "requires": { - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/middleware-endpoint": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.3.tgz", - "integrity": "sha512-nYfxuq0S/xoAjdLbyn1ixeVB6cyH9wYCMtbbOCpcCRYR5u2mMtqUtVjjPAZ/DIdlK3qe0tpB0Q76szFGNuz+kQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.0.tgz", + "integrity": "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw==", "requires": { - "@smithy/middleware-serde": "^2.0.15", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/shared-ini-file-loader": "^2.2.7", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@smithy/core": "^3.14.0", + "@smithy/middleware-serde": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/url-parser": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/middleware-retry": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.25.tgz", - "integrity": "sha512-FXhafCPvx/9L9OgHJ3cdo/pD1f7ngC7DKsjDV2J7k6LO/Yl69POoBLk4sI1OZPUGc4dfxriENlTma9Nj1hI+IQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.0.tgz", + "integrity": "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg==", "requires": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/service-error-classification": "^2.0.8", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/service-error-classification": "^4.2.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-retry": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" } }, "@smithy/middleware-serde": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.15.tgz", - "integrity": "sha512-FOZRFk/zN4AT4wzGuBY+39XWe+ZnCFd0gZtyw3f9Okn2CJPixl9GyWe98TIaljeZdqWkgrzGyPre20AcW2UMHQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.0.tgz", + "integrity": "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/middleware-stack": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.9.tgz", - "integrity": "sha512-bCB5dUtGQ5wh7QNL2ELxmDc6g7ih7jWU3Kx6MYH1h4mZbv9xL3WyhKHojRltThCB1arLPyTUFDi+x6fB/oabtA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.0.tgz", + "integrity": "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/node-config-provider": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.8.tgz", - "integrity": "sha512-+w26OKakaBUGp+UG+dxYZtFb5fs3tgHg3/QrRrmUZj+rl3cIuw840vFUXX35cVPTUCQIiTqmz7CpVF7+hdINdQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.0.tgz", + "integrity": "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA==", "requires": { - "@smithy/property-provider": "^2.0.16", - "@smithy/shared-ini-file-loader": "^2.2.7", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/property-provider": "^4.2.0", + "@smithy/shared-ini-file-loader": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/node-http-handler": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.2.1.tgz", - "integrity": "sha512-8iAKQrC8+VFHPAT8pg4/j6hlsTQh+NKOWlctJBrYtQa4ExcxX7aSg3vdQ2XLoYwJotFUurg/NLqFCmZaPRrogw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.3.0.tgz", + "integrity": "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q==", "requires": { - "@smithy/abort-controller": "^2.0.15", - "@smithy/protocol-http": "^3.0.11", - "@smithy/querystring-builder": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/querystring-builder": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/property-provider": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.16.tgz", - "integrity": "sha512-28Ky0LlOqtEjwg5CdHmwwaDRHcTWfPRzkT6HrhwOSRS2RryAvuDfJrZpM+BMcrdeCyEg1mbcgIMoqTla+rdL8Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.0.tgz", + "integrity": "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/protocol-http": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.11.tgz", - "integrity": "sha512-3ziB8fHuXIRamV/akp/sqiWmNPR6X+9SB8Xxnozzj+Nq7hSpyKdFHd1FLpBkgfGFUTzzcBJQlDZPSyxzmdcx5A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.0.tgz", + "integrity": "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/querystring-builder": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.15.tgz", - "integrity": "sha512-e1q85aT6HutvouOdN+dMsN0jcdshp50PSCvxDvo6aIM57LqeXimjfONUEgfqQ4IFpYWAtVixptyIRE5frMp/2A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.0.tgz", + "integrity": "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A==", "requires": { - "@smithy/types": "^2.7.0", - "@smithy/util-uri-escape": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/querystring-parser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.15.tgz", - "integrity": "sha512-jbBvoK3cc81Cj1c1TH1qMYxNQKHrYQ2DoTntN9FBbtUWcGhc+T4FP6kCKYwRLXyU4AajwGIZstvNAmIEgUUNTQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.0.tgz", + "integrity": "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/service-error-classification": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.8.tgz", - "integrity": "sha512-jCw9+005im8tsfYvwwSc4TTvd29kXRFkH9peQBg5R/4DD03ieGm6v6Hpv9nIAh98GwgYg1KrztcINC1s4o7/hg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.0.tgz", + "integrity": "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA==", "requires": { - "@smithy/types": "^2.7.0" + "@smithy/types": "^4.6.0" } }, "@smithy/shared-ini-file-loader": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.7.tgz", - "integrity": "sha512-0Qt5CuiogIuvQIfK+be7oVHcPsayLgfLJGkPlbgdbl0lD28nUKu4p11L+UG3SAEsqc9UsazO+nErPXw7+IgDpQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.0.tgz", + "integrity": "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/signature-v4": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.18.tgz", - "integrity": "sha512-SJRAj9jT/l9ocm8D0GojMbnA1sp7I4JeStOQ4lEXI8A5eHE73vbjlzlqIFB7cLvIgau0oUl4cGVpF9IGCrvjlw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.0.tgz", + "integrity": "sha512-MKNyhXEs99xAZaFhm88h+3/V+tCRDQ+PrDzRqL0xdDpq4gjxcMmf5rBA3YXgqZqMZ/XwemZEurCBQMfxZOWq/g==", "requires": { - "@smithy/eventstream-codec": "^2.0.15", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.0", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/smithy-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.2.0.tgz", - "integrity": "sha512-C/bkNue5H5Obgl83SnlBt4v6VM68CqIjIELh3vAabud87xFYznLNKtj6Qb69Z+QOnLp9T+We++sEem/f2AHE+Q==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.7.0.tgz", + "integrity": "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ==", "requires": { - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-stream": "^2.0.23", - "tslib": "^2.5.0" + "@smithy/core": "^3.14.0", + "@smithy/middleware-endpoint": "^4.3.0", + "@smithy/middleware-stack": "^4.2.0", + "@smithy/protocol-http": "^5.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-stream": "^4.4.0", + "tslib": "^2.6.2" } }, "@smithy/types": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", - "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", + "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/url-parser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.15.tgz", - "integrity": "sha512-sADUncUj9rNbOTrdDGm4EXlUs0eQ9dyEo+V74PJoULY4jSQxS+9gwEgsPYyiu8PUOv16JC/MpHonOgqP/IEDZA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.0.tgz", + "integrity": "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A==", "requires": { - "@smithy/querystring-parser": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/querystring-parser": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/util-base64": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", - "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.2.0.tgz", + "integrity": "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA==", "requires": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/util-body-length-browser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.1.tgz", - "integrity": "sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/util-body-length-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", - "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.0.tgz", + "integrity": "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/util-buffer-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", - "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "requires": { - "@smithy/is-array-buffer": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/util-config-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", - "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/util-defaults-mode-browser": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.23.tgz", - "integrity": "sha512-2u+7t7Wgz1jlfsf6il3pz6DIzyJHS3qrnNnmATICm00pQeqp2D4kUOYauOgKGIeKgVpwzzq8+hFQe749r3xR5w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.2.0.tgz", + "integrity": "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ==", "requires": { - "@smithy/property-provider": "^2.0.16", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/util-defaults-mode-node": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.30.tgz", - "integrity": "sha512-nmcmEyRlClNprp7mBnUzfmW6HrKQK+yvl+cyXCRUoQSxRvZuLDrztV+JD+zr3qV/oirEc4Q0QNIrrhTDCE6JeA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.0.tgz", + "integrity": "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg==", "requires": { - "@smithy/config-resolver": "^2.0.21", - "@smithy/credential-provider-imds": "^2.1.4", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/property-provider": "^2.0.16", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/config-resolver": "^4.3.0", + "@smithy/credential-provider-imds": "^4.2.0", + "@smithy/node-config-provider": "^4.3.0", + "@smithy/property-provider": "^4.2.0", + "@smithy/smithy-client": "^4.7.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/util-endpoints": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.7.tgz", - "integrity": "sha512-Q2gEind3jxoLk6hdKWyESMU7LnXz8aamVwM+VeVjOYzYT1PalGlY/ETa48hv2YpV4+YV604y93YngyzzzQ4IIA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.0.tgz", + "integrity": "sha512-TXeCn22D56vvWr/5xPqALc9oO+LN+QpFjrSM7peG/ckqEPoI3zaKZFp+bFwfmiHhn5MGWPaLCqDOJPPIixk9Wg==", "requires": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^4.3.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/util-hex-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", - "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/util-middleware": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.8.tgz", - "integrity": "sha512-qkvqQjM8fRGGA8P2ydWylMhenCDP8VlkPn8kiNuFEaFz9xnUKC2irfqsBSJrfrOB9Qt6pQsI58r3zvvumhFMkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.0.tgz", + "integrity": "sha512-u9OOfDa43MjagtJZ8AapJcmimP+K2Z7szXn8xbty4aza+7P1wjFmy2ewjSbhEiYQoW1unTlOAIV165weYAaowA==", "requires": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/util-retry": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.8.tgz", - "integrity": "sha512-cQTPnVaVFMjjS6cb44WV2yXtHVyXDC5icKyIbejMarJEApYeJWpBU3LINTxHqp/tyLI+MZOUdosr2mZ3sdziNg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.0.tgz", + "integrity": "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg==", "requires": { - "@smithy/service-error-classification": "^2.0.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/service-error-classification": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" } }, "@smithy/util-stream": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.23.tgz", - "integrity": "sha512-OJMWq99LAZJUzUwTk+00plyxX3ESktBaGPhqNIEVab+53gLULiWN9B/8bRABLg0K6R6Xg4t80uRdhk3B/LZqMQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.4.0.tgz", + "integrity": "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg==", "requires": { - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/types": "^2.7.0", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/fetch-http-handler": "^5.3.0", + "@smithy/node-http-handler": "^4.3.0", + "@smithy/types": "^4.6.0", + "@smithy/util-base64": "^4.2.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/util-uri-escape": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", - "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "requires": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "@smithy/util-utf8": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", - "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "requires": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" } }, "@smithy/util-waiter": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.15.tgz", - "integrity": "sha512-9Y+btzzB7MhLADW7xgD6SjvmoYaRkrb/9SCbNGmNdfO47v38rxb90IGXyDtAK0Shl9bMthTmLgjlfYc+vtz2Qw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.0.tgz", + "integrity": "sha512-0Z+nxUU4/4T+SL8BCNN4ztKdQjToNvUYmkF1kXO5T7Yz3Gafzh0HeIG6mrkN8Fz3gn9hSyxuAT+6h4vM+iQSBQ==", "requires": { - "@smithy/abort-controller": "^2.0.15", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^4.2.0", + "@smithy/types": "^4.6.0", + "tslib": "^2.6.2" + } + }, + "@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "requires": { + "tslib": "^2.6.2" } }, "@types/triple-beam": { @@ -7181,9 +7481,9 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==" }, "brace-expansion": { "version": "1.1.11", @@ -7733,11 +8033,11 @@ } }, "fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "requires": { - "strnum": "^1.0.5" + "strnum": "^2.1.0" } }, "fecha": { @@ -8264,6 +8564,29 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "requires": { + "msgpackr-extract": "^3.0.2" + } + }, + "msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "optional": true, + "requires": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3", + "node-gyp-build-optional-packages": "5.2.2" + } + }, "multer": { "version": "1.4.5-lts.1", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", @@ -8316,6 +8639,15 @@ "formdata-polyfill": "^4.0.10" } }, + "node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "optional": true, + "requires": { + "detect-libc": "^2.0.1" + } + }, "node-html-parser": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.11.tgz", @@ -9014,9 +9346,9 @@ } }, "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==" }, "systeminformation": { "version": "5.25.11", diff --git a/node/package.json b/node/package.json index bc7bf04d0..f5c15864e 100644 --- a/node/package.json +++ b/node/package.json @@ -2,7 +2,7 @@ "name": "@joystick.js/node", "type": "module", "version": "1.0.0-rc.3", - "canary_version": "0.0.0-canary.2276", + "canary_version": "0.0.0-canary.2289", "description": "The Node.js framework for Joystick.", "main": "./dist/index.js", "scripts": { @@ -15,7 +15,7 @@ "license": "SAUCR", "dependencies": { "@aws-sdk/client-s3": "^3.478.0", - "@aws-sdk/lib-storage": "^3.478.0", + "@aws-sdk/lib-storage": "^3.903.0", "bcrypt": "^5.1.1", "chalk": "^5.3.0", "compression": "^1.7.4", diff --git a/node/src/app/index.js b/node/src/app/index.js index d3e3a2cd7..c0a8d430c 100644 --- a/node/src/app/index.js +++ b/node/src/app/index.js @@ -77,7 +77,8 @@ class App { } async connect_databases() { - const databases_from_settings = app_settings?.config?.databases; + // Check both app_settings and passed options for database config + const databases_from_settings = app_settings?.config?.databases || this.options?.config?.databases; for (let i = 0; i < databases_from_settings?.length; i += 1) { const database_from_settings = databases_from_settings[i]; @@ -259,6 +260,43 @@ class App { await scan_directory(directory_path); } } + + // NOTE: Load JoystickDB GUI components using proper path resolution + try { + const resolve_component_path_module = await dynamic_import('../lib/joystickdb_gui/utils/resolve_component_path.js'); + const resolve_component_path = resolve_component_path_module.default || resolve_component_path_module; + + // NOTE: Load the main layout and all page components + const joystickdb_components = [ + 'ui/layouts/main.js', + 'ui/pages/login.js', + 'ui/pages/dashboard.js', + 'ui/pages/databases.js', + 'ui/pages/collections.js', + 'ui/pages/documents.js', + 'ui/pages/query.js', + 'ui/pages/admin/index.js', + 'ui/pages/admin/users.js', + 'ui/pages/admin/replication.js', + 'ui/pages/admin/stats.js' + ]; + + for (const component_path of joystickdb_components) { + try { + const resolved_path = resolve_component_path(component_path); + const component = await dynamic_import(resolved_path); + + // NOTE: Store component with the resolved path as the key for res.render() compatibility + process._joystick_components[resolved_path] = component; + + } catch (error) { + console.warn(`Failed to load JoystickDB component: ${component_path}`, error.message); + } + } + + } catch (error) { + console.warn('Failed to load JoystickDB component resolver:', error.message); + } } on_after_start_server(express = {}) { @@ -545,6 +583,77 @@ class App { register_websockets(this.options.websockets, this); } + async register_joystickdb_gui() { + // NOTE: Automatically register JoystickDB GUI if JoystickDB is detected in databases + const database_keys = process.databases ? Object.keys(process.databases) : []; + const has_joystickdb = database_keys.some(key => + key === 'joystickdb' || key.startsWith('joystickdb_') + ); + + console.log('JoystickDB GUI Detection:', { + database_keys, + has_joystickdb, + process_databases_exists: !!process.databases + }); + + if (has_joystickdb) { + try { + console.log('Attempting to load JoystickDB GUI...'); + const joystickdb_gui_module = await dynamic_import('../lib/joystickdb_gui/index.js'); + const joystickdb_gui = joystickdb_gui_module.default || joystickdb_gui_module; + + console.log('JoystickDB GUI module loaded:', { + has_routes: !!joystickdb_gui.routes, + has_api: !!joystickdb_gui.api, + routes_count: Object.keys(joystickdb_gui.routes || {}).length, + api_structure: joystickdb_gui.api ? Object.keys(joystickdb_gui.api) : [] + }); + + // Register JoystickDB routes + const joystickdb_routes = Object.entries(joystickdb_gui.routes || {}); + for (let i = 0; i < joystickdb_routes?.length; i += 1) { + const [route_path, route_handler] = joystickdb_routes[i]; + const is_object_route = types.is_object(route_handler); + const is_function_route = types.is_function(route_handler); + + console.log(`Registering route: ${route_path} (${is_function_route ? 'function' : is_object_route ? 'object' : 'unknown'})`); + + if (is_function_route) { + register_route_from_function(this.express.app, route_path, route_handler); + } + + if (is_object_route) { + register_route_from_object(this.express.app, route_path, route_handler); + } + } + + // Register JoystickDB API endpoints + const joystickdb_getters = joystickdb_gui.api?.getters || {}; + const joystickdb_setters = joystickdb_gui.api?.setters || {}; + + console.log('Registering API endpoints:', { + getters_count: Object.keys(joystickdb_getters).length, + setters_count: Object.keys(joystickdb_setters).length + }); + + if (Object.keys(joystickdb_getters).length > 0) { + register_getters(this.express.app, Object.entries(joystickdb_getters), this?.options?.api?.context, this?.options?.api?.options); + } + + if (Object.keys(joystickdb_setters).length > 0) { + register_setters(this.express.app, Object.entries(joystickdb_setters), this?.options?.api?.context, this?.options?.api?.options); + } + + console.log('JoystickDB GUI registered successfully at /joystickdb'); + } catch (error) { + console.error('Failed to register JoystickDB GUI:', error); + console.error('Error stack:', error.stack); + } + } else { + console.log('JoystickDB not detected in databases, skipping GUI registration'); + } + } + async start() { // NOTE: Always run this first so we can cache translations in memory. await this.load_translations(); @@ -566,6 +675,7 @@ class App { this.register_push(); this.register_accounts(); this.register_api(); + await this.register_joystickdb_gui(); this.register_routes(); this.register_dynamic_pages(); this.register_uploaders(); diff --git a/node/src/app/middleware/render/index.js b/node/src/app/middleware/render/index.js index 9201fd6b1..712ff01e6 100644 --- a/node/src/app/middleware/render/index.js +++ b/node/src/app/middleware/render/index.js @@ -14,12 +14,15 @@ const render_middleware = (req, res, next, app_instance = {}) => { // NOTE: Set res.render here so we have access to req, res, and // app_instance objects inside of the definition. res.render = async (render_component_path = '', render_options = {}) => { - // NOTE: Safety mechanism. Don't punish a developer if the path they pass to res.render() - // has a forward slash prepended, just strip it for them. - const sanitized_render_component_path = strip_preceeding_slash(render_component_path); - const sanitized_render_layout_path = strip_preceeding_slash(render_options?.layout); + // NOTE: Don't strip leading slash from absolute paths (needed for production installs) + const is_absolute_path = render_component_path.startsWith('/'); + const sanitized_render_component_path = is_absolute_path ? render_component_path : strip_preceeding_slash(render_component_path); + const sanitized_render_layout_path = render_options?.layout ? + (render_options.layout.startsWith('/') ? render_options.layout : strip_preceeding_slash(render_options.layout)) + : null; + const component_path = sanitized_render_component_path; - const layout_path = render_options?.layout ? sanitized_render_layout_path : null; + const layout_path = sanitized_render_layout_path; if (!process._joystick_components[component_path]) { return res.status(404).send( diff --git a/node/src/lib/joystickdb_gui/api/getters.js b/node/src/lib/joystickdb_gui/api/getters.js new file mode 100644 index 000000000..59bbbca1b --- /dev/null +++ b/node/src/lib/joystickdb_gui/api/getters.js @@ -0,0 +1,183 @@ +import JoystickDBGUIClient from '../client/joystickdb_client.js'; + +const getters = { + joystickdb_stats: { + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + return await client.get_stats(); + }, + }, + joystickdb_databases: { + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + return await client.list_databases(); + }, + }, + joystickdb_collections: { + input: { + database: { + type: 'string', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + return await db.list_collections(); + }, + }, + joystickdb_documents: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + limit: { + type: 'integer', + required: false, + max: 1000, + }, + skip: { + type: 'integer', + required: false, + }, + filter: { + type: 'object', + required: false, + }, + sort: { + type: 'object', + required: false, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + const options = { + limit: input.limit || 20, + }; + if (input.skip) options.skip = input.skip; + if (input.sort) options.sort = input.sort; + const filter = input.filter || {}; + const documents = await collection.find(filter, options); + const total = await collection.count_documents(filter); + return { + documents, + total, + }; + }, + }, + joystickdb_indexes: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + return await collection.get_indexes(); + }, + }, + joystickdb_replication_status: { + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + try { + return await client.admin_operation({ + operation: 'get_sync_status', + }); + } catch (error) { + return { error: error.message }; + } + }, + }, + joystickdb_document_by_id: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + document_id: { + type: 'string', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const document = await db.get_document(input.collection, input.document_id); + return document; + }, + }, + joystickdb_backup_list: { + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + get: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + return await client.list_backups(); + }, + }, +}; + +export default getters; diff --git a/node/src/lib/joystickdb_gui/api/index.js b/node/src/lib/joystickdb_gui/api/index.js new file mode 100644 index 000000000..2ce341467 --- /dev/null +++ b/node/src/lib/joystickdb_gui/api/index.js @@ -0,0 +1,13 @@ +import joystickdb_getters from './getters.js'; +import joystickdb_setters from './setters.js'; + +const joystickdb_api = { + getters: { + ...joystickdb_getters, + }, + setters: { + ...joystickdb_setters, + }, +}; + +export default joystickdb_api; diff --git a/node/src/lib/joystickdb_gui/api/setters.js b/node/src/lib/joystickdb_gui/api/setters.js new file mode 100644 index 000000000..01e12547d --- /dev/null +++ b/node/src/lib/joystickdb_gui/api/setters.js @@ -0,0 +1,226 @@ +import JoystickDBGUIClient from '../client/joystickdb_client.js'; + +const setters = { + joystickdb_authenticate: { + input: { + username: { + type: 'string', + required: true, + }, + password: { + type: 'string', + required: true, + }, + }, + set: async (input = {}, context = {}) => { + try { + const gui_client = new JoystickDBGUIClient({ + username: input.username, + password: input.password, + }); + const client = await gui_client.connect(); + context.req.session.joystickdb_user = { + username: input.username, + }; + context.req.session.joystickdb_client = client; + return { success: true, username: input.username }; + } catch (error) { + throw new Error(`Authentication failed: ${error.message}`); + } + }, + }, + joystickdb_create_document: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + document: { + type: 'object', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + return await collection.insert_one(input.document); + }, + }, + joystickdb_update_document: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + filter: { + type: 'object', + required: true, + }, + update: { + type: 'object', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + return await collection.update_one(input.filter, input.update); + }, + }, + joystickdb_delete_document: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + filter: { + type: 'object', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + return await collection.delete_one(input.filter); + }, + }, + joystickdb_create_index: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + field: { + type: 'string', + required: true, + }, + options: { + type: 'object', + required: false, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + return await collection.create_index(input.field, input.options || {}); + }, + }, + joystickdb_drop_index: { + input: { + database: { + type: 'string', + required: true, + }, + collection: { + type: 'string', + required: true, + }, + field: { + type: 'string', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + const db = client.db(input.database); + const collection = db.collection(input.collection); + return await collection.drop_index(input.field); + }, + }, + joystickdb_force_sync: { + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + return await client.admin_operation({ + operation: 'force_sync', + }); + }, + }, + joystickdb_create_backup: { + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + return await client.backup_now(); + }, + }, + joystickdb_restore_backup: { + input: { + backup_name: { + type: 'string', + required: true, + }, + }, + authorized: (input = {}, context = {}) => { + return !!context?.req?.session?.joystickdb_user; + }, + set: async (input = {}, context = {}) => { + const client = context?.req?.session?.joystickdb_client; + if (!client) { + throw new Error('No JoystickDB connection available'); + } + return await client.restore_backup(input.backup_name); + }, + }, +}; + +export default setters; diff --git a/node/src/lib/joystickdb_gui/client/joystickdb_client.js b/node/src/lib/joystickdb_gui/client/joystickdb_client.js new file mode 100644 index 000000000..e6459d352 --- /dev/null +++ b/node/src/lib/joystickdb_gui/client/joystickdb_client.js @@ -0,0 +1,45 @@ +import joystickdb from '../../../lib/joystickdb/index.js'; + +class JoystickDBGUIClient { + constructor(session_credentials) { + this.credentials = session_credentials; + this.client = null; + } + + async connect() { + if (this.client) { + return this.client; + } + try { + this.client = joystickdb.client({ + port: 1983, + authentication: this.credentials, + timeout: 5000, + }); + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + reject(new Error('Connection timeout')); + }, 5000); + this.client.on('authenticated', () => { + clearTimeout(timeout); + resolve(this.client); + }); + this.client.on('error', (error) => { + clearTimeout(timeout); + reject(error); + }); + }); + } catch (error) { + throw new Error(`Failed to connect to JoystickDB: ${error.message}`); + } + } + + async disconnect() { + if (this.client) { + this.client.disconnect(); + this.client = null; + } + } +} + +export default JoystickDBGUIClient; diff --git a/node/src/lib/joystickdb_gui/index.js b/node/src/lib/joystickdb_gui/index.js new file mode 100644 index 000000000..3c35ae39e --- /dev/null +++ b/node/src/lib/joystickdb_gui/index.js @@ -0,0 +1,9 @@ +import joystickdb_routes from './routes/index.js'; +import joystickdb_api from './api/index.js'; + +const joystickdb_gui = { + routes: joystickdb_routes, + api: joystickdb_api, +}; + +export default joystickdb_gui; diff --git a/node/src/lib/joystickdb_gui/middleware/auth.js b/node/src/lib/joystickdb_gui/middleware/auth.js new file mode 100644 index 000000000..08f9715f4 --- /dev/null +++ b/node/src/lib/joystickdb_gui/middleware/auth.js @@ -0,0 +1,10 @@ +const joystickdb_auth_middleware = (req = {}, res = {}, next = {}) => { + if (!req.session?.joystickdb_user || !req.session?.joystickdb_client) { + return res.redirect('/joystickdb/login?error=authentication_required'); + } + req.joystickdb_client = req.session.joystickdb_client; + req.joystickdb_user = req.session.joystickdb_user; + next(); +}; + +export default joystickdb_auth_middleware; diff --git a/node/src/lib/joystickdb_gui/routes/index.js b/node/src/lib/joystickdb_gui/routes/index.js new file mode 100644 index 000000000..3504565ca --- /dev/null +++ b/node/src/lib/joystickdb_gui/routes/index.js @@ -0,0 +1,127 @@ +import joystickdb_auth_middleware from '../middleware/auth.js'; +import resolve_component_path from '../utils/resolve_component_path.js'; + +const joystickdb_routes = { + '/joystickdb': (req = {}, res = {}) => { + if (req.session?.joystickdb_user) { + return res.redirect('/joystickdb/dashboard'); + } + return res.redirect('/joystickdb/login'); + }, + '/joystickdb/login': (req = {}, res = {}) => { + if (req.session?.joystickdb_user) { + return res.redirect('/joystickdb/dashboard'); + } + res.render(resolve_component_path('ui/pages/login.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + props: { + error: req.query.error, + }, + }); + }, + '/joystickdb/logout': { + method: 'POST', + handler: (req = {}, res = {}) => { + req.session.joystickdb_user = null; + req.session.joystickdb_client = null; + res.redirect('/joystickdb/login'); + }, + }, + '/joystickdb/dashboard': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/dashboard.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + props: { + user: req.session.joystickdb_user, + }, + }); + }, + }, + '/joystickdb/databases': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/databases.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + }); + }, + }, + '/joystickdb/databases/:database': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/collections.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + props: { + database: req.params.database, + }, + }); + }, + }, + '/joystickdb/databases/:database/:collection': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/documents.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + props: { + database: req.params.database, + collection: req.params.collection, + }, + }); + }, + }, + '/joystickdb/query/:database/:collection': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/query.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + props: { + database: req.params.database, + collection: req.params.collection, + }, + }); + }, + }, + '/joystickdb/admin': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/admin/index.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + }); + }, + }, + '/joystickdb/admin/users': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/admin/users.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + }); + }, + }, + '/joystickdb/admin/replication': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/admin/replication.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + }); + }, + }, + '/joystickdb/admin/stats': { + method: 'GET', + middleware: [joystickdb_auth_middleware], + handler: (req = {}, res = {}) => { + res.render(resolve_component_path('ui/pages/admin/stats.js'), { + layout: resolve_component_path('ui/layouts/main.js'), + }); + }, + }, +}; + +export default joystickdb_routes; diff --git a/node/src/lib/joystickdb_gui/ui/layouts/main.js b/node/src/lib/joystickdb_gui/ui/layouts/main.js new file mode 100644 index 000000000..aaaee0edc --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/layouts/main.js @@ -0,0 +1,340 @@ +import joystick from '@joystick.js/ui'; + +const JoystickDBLayout = joystick.component({ + css: ` + :root { + --jdb-brand: #6366f1; + --jdb-success: #10b981; + --jdb-warning: #f59e0b; + --jdb-danger: #ef4444; + --jdb-info: #3b82f6; + --jdb-neutral-1: #ffffff; + --jdb-neutral-2: #f8fafc; + --jdb-neutral-3: #e2e8f0; + --jdb-neutral-4: #cbd5e1; + --jdb-neutral-5: #94a3b8; + --jdb-neutral-6: #64748b; + --jdb-neutral-7: #475569; + --jdb-neutral-8: #334155; + --jdb-neutral-9: #1e293b; + --jdb-border-radius: 6px; + --jdb-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --jdb-font-size-sm: 14px; + --jdb-font-size-base: 16px; + --jdb-font-size-lg: 18px; + --jdb-spacing-xs: 4px; + --jdb-spacing-sm: 8px; + --jdb-spacing-md: 16px; + --jdb-spacing-lg: 24px; + --jdb-spacing-xl: 32px; + } + .joystickdb-root { + font-family: var(--jdb-font-family); + color: var(--jdb-neutral-8); + margin: 0; + padding: 0; + } + .jdb-dashboard { + display: flex; + min-height: 100vh; + background: var(--jdb-neutral-2); + } + .jdb-sidebar { + width: 280px; + background: var(--jdb-neutral-1); + border-right: 1px solid var(--jdb-neutral-3); + display: flex; + flex-direction: column; + } + .jdb-sidebar-header { + padding: var(--jdb-spacing-lg); + border-bottom: 1px solid var(--jdb-neutral-3); + } + .jdb-sidebar-header h2 { + margin: 0 0 var(--jdb-spacing-xs) 0; + color: var(--jdb-brand); + font-size: 1.5rem; + font-weight: 700; + } + .jdb-sidebar-header p { + margin: 0; + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-sm); + } + .jdb-sidebar-nav { + flex: 1; + padding: var(--jdb-spacing-md); + overflow-y: auto; + } + .jdb-nav-section { + margin-bottom: var(--jdb-spacing-lg); + } + .jdb-nav-section h5 { + margin: 0 0 var(--jdb-spacing-sm) 0; + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-sm); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + } + .jdb-nav-list { + list-style: none; + margin: 0; + padding: 0; + } + .jdb-nav-list li { + margin-bottom: var(--jdb-spacing-xs); + } + .jdb-nav-link { + display: flex; + align-items: center; + gap: var(--jdb-spacing-sm); + padding: var(--jdb-spacing-sm) var(--jdb-spacing-md); + color: var(--jdb-neutral-7); + text-decoration: none; + border-radius: var(--jdb-border-radius); + transition: all 0.2s ease; + } + .jdb-nav-link:hover { + background: var(--jdb-neutral-2); + color: var(--jdb-neutral-8); + } + .jdb-nav-list li.active .jdb-nav-link { + background: var(--jdb-brand); + color: var(--jdb-neutral-1); + } + .jdb-sidebar-footer { + padding: var(--jdb-spacing-md); + border-top: 1px solid var(--jdb-neutral-3); + } + .jdb-user-info { + display: flex; + align-items: center; + gap: var(--jdb-spacing-sm); + } + .jdb-user-avatar { + width: 32px; + height: 32px; + background: var(--jdb-brand); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: 14px; + } + .jdb-user-details { + flex: 1; + } + .jdb-user-details strong { + display: block; + color: var(--jdb-neutral-8); + font-size: var(--jdb-font-size-sm); + } + .jdb-user-details small { + color: var(--jdb-neutral-6); + font-size: 12px; + } + .jdb-btn-sm { + padding: var(--jdb-spacing-xs) var(--jdb-spacing-sm); + font-size: var(--jdb-font-size-sm); + background: var(--jdb-neutral-1); + border: 1px solid var(--jdb-neutral-4); + border-radius: var(--jdb-border-radius); + color: var(--jdb-neutral-8); + cursor: pointer; + text-decoration: none; + transition: all 0.2s; + } + .jdb-btn-sm:hover { + background: var(--jdb-neutral-2); + border-color: var(--jdb-neutral-5); + } + .jdb-main { + flex: 1; + display: flex; + flex-direction: column; + } + .jdb-header { + background: var(--jdb-neutral-1); + border-bottom: 1px solid var(--jdb-neutral-3); + padding: var(--jdb-spacing-md) var(--jdb-spacing-lg); + display: flex; + justify-content: space-between; + align-items: center; + } + .jdb-breadcrumbs { + display: flex; + align-items: center; + gap: var(--jdb-spacing-sm); + } + .jdb-breadcrumb { + color: var(--jdb-neutral-6); + text-decoration: none; + font-size: var(--jdb-font-size-sm); + } + .jdb-breadcrumb:hover { + color: var(--jdb-brand); + } + .jdb-breadcrumb-separator { + color: var(--jdb-neutral-5); + } + .jdb-content { + flex: 1; + padding: var(--jdb-spacing-lg); + overflow-y: auto; + } + .jdb-btn { + display: inline-flex; + align-items: center; + gap: var(--jdb-spacing-xs); + padding: var(--jdb-spacing-sm) var(--jdb-spacing-md); + border: 1px solid var(--jdb-neutral-4); + border-radius: var(--jdb-border-radius); + background: var(--jdb-neutral-1); + color: var(--jdb-neutral-8); + text-decoration: none; + cursor: pointer; + font-size: var(--jdb-font-size-base); + transition: all 0.2s; + } + .jdb-btn:hover { + border-color: var(--jdb-neutral-5); + background: var(--jdb-neutral-2); + } + .jdb-btn-primary { + background: var(--jdb-brand); + color: white; + border-color: var(--jdb-brand); + } + .jdb-btn-primary:hover { + background: #5855ec; + border-color: #5855ec; + } + .jdb-btn-success { + background: var(--jdb-success); + color: white; + border-color: var(--jdb-success); + } + .jdb-btn-success:hover { + background: #047857; + border-color: #047857; + } + .jdb-btn-danger { + background: var(--jdb-danger); + color: white; + border-color: var(--jdb-danger); + } + .jdb-btn-danger:hover { + background: #dc2626; + border-color: #dc2626; + } + .jdb-input { + padding: var(--jdb-spacing-sm); + border: 1px solid var(--jdb-neutral-4); + border-radius: var(--jdb-border-radius); + font-size: var(--jdb-font-size-base); + width: 100%; + } + .jdb-input:focus { + outline: none; + border-color: var(--jdb-brand); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); + } + .jdb-table { + width: 100%; + border-collapse: collapse; + background: white; + border-radius: var(--jdb-border-radius); + overflow: hidden; + } + .jdb-table th, + .jdb-table td { + padding: var(--jdb-spacing-md); + text-align: left; + border-bottom: 1px solid var(--jdb-neutral-3); + } + .jdb-table th { + background: var(--jdb-neutral-2); + font-weight: 600; + } + .jdb-card { + background: white; + border-radius: var(--jdb-border-radius); + border: 1px solid var(--jdb-neutral-3); + overflow: hidden; + } + .jdb-card-header { + padding: var(--jdb-spacing-lg); + border-bottom: 1px solid var(--jdb-neutral-3); + display: flex; + justify-content: space-between; + align-items: center; + } + .jdb-card-content { + padding: var(--jdb-spacing-lg); + } + `, + render: ({ component, props, url }) => { + return ` +
+ +
+
+
+ Dashboard + ${url.path !== '/joystickdb/dashboard' ? '/' : ''} +
+
+ +
+
+
+ ${component(props.page, props)} +
+
+
+ `; + }, +}); + +export default JoystickDBLayout; diff --git a/node/src/lib/joystickdb_gui/ui/pages/admin/index.js b/node/src/lib/joystickdb_gui/ui/pages/admin/index.js new file mode 100644 index 000000000..30d989647 --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/admin/index.js @@ -0,0 +1,48 @@ +import joystick from '@joystick.js/ui'; + +const AdminDashboard = joystick.component({ + data: async (api = {}) => { + return { + stats: await api.get('joystickdb_get_stats'), + }; + }, + events: { + 'click a': (event = {}, instance = {}) => { + const link = event.target.getAttribute('href'); + if (link) { + window.location.href = link; + } + }, + }, + render: ({ data }) => { + console.log('Admin dashboard data:', data); + + return ` +
+

JoystickDB Administration

+

Manage your JoystickDB instance settings and monitor performance.

+ +
+

Statistics

+
    +
  • Databases: ${data?.stats?.total_databases || 0}
  • +
  • Collections: ${data?.stats?.total_collections || 0}
  • +
  • Documents: ${data?.stats?.total_documents || 0}
  • +
  • Storage Used: ${data?.stats?.storage_size || '0 B'}
  • +
+
+ +
+

Admin Tools

+
    +
  • User Management - Manage JoystickDB users, roles, and permissions
  • +
  • Replication - Configure database replication and clustering
  • +
  • Statistics - View detailed performance metrics and analytics
  • +
+
+
+ `; + }, +}); + +export default AdminDashboard; diff --git a/node/src/lib/joystickdb_gui/ui/pages/admin/replication.js b/node/src/lib/joystickdb_gui/ui/pages/admin/replication.js new file mode 100644 index 000000000..3b22bdd5f --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/admin/replication.js @@ -0,0 +1,76 @@ +import joystick from '@joystick.js/ui'; + +const AdminReplication = joystick.component({ + data: async (api = {}) => { + return { + replication_status: await api.get('joystickdb_get_replication_status'), + }; + }, + render: ({ data, each, when }) => { + console.log('Admin replication data:', data); + + return ` +
+

Admin > Replication

+ +

Replication Management

+

Configure and monitor database replication settings.

+ +
+

Replication Status

+

Status: ${data?.replication_status?.enabled ? 'Enabled' : 'Disabled'}

+ + ${when(data?.replication_status?.enabled, ` +
    +
  • Primary Node: ${data.replication_status.primary_node || 'Unknown'}
  • +
  • Replica Set: ${data.replication_status.replica_set || 'Unknown'}
  • +
  • Total Replicas: ${data.replication_status.replica_count || 0}
  • +
+ `)} +
+ +

+ ${when(!data?.replication_status?.enabled, ` + + `)} + ${when(data?.replication_status?.enabled, ` + + + `)} +

+ + ${when(data?.replication_status?.enabled && data?.replication_status?.replicas, ` +
+

Replicas

+ ${each(data.replication_status.replicas, (replica) => ` +
+

${replica.name} (${replica.type})

+
    +
  • Host: ${replica.host}
  • +
  • Port: ${replica.port}
  • +
  • Health: ${replica.healthy ? 'Healthy' : 'Unhealthy'}
  • +
  • Lag: ${replica.lag || '0'}ms
  • +
+
+ `)} +
+ `)} + + ${when(!data?.replication_status?.enabled, ` +
+

About Replication

+

Database replication provides high availability and data redundancy by maintaining copies of your data across multiple servers.

+
    +
  • Automatic failover if primary node goes down
  • +
  • Read scaling across replica nodes
  • +
  • Geographic distribution for better performance
  • +
  • Data backup and disaster recovery
  • +
+
+ `)} +
+ `; + }, +}); + +export default AdminReplication; diff --git a/node/src/lib/joystickdb_gui/ui/pages/admin/stats.js b/node/src/lib/joystickdb_gui/ui/pages/admin/stats.js new file mode 100644 index 000000000..9749dff7d --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/admin/stats.js @@ -0,0 +1,78 @@ +import joystick from '@joystick.js/ui'; + +const AdminStats = joystick.component({ + data: async (api = {}) => { + return { + detailed_stats: await api.get('joystickdb_get_detailed_stats'), + }; + }, + events: { + 'click .refresh-stats': (event = {}, instance = {}) => { + instance.data.refetch(); + }, + }, + render: ({ data, each, when }) => { + console.log('Admin stats data:', data); + + return ` +
+

Admin > Statistics

+ +

Performance Statistics

+ +

+ + +

+ +
+

Performance Metrics

+
    +
  • Read Operations: ${data?.detailed_stats?.operations?.reads || 0}
  • +
  • Write Operations: ${data?.detailed_stats?.operations?.writes || 0}
  • +
  • Avg Response Time: ${data?.detailed_stats?.performance?.avg_response_time || 0}ms
  • +
  • Active Connections: ${data?.detailed_stats?.connections?.active || 0}
  • +
  • Memory Used: ${data?.detailed_stats?.memory?.used || '0 MB'}
  • +
  • Disk Usage: ${data?.detailed_stats?.storage?.disk_usage || '0%'}
  • +
+
+ +
+

Charts

+

📊 Operations Over Time (Chart placeholder)

+

📈 Response Time Trends (Chart placeholder)

+
+ + ${when(data?.detailed_stats?.slow_queries, ` +
+

Slow Queries

+ + + + + + + + + + + ${each(data.detailed_stats.slow_queries, (query) => ` + + + + + + + `)} + +
QueryCollectionResponse TimeCount
${JSON.stringify(query.query).substring(0, 50)}...${query.collection}${query.avg_response_time}ms${query.count}
+
+ `)} + +

Last updated: ${new Date().toLocaleString()}

+
+ `; + }, +}); + +export default AdminStats; diff --git a/node/src/lib/joystickdb_gui/ui/pages/admin/users.js b/node/src/lib/joystickdb_gui/ui/pages/admin/users.js new file mode 100644 index 000000000..dd3d68d53 --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/admin/users.js @@ -0,0 +1,63 @@ +import joystick from '@joystick.js/ui'; + +const AdminUsers = joystick.component({ + data: async (api = {}) => { + return { + users: await api.get('joystickdb_get_users'), + }; + }, + render: ({ data, each, when }) => { + console.log('Admin users data:', data); + + return ` +
+

Admin > Users

+ +

User Management

+

Manage JoystickDB users and their permissions.

+ +

+ + +

+ + ${when(data?.users && data.users.length > 0, ` + + + + + + + + + + + + + ${each(data.users, (user) => ` + + + + + + + + + `)} + +
UsernameEmailRolesStatusLast LoginActions
${user.username}${user.email}${(user.roles || ['user']).join(', ')}${user.active ? 'Active' : 'Inactive'}${user.last_login ? new Date(user.last_login).toLocaleDateString() : 'Never'} + + + +
+ `)} + + ${when(!data?.users || data.users.length === 0, ` +

No users found.

+ `)} +
+ `; + }, +}); + +export default AdminUsers; diff --git a/node/src/lib/joystickdb_gui/ui/pages/collections.js b/node/src/lib/joystickdb_gui/ui/pages/collections.js new file mode 100644 index 000000000..ce15f7c3a --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/collections.js @@ -0,0 +1,52 @@ +import joystick from '@joystick.js/ui'; + +const Collections = joystick.component({ + data: async (api = {}, req = {}) => { + return { + collections: await api.get('joystickdb_get_collections', { + input: { + database: req?.params?.database, + }, + }), + database_name: req?.params?.database, + }; + }, + events: { + 'click a': (event = {}, instance = {}) => { + const collection_name = event.target.getAttribute('data-collection'); + const database_name = instance.data?.database_name; + if (collection_name && database_name) { + window.location.href = `/joystickdb/databases/${database_name}/${collection_name}`; + } + }, + }, + render: ({ data, each, when }) => { + console.log('Collections data:', data); + + return ` +
+

Databases > ${data?.database_name || 'Unknown'}

+ +

Collections in ${data?.database_name || 'Unknown'}

+

Select a collection to browse its documents:

+ + + + ${when(!data?.collections || data.collections.length === 0, ` +

No collections found in this database.

+ `)} +
+ `; + }, +}); + +export default Collections; diff --git a/node/src/lib/joystickdb_gui/ui/pages/dashboard.js b/node/src/lib/joystickdb_gui/ui/pages/dashboard.js new file mode 100644 index 000000000..1919c6009 --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/dashboard.js @@ -0,0 +1,96 @@ +import joystick from '@joystick.js/ui'; + +const JoystickDBDashboard = joystick.component({ + data: async (api = {}) => { + return { + stats: await api.get('joystickdb_stats'), + databases: await api.get('joystickdb_databases'), + }; + }, + css: ` + .jdb-dashboard-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: var(--jdb-spacing-lg); + margin-bottom: var(--jdb-spacing-xl); + } + .jdb-stat-card { + background: white; + border-radius: var(--jdb-border-radius); + padding: var(--jdb-spacing-lg); + border: 1px solid var(--jdb-neutral-3); + } + .jdb-stat-title { + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-sm); + margin: 0 0 0.5rem 0; + text-transform: uppercase; + letter-spacing: 0.5px; + } + .jdb-stat-value { + font-size: 2rem; + font-weight: 700; + color: var(--jdb-neutral-8); + margin: 0; + } + .jdb-quick-actions { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: var(--jdb-spacing-md); + } + .jdb-dashboard-page h1 { + margin: 0 0 var(--jdb-spacing-lg) 0; + color: var(--jdb-neutral-8); + font-size: 1.75rem; + font-weight: 700; + } + `, + render: ({ data, when }) => { + return ` +
+

Database Overview

+
+
+

Total Databases

+

${data?.databases?.databases?.length || 0}

+
+
+

Active Connections

+

${data?.stats?.connections?.active || 0}

+
+
+

Operations/sec

+

${data?.stats?.performance?.ops_per_second || 0}

+
+
+

Memory Usage

+

${Math.round(data?.stats?.memory?.heapUsed / 1024 / 1024) || 0} MB

+
+
+ +
+ `; + }, +}); + +export default JoystickDBDashboard; diff --git a/node/src/lib/joystickdb_gui/ui/pages/databases.js b/node/src/lib/joystickdb_gui/ui/pages/databases.js new file mode 100644 index 000000000..ac46607e6 --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/databases.js @@ -0,0 +1,43 @@ +import joystick from '@joystick.js/ui'; + +const Databases = joystick.component({ + data: async (api = {}) => { + return { + databases: await api.get('joystickdb_get_databases'), + }; + }, + events: { + 'click a': (event = {}, instance = {}) => { + const database_name = event.target.getAttribute('data-database'); + if (database_name) { + window.location.href = `/joystickdb/databases/${database_name}`; + } + }, + }, + render: ({ data, each, when }) => { + console.log('Databases data:', data); + + return ` +
+

Databases

+

Select a database to browse its collections:

+ + + + ${when(!data?.databases || data.databases.length === 0, ` +

No databases found.

+ `)} +
+ `; + }, +}); + +export default Databases; diff --git a/node/src/lib/joystickdb_gui/ui/pages/documents.js b/node/src/lib/joystickdb_gui/ui/pages/documents.js new file mode 100644 index 000000000..8fad11dbd --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/documents.js @@ -0,0 +1,84 @@ +import joystick from '@joystick.js/ui'; + +const Documents = joystick.component({ + data: async (api = {}, req = {}) => { + return { + documents: await api.get('joystickdb_get_documents', { + input: { + database: req?.params?.database, + collection: req?.params?.collection, + limit: 20, + }, + }), + database_name: req?.params?.database, + collection_name: req?.params?.collection, + }; + }, + state: { + selected_document: null, + }, + events: { + 'click .document-id': (event = {}, instance = {}) => { + const document_id = event.target.textContent; + const document = instance.data.documents.find(doc => doc._id === document_id); + instance.set_state({ selected_document: document }); + }, + }, + render: ({ data, state, each, when }) => { + console.log('Documents data:', data); + + return ` +
+

+ Databases > + ${data?.database_name} > + ${data?.collection_name || 'Unknown'} +

+ +

Documents in ${data?.collection_name || 'Unknown'}

+ +

+ + Query Builder +

+ + ${when(data?.documents && data.documents.length > 0, ` + + + + + + + + + + ${each(data.documents, (doc) => ` + + + + + + `)} + +
IDPreviewSize
${doc._id}${JSON.stringify(doc).substring(0, 100)}...${Math.ceil(JSON.stringify(doc).length / 1024)} KB
+ `)} + + ${when(!data?.documents || data.documents.length === 0, ` +

No documents found in this collection.

+ `)} + + ${when(state.selected_document, ` +
+
+

Document Details

+
${JSON.stringify(state.selected_document, null, 2)}
+ +
+
+ `)} +
+ `; + }, +}); + +export default Documents; diff --git a/node/src/lib/joystickdb_gui/ui/pages/login.js b/node/src/lib/joystickdb_gui/ui/pages/login.js new file mode 100644 index 000000000..e4224e526 --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/login.js @@ -0,0 +1,135 @@ +import joystick, { set } from '@joystick.js/ui'; + +const JoystickDBLogin = joystick.component({ + state: { + loading: false, + error: null, + }, + events: { + 'submit .login-form': async (event = {}, instance = {}) => { + event.preventDefault(); + instance.set_state({ loading: true, error: null }); + try { + await set('joystickdb_authenticate', { + input: { + username: event.target.username.value, + password: event.target.password.value, + }, + }); + window.location.href = '/joystickdb/dashboard'; + } catch (error) { + instance.set_state({ + loading: false, + error: error.message || 'Authentication failed', + }); + } + }, + }, + css: ` + .joystickdb-login { + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background: var(--jdb-neutral-2); + font-family: var(--jdb-font-family); + } + .jdb-login-card { + background: white; + padding: 2rem; + border-radius: var(--jdb-border-radius); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + max-width: 400px; + width: 100%; + border: 1px solid var(--jdb-neutral-3); + } + .jdb-login-title { + margin: 0 0 0.5rem 0; + color: var(--jdb-neutral-8); + font-size: 1.5rem; + font-weight: 600; + } + .jdb-login-subtitle { + margin: 0 0 2rem 0; + color: var(--jdb-neutral-6); + font-size: var(--jdb-font-size-base); + } + .jdb-form-group { + margin-bottom: 1rem; + } + .jdb-label { + display: block; + margin-bottom: 0.5rem; + font-weight: 500; + color: var(--jdb-neutral-7); + } + .jdb-error { + background: #fef2f2; + color: #dc2626; + padding: 0.75rem; + border-radius: var(--jdb-border-radius); + margin-bottom: 1rem; + border: 1px solid #fecaca; + } + .jdb-btn-block { + width: 100%; + display: flex; + justify-content: center; + } + .jdb-btn:disabled { + opacity: 0.6; + cursor: not-allowed; + } + `, + render: ({ state, props, when }) => { + return ` + + `; + }, +}); + +export default JoystickDBLogin; diff --git a/node/src/lib/joystickdb_gui/ui/pages/query.js b/node/src/lib/joystickdb_gui/ui/pages/query.js new file mode 100644 index 000000000..d82cd04e4 --- /dev/null +++ b/node/src/lib/joystickdb_gui/ui/pages/query.js @@ -0,0 +1,113 @@ +import joystick from '@joystick.js/ui'; + +const Query = joystick.component({ + data: async (api = {}, req = {}) => { + return { + database_name: req?.params?.database, + collection_name: req?.params?.collection, + }; + }, + state: { + query: '{}', + results: null, + loading: false, + error: null, + }, + events: { + 'submit form': async (event = {}, instance = {}) => { + event.preventDefault(); + + const query = event.target.query.value; + + if (!query.trim()) { + instance.set_state({ error: 'Query cannot be empty' }); + return; + } + + instance.set_state({ + loading: true, + error: null, + results: null + }); + + try { + const results = await api.set('joystickdb_run_query', { + input: { + database: instance.data.database_name, + collection: instance.data.collection_name, + query: query, + }, + }); + + instance.set_state({ + loading: false, + results: results, + }); + } catch (error) { + instance.set_state({ + loading: false, + error: error.message || 'Query execution failed', + }); + } + }, + }, + render: ({ data, state, when }) => { + console.log('Query page data:', data); + console.log('Query state:', state); + + return ` +
+

+ Databases > + ${data?.database_name} > + ${data?.collection_name} > Query +

+ +

Query ${data?.collection_name || 'Unknown'}

+ +
+
+

Query Builder

+ +
+ + +
+
+ +
+

Example Queries:

+
    +
  • {}
  • +
  • { "status": "active" }
  • +
  • { "createdAt": { "$gte": "2024-01-01" } }
  • +
  • { "name": { "$regex": "john", "$options": "i" } }
  • +
+
+ +
+

Results

+ + ${when(state.loading, `

Executing query...

`)} + + ${when(state.error, `

Error: ${state.error}

`)} + + ${when(state.results, ` +

Found: ${Array.isArray(state.results) ? state.results.length : 1} result(s)

+
${JSON.stringify(state.results, null, 2)}
+ `)} + + ${when(!state.loading && !state.error && !state.results, ` +

Execute a query to see results here.

+ `)} +
+
+ `; + }, +}); + +export default Query; diff --git a/node/src/lib/joystickdb_gui/utils/resolve_component_path.js b/node/src/lib/joystickdb_gui/utils/resolve_component_path.js new file mode 100644 index 000000000..28d3cdd48 --- /dev/null +++ b/node/src/lib/joystickdb_gui/utils/resolve_component_path.js @@ -0,0 +1,33 @@ +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +/* + NOTE: Resolve component paths for JoystickDB GUI components. + This handles both development (source) and production (installed package) scenarios. +*/ + +const resolve_component_path = (relative_component_path = '') => { + // NOTE: Get the base path for JoystickDB GUI components + // In development: /path/to/joystick/node/src/lib/joystickdb_gui + // In production: /path/to/app/node_modules/@joystick.js/node/lib/joystickdb_gui + const base_path = path.resolve(__dirname, '..'); + + // NOTE: Strip any leading path separators from the relative path + const cleaned_relative_path = relative_component_path.replace(/^\/+/, ''); + + // NOTE: Resolve the full component path + const component_path = path.resolve(base_path, cleaned_relative_path); + + // NOTE: Use absolute path for dynamic imports to avoid package name confusion + // When relative_to_cwd starts with 'node_modules/', Node.js thinks it's a package + const relative_to_cwd = path.relative(process.cwd(), component_path); + const should_use_absolute = relative_to_cwd.startsWith('node_modules/'); + const final_path = should_use_absolute ? component_path : relative_to_cwd; + + return final_path; +}; + +export default resolve_component_path; diff --git a/test/package-lock.json b/test/package-lock.json index f74721dc1..48a46e745 100644 --- a/test/package-lock.json +++ b/test/package-lock.json @@ -1,12 +1,12 @@ { "name": "@joystick.js/test", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@joystick.js/test", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "license": "ISC", "dependencies": { "ava": "^6.2.0", diff --git a/test/package.json b/test/package.json index 065962549..863c7d2b4 100644 --- a/test/package.json +++ b/test/package.json @@ -2,7 +2,7 @@ "name": "@joystick.js/test", "type": "module", "version": "1.0.0-rc.3", - "canary_version": "0.0.0-canary.2276", + "canary_version": "0.0.0-canary.2289", "description": "The testing framework for Joystick.", "main": "./dist/index.js", "scripts": { diff --git a/ui/package-lock.json b/ui/package-lock.json index 22c839cc0..41967afa8 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@joystick.js/ui", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@joystick.js/ui", - "version": "0.0.0-canary.2276", + "version": "0.0.0-canary.2289", "license": "SAUCR", "dependencies": { "js-cookie": "^3.0.5", diff --git a/ui/package.json b/ui/package.json index 01421924e..f05868cf9 100644 --- a/ui/package.json +++ b/ui/package.json @@ -2,7 +2,7 @@ "name": "@joystick.js/ui", "type": "module", "version": "1.0.0-rc.3", - "canary_version": "0.0.0-canary.2276", + "canary_version": "0.0.0-canary.2289", "description": "The UI framework for Joystick.", "main": "./dist/index.js", "scripts": {