orcaq 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BvUhrUEH.js → 5oARMrld.js} +1 -1
- package/.output/public/_nuxt/{B7HEMfgt.js → 9sDqz0uT.js} +1 -1
- package/.output/public/_nuxt/{C1jMZ4hc.js → B-4cXhNx.js} +1 -1
- package/.output/public/_nuxt/{DhKwXzSk.js → BC6CdfCG.js} +1 -1
- package/.output/public/_nuxt/BCAMWuzu.js +9 -0
- package/.output/public/_nuxt/{DESYlybj.js → BG-rJefG.js} +1 -1
- package/.output/public/_nuxt/BKFPmrcv.js +1 -0
- package/.output/public/_nuxt/{BdDEVolW.js → BMLhg7hE.js} +1 -1
- package/.output/public/_nuxt/BVUHbgGW.js +27 -0
- package/.output/public/_nuxt/{CybtvDjH.js → BYOPXIhP.js} +1 -1
- package/.output/public/_nuxt/{CvcedJeQ.js → BYxQJ0gE.js} +1 -1
- package/.output/public/_nuxt/{CrLqg4B0.js → BZ4ThSRp.js} +1 -1
- package/.output/public/_nuxt/{D60Pzl_V.js → BZmDBfmV.js} +1 -1
- package/.output/public/_nuxt/{CREZ9f0O.js → B_ERKujF.js} +4 -4
- package/.output/public/_nuxt/{ZObQcd0X.js → BccuQbKA.js} +1 -1
- package/.output/public/_nuxt/{DHnNoguE.js → BcyZ-eCi.js} +1 -1
- package/.output/public/_nuxt/BdZsZgcB.js +1 -0
- package/.output/public/_nuxt/BigePTMZ.js +1 -0
- package/.output/public/_nuxt/BkN-uAef.js +1 -0
- package/.output/public/_nuxt/BmAp-sfn.js +1 -0
- package/.output/public/_nuxt/BqHKqsJ5.js +12 -0
- package/.output/public/_nuxt/BseVuOZ1.js +1 -0
- package/.output/public/_nuxt/BtuY54_l.js +1 -0
- package/.output/public/_nuxt/{DWBoXz89.js → Buh0pI3n.js} +1 -1
- package/.output/public/_nuxt/{B84SvUzr.js → BzVvHKKC.js} +1 -1
- package/.output/public/_nuxt/{ByOuUnNS.js → BzywwPw6.js} +1 -1
- package/.output/public/_nuxt/BzzgEvr9.js +7 -0
- package/.output/public/_nuxt/C-I81xfB.js +1 -0
- package/.output/public/_nuxt/C-Pa1rIR.js +1 -0
- package/.output/public/_nuxt/{DNdM2ZyK.js → C-pX1zRI.js} +1 -1
- package/.output/public/_nuxt/{C5bgdIOp.js → C0vscAQB.js} +1 -1
- package/.output/public/_nuxt/C4FrpL8k.js +1 -0
- package/.output/public/_nuxt/{Ci43mke5.js → C4zYnWdF.js} +1 -1
- package/.output/public/_nuxt/C9kgALYc.js +1 -0
- package/.output/public/_nuxt/{B4ebLeWY.js → CCmd8DpQ.js} +3 -3
- package/.output/public/_nuxt/{DXp9fCib.js → CGq9Twnj.js} +1 -1
- package/.output/public/_nuxt/{TuKV3Ilv.js → CHMlsxJw.js} +1 -1
- package/.output/public/_nuxt/CLQzuV82.js +1 -0
- package/.output/public/_nuxt/{BnFDcr74.js → CL_1HDtg.js} +1 -1
- package/.output/public/_nuxt/CRqiHVA4.js +1 -0
- package/.output/public/_nuxt/{DJqZzQsX.js → CS4EJV3B.js} +1 -1
- package/.output/public/_nuxt/CS5akSNT.js +1 -0
- package/.output/public/_nuxt/{B6hH0qos.js → CSExCj8O.js} +1 -1
- package/.output/public/_nuxt/{YJvNy3iu.js → CY_CG0AU.js} +27 -27
- package/.output/public/_nuxt/{b_MfGg1c.js → CbHZwHBV.js} +1 -1
- package/.output/public/_nuxt/Cbo6GmdE.js +1 -0
- package/.output/public/_nuxt/Cf460dGA.js +3867 -0
- package/.output/public/_nuxt/CfseWBL0.js +1 -0
- package/.output/public/_nuxt/{DNNdcUH4.js → Ch0I4juX.js} +1 -1
- package/.output/public/_nuxt/Chvs1m1n.js +1 -0
- package/.output/public/_nuxt/Chx1IK9D.js +1 -0
- package/.output/public/_nuxt/{BGVGiigU.js → CjpXgncp.js} +1 -1
- package/.output/public/_nuxt/CkjXKCQH.js +1 -0
- package/.output/public/_nuxt/Ckry8tuC.js +2 -0
- package/.output/public/_nuxt/{PUe8M07P.js → CmOZ0DCP.js} +1 -1
- package/.output/public/_nuxt/{H5m89x1B.js → CmjR7OTc.js} +1 -1
- package/.output/public/_nuxt/Co7e2XML.js +1 -0
- package/.output/public/_nuxt/CqkctA6I.js +67 -0
- package/.output/public/_nuxt/{CEvNlevo.js → CtB2-SFY.js} +1 -1
- package/.output/public/_nuxt/CtCx-4nJ.js +1 -0
- package/.output/public/_nuxt/CtkhwZY7.js +1 -0
- package/.output/public/_nuxt/Cty7uMrC.js +1 -0
- package/.output/public/_nuxt/CvFjsYJZ.js +1 -0
- package/.output/public/_nuxt/{D9dEqMyH.js → Czr647QE.js} +1 -1
- package/.output/public/_nuxt/{4by6-f6q.js → D0lW43G8.js} +315 -313
- package/.output/public/_nuxt/{DFM-aCBX.js → D28ykMUi.js} +1 -1
- package/.output/public/_nuxt/{DaKikgWm.js → DA4Xn6lm.js} +1 -1
- package/.output/public/_nuxt/{CS5ItJPR.js → DChDHsIe.js} +1 -1
- package/.output/public/_nuxt/{DQT4eICL.js → DJBO_9pO.js} +1 -1
- package/.output/public/_nuxt/DJXB1Li8.js +1 -0
- package/.output/public/_nuxt/{BprXyYdv.js → DKLk0T0H.js} +1 -1
- package/.output/public/_nuxt/{F5lCgNdb.js → DLBsdU7G.js} +1 -1
- package/.output/public/_nuxt/DNB4Xmyo.js +37 -0
- package/.output/public/_nuxt/DOAixkpJ.js +1 -0
- package/.output/public/_nuxt/{Cx6s86aR.js → DPq8O9CC.js} +1 -1
- package/.output/public/_nuxt/{Bq7otXBA.js → DQdA5Twt.js} +1 -1
- package/.output/public/_nuxt/{BeNILdbT.js → DRh-06Hb.js} +1 -1
- package/.output/public/_nuxt/DTvJImVU.js +1 -0
- package/.output/public/_nuxt/DVkCRFXi.js +1 -0
- package/.output/public/_nuxt/DX8ecA59.js +1 -0
- package/.output/public/_nuxt/DakKehZj.js +1 -0
- package/.output/public/_nuxt/Db3rTgnd.js +1 -0
- package/.output/public/_nuxt/DfyynWBR.js +1 -0
- package/.output/public/_nuxt/DgJOougY.js +1 -0
- package/.output/public/_nuxt/DkQCknMw.js +1 -0
- package/.output/public/_nuxt/{CA99KAte.js → DpBeiFQV.js} +2 -2
- package/.output/public/_nuxt/{DaMyovpr.js → DrdbRRXx.js} +1 -1
- package/.output/public/_nuxt/Dtl3qje7.js +1 -0
- package/.output/public/_nuxt/{DkadXn5U.js → Du5Ka6uI.js} +1 -1
- package/.output/public/_nuxt/Dunt8-TF.js +1 -0
- package/.output/public/_nuxt/{minLMBmY.js → DvWEWtFg.js} +1 -1
- package/.output/public/_nuxt/{Cvq07PgE.js → KynNdNgX.js} +1 -1
- package/.output/public/_nuxt/MWrJVKEf.js +2 -0
- package/.output/public/_nuxt/{Dpl6-lqE.js → NYpsF1lW.js} +1 -1
- package/.output/public/_nuxt/{BmU9CNkM.js → Nof0nVJ6.js} +1 -1
- package/.output/public/_nuxt/{BJYf67_H.js → Ohrg3hU7.js} +1 -1
- package/.output/public/_nuxt/Rrce0BXL.js +22 -0
- package/.output/public/_nuxt/VNOocds9.js +1 -0
- package/.output/public/_nuxt/Y-MEKhtd.js +1 -0
- package/.output/public/_nuxt/{CR6_eO9a.js → YdOCcCRS.js} +1 -1
- package/.output/public/_nuxt/bYQCSC5-.js +1 -0
- package/.output/public/_nuxt/bkzIFcLw.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/ad11b978-8fdd-4bb2-9b38-1d6fe93f994e.json +1 -0
- package/.output/public/_nuxt/default.B0xlD4Sl.css +1 -0
- package/.output/public/_nuxt/{CKqvNpN3.js → eOeO5uM0.js} +1 -1
- package/.output/public/_nuxt/entry.DxCQuGXb.css +1 -0
- package/.output/public/_nuxt/g9ZMnTLJ.js +1 -0
- package/.output/public/_nuxt/{TEF-nDfP.js → hIbRoJ89.js} +1 -1
- package/.output/public/_nuxt/{BxDrCsPf.js → j23gQsG7.js} +1 -1
- package/.output/public/_nuxt/klVlxnpt.js +1 -0
- package/.output/public/_nuxt/qRiDKEr7.js +1 -0
- package/.output/public/_nuxt/syq5mCJi.js +1 -0
- package/.output/public/_nuxt/v41yYOa9.js +10 -0
- package/.output/public/_nuxt/{CE8aasoy.js → vaJvtND9.js} +1 -1
- package/.output/public/_nuxt/wodl4bLW.js +2 -0
- package/.output/server/chunks/_/create-adapter.mjs +2 -0
- package/.output/server/chunks/_/create-adapter.mjs.map +1 -1
- package/.output/server/chunks/_/db-connection.mjs +500 -19
- package/.output/server/chunks/_/db-connection.mjs.map +1 -1
- package/.output/server/chunks/_/instance-insights.factory.mjs +2037 -14
- package/.output/server/chunks/_/instance-insights.factory.mjs.map +1 -1
- package/.output/server/chunks/_/metadata.factory.mjs +302 -22
- package/.output/server/chunks/_/metadata.factory.mjs.map +1 -1
- package/.output/server/chunks/_/redis-browser.service.mjs +513 -0
- package/.output/server/chunks/_/redis-browser.service.mjs.map +1 -0
- package/.output/server/chunks/_/redis-instance-insights.service.mjs +442 -0
- package/.output/server/chunks/_/redis-instance-insights.service.mjs.map +1 -0
- package/.output/server/chunks/_/redis-pubsub.service.mjs +227 -0
- package/.output/server/chunks/_/redis-pubsub.service.mjs.map +1 -0
- package/.output/server/chunks/_/redis.client.mjs +129 -0
- package/.output/server/chunks/_/redis.client.mjs.map +1 -0
- package/.output/server/chunks/_/tables.factory.mjs +20 -8
- package/.output/server/chunks/_/tables.factory.mjs.map +1 -1
- package/.output/server/chunks/build/client.manifest.mjs +730 -614
- package/.output/server/chunks/build/client.manifest.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +722 -613
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/agent.mjs +4 -1
- package/.output/server/chunks/routes/api/ai/agent.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/export-database.mjs +4 -1
- package/.output/server/chunks/routes/api/database-export/export-database.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs +4 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs +4 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-import/import-database.mjs +4 -1
- package/.output/server/chunks/routes/api/database-import/import-database.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs +4 -1
- package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/create-role.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/create-role.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/delete-role.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/delete-role.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases-with-permissions.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases-with-permissions.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-permissions.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-permissions.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-role-inheritance.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-role-inheritance.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-role.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-role.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-roles.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-roles.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-schema-objects.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-schema-objects.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-schemas.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-schemas.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/grant-bulk-permissions.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/grant-bulk-permissions.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/grant-permission.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/grant-permission.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/revoke-permission.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/revoke-permission.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/definition.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/definition.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/delete.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/delete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/overview.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/overview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/rename.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/rename.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/signature.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/signature.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/update.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +5 -2
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/cancel-query.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/cancel-query.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/configuration.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/configuration.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/dashboard.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/dashboard.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/drop-slot.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/drop-slot.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/replication.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/replication.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/state.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/state.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/terminate-connection.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/terminate-connection.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/toggle-slot-status.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/toggle-slot-status.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/view.post.mjs +66 -0
- package/.output/server/chunks/routes/api/instance-insights/view.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/managment-connection/health-check.mjs +7 -1
- package/.output/server/chunks/routes/api/managment-connection/health-check.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metadata/erd.post.mjs +7 -2
- package/.output/server/chunks/routes/api/metadata/erd.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metadata/meta-data.post.mjs +6 -1
- package/.output/server/chunks/routes/api/metadata/meta-data.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metadata/reverse-schemas.post.mjs +7 -2
- package/.output/server/chunks/routes/api/metadata/reverse-schemas.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics/monitor.post.mjs +4 -1
- package/.output/server/chunks/routes/api/metrics/monitor.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/query/execute.post.mjs +6 -1
- package/.output/server/chunks/routes/api/query/execute.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/query/raw-execute-stream.post.mjs +15 -3
- package/.output/server/chunks/routes/api/query/raw-execute-stream.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/query/raw-execute.post.mjs +8 -1
- package/.output/server/chunks/routes/api/query/raw-execute.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/redis/browser/databases.post.mjs +25 -0
- package/.output/server/chunks/routes/api/redis/browser/databases.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/browser/value.patch.mjs +39 -0
- package/.output/server/chunks/routes/api/redis/browser/value.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/browser/value.post.mjs +25 -0
- package/.output/server/chunks/routes/api/redis/browser/value.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/index.post.mjs +37 -0
- package/.output/server/chunks/routes/api/redis/index.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/kill-client.post.mjs +38 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/kill-client.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/overview.post.mjs +35 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/overview.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/messages.post.mjs +24 -0
- package/.output/server/chunks/routes/api/redis/pubsub/messages.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/overview.post.mjs +38 -0
- package/.output/server/chunks/routes/api/redis/pubsub/overview.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/publish.post.mjs +39 -0
- package/.output/server/chunks/routes/api/redis/pubsub/publish.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/subscribe.post.mjs +39 -0
- package/.output/server/chunks/routes/api/redis/pubsub/subscribe.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/unsubscribe.post.mjs +24 -0
- package/.output/server/chunks/routes/api/redis/pubsub/unsubscribe.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/workbench/execute.post.mjs +60 -0
- package/.output/server/chunks/routes/api/redis/workbench/execute.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs +9 -5
- package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs +9 -5
- package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/ddl.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/ddl.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/export.post.mjs +5 -2
- package/.output/server/chunks/routes/api/tables/export.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/indexes.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/indexes.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/meta.post.mjs +7 -2
- package/.output/server/chunks/routes/api/tables/meta.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/overview.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/overview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/rls.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/rls.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/rules.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/rules.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/size.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/size.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/structure.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/structure.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/triggers.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/triggers.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/definition.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/definition.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/dependencies.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/dependencies.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/explain.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/explain.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/indexes.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/indexes.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/meta.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/meta.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/overview.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/overview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/node_modules/@libsql/client/lib-esm/hrana.js +310 -0
- package/.output/server/node_modules/@libsql/client/lib-esm/http.js +230 -0
- package/.output/server/node_modules/@libsql/client/lib-esm/sql_cache.js +87 -0
- package/.output/server/node_modules/@libsql/client/package.json +123 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/api.js +16 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/config.js +136 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/uri.js +120 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/util.js +55 -0
- package/.output/server/node_modules/@libsql/core/package.json +91 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/batch.js +271 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/byte_queue.js +45 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/client.js +13 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/cursor.js +2 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/describe.js +8 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/index.js +4 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/json/decode.js +59 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/json/encode.js +72 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/protobuf/decode.js +150 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/protobuf/encode.js +95 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/protobuf/util.js +6 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/errors.js +102 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/client.js +124 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/cursor.js +135 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/json_decode.js +62 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/json_encode.js +55 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/protobuf_decode.js +44 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/protobuf_encode.js +78 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/stream.js +363 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/id_alloc.js +47 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/index.js +42 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/libsql_url.js +75 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/queue.js +26 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/queue_microtask.js +13 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/result.js +48 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/json_decode.js +106 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/json_encode.js +71 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/protobuf_decode.js +115 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/protobuf_encode.js +85 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/sql.js +46 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/stmt.js +76 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/stream.js +57 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/util.js +4 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/value.js +83 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/client.js +318 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/cursor.js +80 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/json_decode.js +74 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/json_encode.js +77 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/protobuf_decode.js +60 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/protobuf_encode.js +115 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/stream.js +211 -0
- package/.output/server/node_modules/@libsql/hrana-client/package.json +60 -0
- package/.output/server/node_modules/@libsql/isomorphic-fetch/node.js +6 -0
- package/.output/server/node_modules/@libsql/isomorphic-fetch/package.json +51 -0
- package/.output/server/node_modules/@libsql/isomorphic-ws/node.mjs +2 -0
- package/.output/server/node_modules/@libsql/isomorphic-ws/package.json +53 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/ADD.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/CARD.js +16 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/EXISTS.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/INSERT.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/LOADCHUNK.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/MADD.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/MEXISTS.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/RESERVE.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/SCANDUMP.js +23 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/helpers.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/index.js +53 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INCRBY.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INITBYDIM.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INITBYPROB.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/MERGE.js +33 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/QUERY.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/index.js +26 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/ADD.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/ADDNX.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/COUNT.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/DEL.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/EXISTS.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/INSERT.js +34 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/INSERTNX.js +44 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/LOADCHUNK.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/RESERVE.js +31 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/SCANDUMP.js +23 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/index.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/index.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/ADD.js +20 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/BYRANK.js +26 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/BYREVRANK.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/CDF.js +21 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/CREATE.js +21 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/MAX.js +17 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/MERGE.js +27 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/MIN.js +17 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/QUANTILE.js +21 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/RANK.js +25 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/RESET.js +16 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/REVRANK.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/TRIMMED_MEAN.js +20 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/index.js +50 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/ADD.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/COUNT.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/INCRBY.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/INFO.js +24 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/LIST.js +16 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/LIST_WITHCOUNT.js +26 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/QUERY.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/RESERVE.js +25 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/index.js +32 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/index.js +9 -0
- package/.output/server/node_modules/@redis/bloom/package.json +36 -0
- package/.output/server/node_modules/@redis/client/dist/index.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/RESP/decoder.js +727 -0
- package/.output/server/node_modules/@redis/client/dist/lib/RESP/encoder.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/RESP/verbatim-string.js +12 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/credentials-provider.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/index.js +12 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/token-manager.js +184 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/token.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/cache.js +634 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/commands-queue.js +497 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/enterprise-maintenance-manager.js +387 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/identity.js +65 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/index.js +1118 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/legacy-mode.js +119 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/linked-list.js +212 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/multi-command.js +118 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/parser.js +83 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/pool.js +373 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/pub-sub.js +351 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/socket.js +336 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/tracing.js +122 -0
- package/.output/server/node_modules/@redis/client/dist/lib/cluster/cluster-slots.js +657 -0
- package/.output/server/node_modules/@redis/client/dist/lib/cluster/index.js +425 -0
- package/.output/server/node_modules/@redis/client/dist/lib/cluster/multi-command.js +124 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commander.js +91 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_CAT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_DELUSER.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_DRYRUN.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_GENPASS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_GETUSER.js +33 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LIST.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LOAD.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LOG.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LOG_RESET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_SAVE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_SETUSER.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_USERS.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_WHOAMI.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/APPEND.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ASKING.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/AUTH.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BGREWRITEAOF.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BGSAVE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITCOUNT.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITFIELD.js +33 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITFIELD_RO.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITOP.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITPOS.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BLMOVE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BLMPOP.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BLPOP.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BRPOP.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BRPOPLPUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BZMPOP.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BZPOPMAX.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BZPOPMIN.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_CACHING.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_GETNAME.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_GETREDIR.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_ID.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_INFO.js +62 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_KILL.js +66 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_LIST.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_NO-EVICT.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_NO-TOUCH.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_PAUSE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_SETNAME.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKING.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKINGINFO.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_UNPAUSE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTSRANGE.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_BUMPEPOCH.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNT-FAILURE-REPORTS.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNTKEYSINSLOT.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTSRANGE.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_FAILOVER.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_FORGET.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_INFO.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_KEYSLOT.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_LINKS.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_MEET.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_MYID.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_MYSHARDID.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_NODES.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICAS.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICATE.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_RESET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SAVECONFIG.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SET-CONFIG-EPOCH.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SETSLOT.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SLOTS.js +30 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_COUNT.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYSANDFLAGS.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_INFO.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_LIST.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_GET.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_RESETSTAT.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_REWRITE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_SET.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COPY.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DBSIZE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DECR.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DECRBY.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DEL.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DELEX.js +43 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DIGEST.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DUMP.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ECHO.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVAL.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVALSHA.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVALSHA_RO.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVAL_RO.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXISTS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXPIRE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXPIREAT.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXPIRETIME.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FCALL.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FCALL_RO.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FLUSHALL.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FLUSHDB.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_DELETE.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_DUMP.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_FLUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_KILL.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST.js +38 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST_WITHCODE.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_LOAD.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_RESTORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_STATS.js +47 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOADD.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEODIST.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOHASH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOPOS.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO_WITH.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_STORE.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_WITH.js +36 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO.js +45 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO_WITH.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_STORE.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_WITH.js +56 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOSEARCH.js +54 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOSEARCHSTORE.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOSEARCH_WITH.js +55 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GET.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETBIT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETDEL.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETEX.js +50 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETRANGE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETSET.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HDEL.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HELLO.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXISTS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXPIRE.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXPIREAT.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXPIRETIME.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGETALL.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGETDEL.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGETEX.js +30 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HINCRBY.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HINCRBYFLOAT.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HKEYS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HLEN.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HMGET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_GET.js +131 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_RESET.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_START.js +60 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_STOP.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPERSIST.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPEXPIRE.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPEXPIREAT.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPEXPIRETIME.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPTTL.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HRANDFIELD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSCAN.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSCAN_NOVALUES.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSET.js +55 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSETEX.js +81 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSETNX.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSTRLEN.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HTTL.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HVALS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INCR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INCRBY.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INCRBYFLOAT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INFO.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/KEYS.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LASTSAVE.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_DOCTOR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_GRAPH.js +37 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_HISTOGRAM.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_HISTORY.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_LATEST.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_RESET.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS_IDX.js +33 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS_IDX_WITHMATCHLEN.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS_LEN.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LINDEX.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LINSERT.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LLEN.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LMOVE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LMPOP.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LOLWUT.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOP.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOP_COUNT.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOS.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOS_COUNT.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPUSHX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LRANGE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LREM.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LSET.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LTRIM.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_DOCTOR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_PURGE.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_STATS.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_USAGE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MGET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MIGRATE.js +48 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MODULE_LIST.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MODULE_LOAD.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MODULE_UNLOAD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MOVE.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MSET.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MSETEX.js +104 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MSETNX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_ENCODING.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_FREQ.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_IDLETIME.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_REFCOUNT.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PERSIST.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PEXPIRE.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PEXPIREAT.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PEXPIRETIME.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PFADD.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PFCOUNT.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PFMERGE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PING.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PSETEX.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PTTL.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBLISH.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_CHANNELS.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMPAT.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMSUB.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_SHARDCHANNELS.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_SHARDNUMSUB.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RANDOMKEY.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/READONLY.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RENAME.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RENAMENX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/REPLICAOF.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RESTORE-ASKING.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RESTORE.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ROLE.js +60 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPOP.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPOPLPUSH.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPOP_COUNT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPUSHX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SADD.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCAN.js +71 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCARD.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_DEBUG.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_EXISTS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_FLUSH.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_KILL.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_LOAD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SDIFF.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SDIFFSTORE.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SET.js +61 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETBIT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETEX.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETNX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETRANGE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SINTER.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SINTERCARD.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SINTERSTORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SISMEMBER.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SMEMBERS.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SMISMEMBER.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SMOVE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SORT.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SORT_RO.js +40 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SORT_STORE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SPOP.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SPOP_COUNT.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SPUBLISH.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SRANDMEMBER.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SREM.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SSCAN.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/STRLEN.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SUNION.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SUNIONSTORE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SWAPDB.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TIME.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TOUCH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TTL.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TYPE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/UNLINK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VADD.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VCARD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VDIM.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VEMB.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VEMB_RAW.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VGETATTR.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VINFO.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VLINKS.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VLINKS_WITHSCORES.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VRANDMEMBER.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VRANGE.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VREM.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VSETATTR.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VSIM.js +51 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VSIM_WITHSCORES.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/WAIT.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XACK.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XACKDEL.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XADD.js +71 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XADD_NOMKSTREAM.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM.js +43 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XCFGSET.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XCLAIM.js +52 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XCLAIM_JUSTID.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XDEL.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XDELEX.js +29 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_CREATE.js +29 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_DESTROY.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_SETID.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XINFO_CONSUMERS.js +40 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XINFO_GROUPS.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XINFO_STREAM.js +72 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XLEN.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XPENDING.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XPENDING_RANGE.js +49 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XRANGE.js +50 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XREAD.js +57 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XREADGROUP.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XREVRANGE.js +49 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XSETID.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XTRIM.js +36 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZADD.js +73 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZADD_INCR.js +36 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZCARD.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZCOUNT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZDIFF.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZDIFFSTORE.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINCRBY.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTER.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTERCARD.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTERSTORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTER_WITHSCORES.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZLEXCOUNT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZMPOP.js +47 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZMSCORE.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMAX.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMAX_COUNT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMIN.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMIN_COUNT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGE.js +45 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGEBYLEX.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGESTORE.js +37 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANK_WITHSCORE.js +38 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREM.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYLEX.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYRANK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREVRANK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZSCAN.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZSCORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZUNION.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZUNIONSTORE.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZUNION_WITHSCORES.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/generic-transformers.js +492 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/index.js +1161 -0
- package/.output/server/node_modules/@redis/client/dist/lib/errors.js +110 -0
- package/.output/server/node_modules/@redis/client/dist/lib/lua-script.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/multi-command.js +48 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/client-registry.js +84 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/index.js +81 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/metrics.js +647 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/types.js +120 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/utils/error.util.js +199 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/utils/index.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_MASTER.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_MONITOR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_REPLICAS.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_SENTINELS.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_SET.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/index.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/index.js +1229 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/module.js +10 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/multi-commands.js +115 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/pub-sub-proxy.js +150 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/utils.js +98 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/wait-queue.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/single-entry-cache.js +38 -0
- package/.output/server/node_modules/@redis/client/dist/lib/utils/digest.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/package.json +52 -0
- package/.output/server/node_modules/@redis/client/package.json +52 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRAPPEND.js +26 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRINDEX.js +31 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRINSERT.js +27 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRLEN.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRPOP.js +32 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRTRIM.js +22 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/CLEAR.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/DEBUG_MEMORY.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/DEL.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/FORGET.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/GET.js +24 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/MERGE.js +22 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/MGET.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/MSET.js +25 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/NUMINCRBY.js +26 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/NUMMULTBY.js +25 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/OBJKEYS.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/OBJLEN.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/SET.js +35 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/STRAPPEND.js +26 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/STRLEN.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/TOGGLE.js +20 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/TYPE.js +29 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/index.js +91 -0
- package/.output/server/node_modules/@redis/json/dist/lib/index.js +9 -0
- package/.output/server/node_modules/@redis/json/package.json +36 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/AGGREGATE.js +212 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/AGGREGATE_WITHCURSOR.js +40 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALIASADD.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALIASDEL.js +16 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALIASUPDATE.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALTER.js +19 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CONFIG_GET.js +23 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CONFIG_SET.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CREATE.js +277 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CURSOR_DEL.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CURSOR_READ.js +27 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DICTADD.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DICTDEL.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DICTDUMP.js +19 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DROPINDEX.js +24 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/EXPLAIN.js +29 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/EXPLAINCLI.js +26 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/HYBRID.js +273 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/INFO.js +106 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/PROFILE_AGGREGATE.js +58 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/PROFILE_SEARCH.js +58 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SEARCH.js +160 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SEARCH_NOCONTENT.js +34 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SPELLCHECK.js +56 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGADD.js +28 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGDEL.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET.js +27 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET_WITHPAYLOADS.js +36 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET_WITHSCORES.js +51 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js +53 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGLEN.js +15 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SYNDUMP.js +27 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SYNUPDATE.js +24 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/TAGVALS.js +20 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/_LIST.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/index.js +125 -0
- package/.output/server/node_modules/@redis/search/dist/lib/dialect/default.js +5 -0
- package/.output/server/node_modules/@redis/search/dist/lib/index.js +17 -0
- package/.output/server/node_modules/@redis/search/package.json +37 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/ADD.js +29 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/ALTER.js +23 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/CREATE.js +24 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/CREATERULE.js +48 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/DECRBY.js +40 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/DEL.js +20 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/DELETERULE.js +17 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/GET.js +33 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/INCRBY.js +40 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/INFO.js +58 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/INFO_DEBUG.js +46 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MADD.js +20 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MGET.js +57 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MGET_SELECTED_LABELS.js +23 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MGET_WITHLABELS.js +43 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE.js +44 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_GROUPBY.js +96 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_SELECTED_LABELS.js +51 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_SELECTED_LABELS_GROUPBY.js +52 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_WITHLABELS.js +59 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_WITHLABELS_GROUPBY.js +52 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_GROUPBY.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_SELECTED_LABELS.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_SELECTED_LABELS_GROUPBY.js +42 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_WITHLABELS.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_WITHLABELS_GROUPBY.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/QUERYINDEX.js +20 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/RANGE.js +66 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/REVRANGE.js +40 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/helpers.js +237 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/index.js +113 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/index.js +17 -0
- package/.output/server/node_modules/@redis/time-series/package.json +36 -0
- package/.output/server/node_modules/cluster-key-slot/lib/index.js +166 -0
- package/.output/server/node_modules/cluster-key-slot/package.json +56 -0
- package/.output/server/node_modules/js-base64/base64.mjs +301 -0
- package/.output/server/node_modules/js-base64/package.json +43 -0
- package/.output/server/node_modules/promise-limit/index.js +88 -0
- package/.output/server/node_modules/promise-limit/package.json +39 -0
- package/.output/server/node_modules/redis/dist/index.js +77 -0
- package/.output/server/node_modules/redis/package.json +36 -0
- package/.output/server/node_modules/ws/lib/buffer-util.js +131 -0
- package/.output/server/node_modules/ws/lib/constants.js +19 -0
- package/.output/server/node_modules/ws/lib/event-target.js +292 -0
- package/.output/server/node_modules/ws/lib/extension.js +203 -0
- package/.output/server/node_modules/ws/lib/limiter.js +55 -0
- package/.output/server/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/.output/server/node_modules/ws/lib/receiver.js +706 -0
- package/.output/server/node_modules/ws/lib/sender.js +602 -0
- package/.output/server/node_modules/ws/lib/stream.js +161 -0
- package/.output/server/node_modules/ws/lib/subprotocol.js +62 -0
- package/.output/server/node_modules/ws/lib/validation.js +152 -0
- package/.output/server/node_modules/ws/lib/websocket-server.js +554 -0
- package/.output/server/node_modules/ws/lib/websocket.js +1393 -0
- package/.output/server/node_modules/ws/package.json +69 -0
- package/.output/server/node_modules/ws/wrapper.mjs +8 -0
- package/.output/server/package.json +16 -1
- package/package.json +8 -2
- package/.output/public/_nuxt/8Ppmjv9D.js +0 -1
- package/.output/public/_nuxt/B1qjkRVO.js +0 -1
- package/.output/public/_nuxt/B3KEisfc.js +0 -1
- package/.output/public/_nuxt/BDXvbRNW.js +0 -1
- package/.output/public/_nuxt/BGRcizqy.js +0 -1
- package/.output/public/_nuxt/BOK5ZFNK.js +0 -1
- package/.output/public/_nuxt/BPY2ud8g.js +0 -1
- package/.output/public/_nuxt/BSONoRG4.js +0 -2
- package/.output/public/_nuxt/BT53m-su.js +0 -1
- package/.output/public/_nuxt/BTJSh8in.js +0 -2
- package/.output/public/_nuxt/BVpt8J3a.js +0 -1
- package/.output/public/_nuxt/Bdtn2mn5.js +0 -1
- package/.output/public/_nuxt/BqyO8OjC.js +0 -3867
- package/.output/public/_nuxt/Bs1og3h1.js +0 -10
- package/.output/public/_nuxt/Bs2DgR_z.js +0 -1
- package/.output/public/_nuxt/BxrwrGYE.js +0 -1
- package/.output/public/_nuxt/By0aUn7N.js +0 -1
- package/.output/public/_nuxt/C177_GoB.js +0 -1
- package/.output/public/_nuxt/C69a9jD3.js +0 -67
- package/.output/public/_nuxt/C8AyZ3_X.js +0 -2
- package/.output/public/_nuxt/C8KplD68.js +0 -1
- package/.output/public/_nuxt/CNF1h1lI.js +0 -1
- package/.output/public/_nuxt/CcK14gfI.js +0 -1
- package/.output/public/_nuxt/CjouDEjz.js +0 -1
- package/.output/public/_nuxt/Cp5lMcfd.js +0 -1
- package/.output/public/_nuxt/CpYiq1Wv.js +0 -1
- package/.output/public/_nuxt/CwmbX4-U.js +0 -1
- package/.output/public/_nuxt/D-YUpbah.js +0 -9
- package/.output/public/_nuxt/D9BYd7AV.js +0 -1
- package/.output/public/_nuxt/DCJ49Fnq.js +0 -1
- package/.output/public/_nuxt/DeBdxlx0.js +0 -1
- package/.output/public/_nuxt/Dkikh2OC.js +0 -22
- package/.output/public/_nuxt/DlOyXrKK.js +0 -1
- package/.output/public/_nuxt/DqA_edEU.js +0 -1
- package/.output/public/_nuxt/DqxL2Lpl.js +0 -1
- package/.output/public/_nuxt/Dt3rfvTn.js +0 -1
- package/.output/public/_nuxt/Dt5h0Tys.js +0 -1
- package/.output/public/_nuxt/DwrSZ8Vj.js +0 -1
- package/.output/public/_nuxt/DwyFZZT6.js +0 -1
- package/.output/public/_nuxt/EM8J-XL1.js +0 -7
- package/.output/public/_nuxt/ESKvsKwc.js +0 -1
- package/.output/public/_nuxt/V5LvXMJl.js +0 -1
- package/.output/public/_nuxt/builds/meta/455d4da4-6357-4478-8703-78a79ccbbc0f.json +0 -1
- package/.output/public/_nuxt/default.DC7ec2JI.css +0 -1
- package/.output/public/_nuxt/entry.qdzR7QFr.css +0 -1
- package/.output/public/_nuxt/fpuEgQ7C.js +0 -12
- package/.output/public/_nuxt/jU7fkvuR.js +0 -1
- package/.output/public/_nuxt/lHkFwi3L.js +0 -1
- package/.output/public/_nuxt/pQ8l8BR2.js +0 -1
- package/.output/public/_nuxt/xYXqL1eV.js +0 -1
- package/.output/public/_nuxt/xxfb8w7n.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { D as DatabaseClientType } from './db-connection.mjs';
|
|
1
|
+
import { D as DatabaseClientType, d as getDatabaseSource } from './db-connection.mjs';
|
|
2
2
|
import { c as createError } from '../nitro/nitro.mjs';
|
|
3
|
-
import { B as BaseDomainAdapter, c as createDomainAdapter } from './create-adapter.mjs';
|
|
4
3
|
import { c as createDatabaseHttpError } from './error.mjs';
|
|
4
|
+
import { B as BaseDomainAdapter, c as createDomainAdapter } from './create-adapter.mjs';
|
|
5
5
|
|
|
6
6
|
function getDatabaseLabel(dbType) {
|
|
7
7
|
switch (dbType) {
|
|
@@ -29,6 +29,9 @@ class BaseUnsupportedInstanceInsightsAdapter {
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
|
+
async getView() {
|
|
33
|
+
return this.unsupported("loading instance insights");
|
|
34
|
+
}
|
|
32
35
|
async getDashboard() {
|
|
33
36
|
return this.unsupported("loading dashboards");
|
|
34
37
|
}
|
|
@@ -55,30 +58,1350 @@ class BaseUnsupportedInstanceInsightsAdapter {
|
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
60
|
|
|
61
|
+
const DEFAULT_CAPABILITIES = {
|
|
62
|
+
supportsSessionInspection: false,
|
|
63
|
+
supportsLockInspection: false,
|
|
64
|
+
supportsConfiguration: false,
|
|
65
|
+
supportsReplication: false,
|
|
66
|
+
supportsDataGuard: false,
|
|
67
|
+
supportsStorageHealth: false,
|
|
68
|
+
supportsIntegrityChecks: false,
|
|
69
|
+
supportsMemoryLimits: false,
|
|
70
|
+
supportsCancelQuery: false,
|
|
71
|
+
supportsTerminateConnection: false,
|
|
72
|
+
supportsReplicationActions: false
|
|
73
|
+
};
|
|
74
|
+
function createInsightsCapabilities(overrides = {}) {
|
|
75
|
+
return {
|
|
76
|
+
...DEFAULT_CAPABILITIES,
|
|
77
|
+
...overrides
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function createActionCapability(action) {
|
|
81
|
+
return action;
|
|
82
|
+
}
|
|
83
|
+
function createUnavailableSection(id, title, subtitle, statusMessage, capturedAt) {
|
|
84
|
+
return {
|
|
85
|
+
id,
|
|
86
|
+
title,
|
|
87
|
+
subtitle,
|
|
88
|
+
status: "unavailable",
|
|
89
|
+
statusMessage,
|
|
90
|
+
capturedAt,
|
|
91
|
+
tables: []
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function toTitleLabel(key) {
|
|
95
|
+
return key.replace(/[._-]+/g, " ").replace(/([a-z\d])([A-Z])/g, "$1 $2").split(/\s+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
96
|
+
}
|
|
97
|
+
function createColumns(keys) {
|
|
98
|
+
return keys.map((key) => ({
|
|
99
|
+
key,
|
|
100
|
+
label: toTitleLabel(key)
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
function normalizeTableValue(value) {
|
|
104
|
+
if (value === void 0 || value === null) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if (value instanceof Date) {
|
|
108
|
+
return value.toISOString();
|
|
109
|
+
}
|
|
110
|
+
if (typeof value === "string") {
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
113
|
+
if (typeof value === "number") {
|
|
114
|
+
return Number.isFinite(value) ? value : null;
|
|
115
|
+
}
|
|
116
|
+
if (typeof value === "boolean") {
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
if (typeof value === "bigint") {
|
|
120
|
+
return value.toString();
|
|
121
|
+
}
|
|
122
|
+
if (Array.isArray(value)) {
|
|
123
|
+
return value.map((item) => item === null || item === void 0 ? "" : String(item)).filter(Boolean).join(", ");
|
|
124
|
+
}
|
|
125
|
+
return JSON.stringify(value);
|
|
126
|
+
}
|
|
127
|
+
function createTable(args) {
|
|
128
|
+
const rows = args.rows.map((row) => {
|
|
129
|
+
const normalized = {};
|
|
130
|
+
for (const [key, value] of Object.entries(row)) {
|
|
131
|
+
normalized[key] = normalizeTableValue(value);
|
|
132
|
+
}
|
|
133
|
+
return normalized;
|
|
134
|
+
});
|
|
135
|
+
const keys = args.columnKeys && args.columnKeys.length > 0 ? [...args.columnKeys] : Array.from(new Set(rows.flatMap((row) => Object.keys(row))));
|
|
136
|
+
return {
|
|
137
|
+
id: args.id,
|
|
138
|
+
title: args.title,
|
|
139
|
+
description: args.description,
|
|
140
|
+
emptyMessage: args.emptyMessage,
|
|
141
|
+
columns: createColumns(keys),
|
|
142
|
+
rows
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function formatNumber(value, digits = 0) {
|
|
146
|
+
const numeric = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
147
|
+
if (!Number.isFinite(numeric)) {
|
|
148
|
+
return "-";
|
|
149
|
+
}
|
|
150
|
+
return new Intl.NumberFormat("en-US", {
|
|
151
|
+
maximumFractionDigits: digits,
|
|
152
|
+
minimumFractionDigits: digits
|
|
153
|
+
}).format(numeric);
|
|
154
|
+
}
|
|
155
|
+
function formatPercent(value, digits = 1) {
|
|
156
|
+
const numeric = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
157
|
+
if (!Number.isFinite(numeric)) {
|
|
158
|
+
return "-";
|
|
159
|
+
}
|
|
160
|
+
return `${formatNumber(numeric, digits)}%`;
|
|
161
|
+
}
|
|
162
|
+
function formatBytes(value) {
|
|
163
|
+
const numeric = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
164
|
+
if (!Number.isFinite(numeric)) {
|
|
165
|
+
return "-";
|
|
166
|
+
}
|
|
167
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
168
|
+
let size = Math.max(numeric, 0);
|
|
169
|
+
let unitIndex = 0;
|
|
170
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
171
|
+
size /= 1024;
|
|
172
|
+
unitIndex += 1;
|
|
173
|
+
}
|
|
174
|
+
const digits = unitIndex === 0 ? 0 : 2;
|
|
175
|
+
return `${formatNumber(size, digits)} ${units[unitIndex]}`;
|
|
176
|
+
}
|
|
177
|
+
function formatDateTime(value) {
|
|
178
|
+
if (!value) {
|
|
179
|
+
return "-";
|
|
180
|
+
}
|
|
181
|
+
const date = value instanceof Date ? value : new Date(String(value));
|
|
182
|
+
if (Number.isNaN(date.getTime())) {
|
|
183
|
+
return String(value);
|
|
184
|
+
}
|
|
185
|
+
return date.toLocaleString();
|
|
186
|
+
}
|
|
187
|
+
function formatDurationSeconds(value) {
|
|
188
|
+
const numeric = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
189
|
+
if (!Number.isFinite(numeric) || numeric < 0) {
|
|
190
|
+
return "-";
|
|
191
|
+
}
|
|
192
|
+
const totalSeconds = Math.round(numeric);
|
|
193
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
194
|
+
const minutes = Math.floor(totalSeconds % 3600 / 60);
|
|
195
|
+
const seconds = totalSeconds % 60;
|
|
196
|
+
if (hours > 0) {
|
|
197
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
198
|
+
}
|
|
199
|
+
if (minutes > 0) {
|
|
200
|
+
return `${minutes}m ${seconds}s`;
|
|
201
|
+
}
|
|
202
|
+
return `${seconds}s`;
|
|
203
|
+
}
|
|
204
|
+
function formatBoolean(value) {
|
|
205
|
+
if (typeof value === "boolean") {
|
|
206
|
+
return value ? "Yes" : "No";
|
|
207
|
+
}
|
|
208
|
+
if (value === null || value === void 0) {
|
|
209
|
+
return "-";
|
|
210
|
+
}
|
|
211
|
+
const normalized = String(value).trim().toLowerCase();
|
|
212
|
+
if (["1", "on", "true", "yes"].includes(normalized)) {
|
|
213
|
+
return "Yes";
|
|
214
|
+
}
|
|
215
|
+
if (["0", "off", "false", "no"].includes(normalized)) {
|
|
216
|
+
return "No";
|
|
217
|
+
}
|
|
218
|
+
return String(value);
|
|
219
|
+
}
|
|
220
|
+
function formatValue(value) {
|
|
221
|
+
if (value === null || value === void 0 || value === "") {
|
|
222
|
+
return "-";
|
|
223
|
+
}
|
|
224
|
+
if (typeof value === "boolean") {
|
|
225
|
+
return value ? "Yes" : "No";
|
|
226
|
+
}
|
|
227
|
+
if (typeof value === "number") {
|
|
228
|
+
const digits = Number.isInteger(value) ? 0 : 2;
|
|
229
|
+
return formatNumber(value, digits);
|
|
230
|
+
}
|
|
231
|
+
if (Array.isArray(value)) {
|
|
232
|
+
return value.map((item) => formatValue(item)).join(", ");
|
|
233
|
+
}
|
|
234
|
+
return String(value);
|
|
235
|
+
}
|
|
236
|
+
|
|
58
237
|
var __defProp$3 = Object.defineProperty;
|
|
59
238
|
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
60
|
-
var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, key + "" , value);
|
|
239
|
+
var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
240
|
+
const IMPORTANT_VARIABLES = [
|
|
241
|
+
"max_connections",
|
|
242
|
+
"wait_timeout",
|
|
243
|
+
"interactive_timeout",
|
|
244
|
+
"innodb_buffer_pool_size",
|
|
245
|
+
"tmp_table_size",
|
|
246
|
+
"max_heap_table_size",
|
|
247
|
+
"sql_mode",
|
|
248
|
+
"read_only",
|
|
249
|
+
"super_read_only",
|
|
250
|
+
"performance_schema"
|
|
251
|
+
];
|
|
61
252
|
class MysqlInstanceInsightsAdapter extends BaseUnsupportedInstanceInsightsAdapter {
|
|
62
|
-
constructor(
|
|
253
|
+
constructor(params) {
|
|
63
254
|
super();
|
|
64
255
|
__publicField$3(this, "dbType");
|
|
65
|
-
this
|
|
256
|
+
__publicField$3(this, "adapter");
|
|
257
|
+
this.dbType = params.dbType;
|
|
258
|
+
this.adapter = params.adapter;
|
|
66
259
|
}
|
|
67
260
|
static async create(params, dbType = DatabaseClientType.MYSQL) {
|
|
68
|
-
|
|
261
|
+
const adapter = await getDatabaseSource({
|
|
262
|
+
...params,
|
|
263
|
+
type: dbType
|
|
264
|
+
});
|
|
265
|
+
return new MysqlInstanceInsightsAdapter({
|
|
266
|
+
dbType,
|
|
267
|
+
adapter
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
async getView() {
|
|
271
|
+
var _a;
|
|
272
|
+
const capturedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
273
|
+
const versionResult = await this.tryRawQuery(
|
|
274
|
+
"SELECT VERSION() AS version"
|
|
275
|
+
);
|
|
276
|
+
const version = versionResult.rows[0] ? String((_a = this.pick(versionResult.rows[0], "version")) != null ? _a : "") : null;
|
|
277
|
+
const [overview, sessions, configuration, replication] = await Promise.all([
|
|
278
|
+
this.buildOverviewSection(capturedAt, version),
|
|
279
|
+
this.buildSessionsSection(capturedAt),
|
|
280
|
+
this.buildConfigurationSection(capturedAt),
|
|
281
|
+
this.buildReplicationSection(capturedAt)
|
|
282
|
+
]);
|
|
283
|
+
const sessionActions = [
|
|
284
|
+
createActionCapability({
|
|
285
|
+
id: "kill-query",
|
|
286
|
+
label: "Kill Query",
|
|
287
|
+
state: "supported",
|
|
288
|
+
description: `Cancel the active ${this.databaseLabel} query for a selected session.`
|
|
289
|
+
}),
|
|
290
|
+
createActionCapability({
|
|
291
|
+
id: "kill-connection",
|
|
292
|
+
label: "Kill Connection",
|
|
293
|
+
state: "supported",
|
|
294
|
+
description: `Terminate a selected ${this.databaseLabel} session.`
|
|
295
|
+
})
|
|
296
|
+
];
|
|
297
|
+
const replicationActions = [
|
|
298
|
+
createActionCapability({
|
|
299
|
+
id: "replication-actions",
|
|
300
|
+
label: "Replication Actions",
|
|
301
|
+
state: "unsupported",
|
|
302
|
+
description: "Replication control actions are not exposed in phase 1."
|
|
303
|
+
})
|
|
304
|
+
];
|
|
305
|
+
return {
|
|
306
|
+
dbType: this.dbType,
|
|
307
|
+
title: "Instance Insights",
|
|
308
|
+
databaseName: null,
|
|
309
|
+
version,
|
|
310
|
+
capturedAt,
|
|
311
|
+
capabilities: createInsightsCapabilities({
|
|
312
|
+
supportsSessionInspection: true,
|
|
313
|
+
supportsLockInspection: true,
|
|
314
|
+
supportsConfiguration: true,
|
|
315
|
+
supportsReplication: true,
|
|
316
|
+
supportsCancelQuery: true,
|
|
317
|
+
supportsTerminateConnection: true
|
|
318
|
+
}),
|
|
319
|
+
actions: [...sessionActions, ...replicationActions],
|
|
320
|
+
sections: [
|
|
321
|
+
overview,
|
|
322
|
+
{
|
|
323
|
+
...sessions,
|
|
324
|
+
actions: sessionActions
|
|
325
|
+
},
|
|
326
|
+
configuration,
|
|
327
|
+
{
|
|
328
|
+
...replication,
|
|
329
|
+
actions: replicationActions
|
|
330
|
+
}
|
|
331
|
+
]
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
async cancelQuery(pid) {
|
|
335
|
+
this.ensurePositiveInteger(pid, "pid");
|
|
336
|
+
try {
|
|
337
|
+
await this.adapter.rawQuery(`KILL QUERY ${pid}`);
|
|
338
|
+
return {
|
|
339
|
+
success: true,
|
|
340
|
+
message: `Killed query for session ${pid}.`
|
|
341
|
+
};
|
|
342
|
+
} catch (error) {
|
|
343
|
+
throw createDatabaseHttpError(this.dbType, error);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
async terminateConnection(pid) {
|
|
347
|
+
this.ensurePositiveInteger(pid, "pid");
|
|
348
|
+
try {
|
|
349
|
+
await this.adapter.rawQuery(`KILL CONNECTION ${pid}`);
|
|
350
|
+
return {
|
|
351
|
+
success: true,
|
|
352
|
+
message: `Terminated connection ${pid}.`
|
|
353
|
+
};
|
|
354
|
+
} catch (error) {
|
|
355
|
+
throw createDatabaseHttpError(this.dbType, error);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
async buildOverviewSection(capturedAt, version) {
|
|
359
|
+
try {
|
|
360
|
+
const [statusRows, variableRows] = await Promise.all([
|
|
361
|
+
this.adapter.rawQuery("SHOW GLOBAL STATUS"),
|
|
362
|
+
this.adapter.rawQuery("SHOW GLOBAL VARIABLES")
|
|
363
|
+
]);
|
|
364
|
+
const statusMap = this.toKeyValueMap(statusRows);
|
|
365
|
+
const variableMap = this.toKeyValueMap(variableRows);
|
|
366
|
+
const createdTmpTables = this.toNumber(statusMap.created_tmp_tables);
|
|
367
|
+
const createdTmpDiskTables = this.toNumber(
|
|
368
|
+
statusMap.created_tmp_disk_tables
|
|
369
|
+
);
|
|
370
|
+
const rollbackCount = this.toNumber(statusMap.com_rollback);
|
|
371
|
+
const commitCount = this.toNumber(statusMap.com_commit);
|
|
372
|
+
const bufferReadRequests = this.toNumber(
|
|
373
|
+
statusMap.innodb_buffer_pool_read_requests
|
|
374
|
+
);
|
|
375
|
+
const bufferReads = this.toNumber(statusMap.innodb_buffer_pool_reads);
|
|
376
|
+
const tempDiskRatio = createdTmpTables > 0 ? createdTmpDiskTables / createdTmpTables * 100 : 0;
|
|
377
|
+
const rollbackRatio = commitCount + rollbackCount > 0 ? rollbackCount / (commitCount + rollbackCount) * 100 : 0;
|
|
378
|
+
const bufferHitRatio = bufferReadRequests > 0 ? (bufferReadRequests - bufferReads) / bufferReadRequests * 100 : 100;
|
|
379
|
+
return {
|
|
380
|
+
id: "overview",
|
|
381
|
+
title: "Overview",
|
|
382
|
+
subtitle: `${this.databaseLabel} health and workload snapshot`,
|
|
383
|
+
status: "ready",
|
|
384
|
+
capturedAt,
|
|
385
|
+
cards: [
|
|
386
|
+
{
|
|
387
|
+
id: "version",
|
|
388
|
+
label: "Version",
|
|
389
|
+
value: version || "-"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
id: "uptime",
|
|
393
|
+
label: "Uptime",
|
|
394
|
+
value: formatDurationSeconds(statusMap.uptime)
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
id: "threads-connected",
|
|
398
|
+
label: "Threads Connected",
|
|
399
|
+
value: formatNumber(statusMap.threads_connected),
|
|
400
|
+
helperText: `Running ${formatNumber(statusMap.threads_running)}`
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: "questions",
|
|
404
|
+
label: "Questions",
|
|
405
|
+
value: formatNumber(statusMap.questions),
|
|
406
|
+
helperText: `Connections ${formatNumber(statusMap.connections)}`
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
id: "slow-queries",
|
|
410
|
+
label: "Slow Queries",
|
|
411
|
+
value: formatNumber(statusMap.slow_queries),
|
|
412
|
+
helperText: `Aborted connects ${formatNumber(statusMap.aborted_connects)}`,
|
|
413
|
+
tone: this.toNumber(statusMap.slow_queries) > 0 ? "warning" : "default"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
id: "temp-disk-ratio",
|
|
417
|
+
label: "Temp Disk Ratio",
|
|
418
|
+
value: formatPercent(tempDiskRatio, 2),
|
|
419
|
+
helperText: `Tmp tables ${formatNumber(createdTmpDiskTables)} on disk`,
|
|
420
|
+
tone: tempDiskRatio > 20 ? "warning" : "default"
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
id: "buffer-hit-ratio",
|
|
424
|
+
label: "InnoDB Buffer Hit Ratio",
|
|
425
|
+
value: formatPercent(bufferHitRatio, 2),
|
|
426
|
+
helperText: `Read requests ${formatNumber(bufferReadRequests)}`
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
id: "rollback-ratio",
|
|
430
|
+
label: "Rollback Ratio",
|
|
431
|
+
value: formatPercent(rollbackRatio, 2),
|
|
432
|
+
helperText: `Commits ${formatNumber(commitCount)} \xB7 Rollbacks ${formatNumber(rollbackCount)}`
|
|
433
|
+
}
|
|
434
|
+
],
|
|
435
|
+
details: [
|
|
436
|
+
{
|
|
437
|
+
label: "Bytes Received",
|
|
438
|
+
value: formatBytes(statusMap.bytes_received)
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
label: "Bytes Sent",
|
|
442
|
+
value: formatBytes(statusMap.bytes_sent)
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
label: "Read Only",
|
|
446
|
+
value: formatBoolean(variableMap.read_only)
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
label: "Performance Schema",
|
|
450
|
+
value: formatBoolean(variableMap.performance_schema),
|
|
451
|
+
tone: formatBoolean(variableMap.performance_schema) === "No" ? "warning" : "default"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
label: "Version Comment",
|
|
455
|
+
value: formatValue(variableMap.version_comment)
|
|
456
|
+
}
|
|
457
|
+
]
|
|
458
|
+
};
|
|
459
|
+
} catch (error) {
|
|
460
|
+
return createUnavailableSection(
|
|
461
|
+
"overview",
|
|
462
|
+
"Overview",
|
|
463
|
+
`${this.databaseLabel} health and workload snapshot`,
|
|
464
|
+
this.getErrorMessage(error),
|
|
465
|
+
capturedAt
|
|
466
|
+
);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
async buildSessionsSection(capturedAt) {
|
|
470
|
+
const processList = await this.tryRawQuery(
|
|
471
|
+
"SHOW FULL PROCESSLIST"
|
|
472
|
+
);
|
|
473
|
+
if (processList.error) {
|
|
474
|
+
return createUnavailableSection(
|
|
475
|
+
"sessions-locks",
|
|
476
|
+
"Sessions & Locks",
|
|
477
|
+
"Current sessions, waits, and lock pressure",
|
|
478
|
+
processList.error,
|
|
479
|
+
capturedAt
|
|
480
|
+
);
|
|
481
|
+
}
|
|
482
|
+
const notes = [];
|
|
483
|
+
const tables = [
|
|
484
|
+
createTable({
|
|
485
|
+
id: `${this.dbType}-sessions`,
|
|
486
|
+
title: "Sessions",
|
|
487
|
+
emptyMessage: "No sessions were returned.",
|
|
488
|
+
rows: processList.rows.map((row) => ({
|
|
489
|
+
session_id: this.pick(row, "Id", "id"),
|
|
490
|
+
user: this.pick(row, "User", "user"),
|
|
491
|
+
host: this.pick(row, "Host", "host"),
|
|
492
|
+
database: this.pick(row, "db", "DB"),
|
|
493
|
+
command: this.pick(row, "Command", "command"),
|
|
494
|
+
state: this.pick(row, "State", "state"),
|
|
495
|
+
duration_seconds: this.pick(row, "Time", "time"),
|
|
496
|
+
sql_text: this.pick(row, "Info", "info")
|
|
497
|
+
}))
|
|
498
|
+
})
|
|
499
|
+
];
|
|
500
|
+
const lockWaits = await this.getLockWaitRows();
|
|
501
|
+
if (lockWaits.error) {
|
|
502
|
+
notes.push(lockWaits.error);
|
|
503
|
+
}
|
|
504
|
+
tables.push(
|
|
505
|
+
createTable({
|
|
506
|
+
id: `${this.dbType}-lock-waits`,
|
|
507
|
+
title: "Lock Waits",
|
|
508
|
+
emptyMessage: "No lock waits are currently visible.",
|
|
509
|
+
rows: lockWaits.rows
|
|
510
|
+
})
|
|
511
|
+
);
|
|
512
|
+
const metadataLocks = await this.getMetadataLockRows();
|
|
513
|
+
if (metadataLocks.error) {
|
|
514
|
+
notes.push(metadataLocks.error);
|
|
515
|
+
}
|
|
516
|
+
tables.push(
|
|
517
|
+
createTable({
|
|
518
|
+
id: `${this.dbType}-metadata-locks`,
|
|
519
|
+
title: "Metadata Locks",
|
|
520
|
+
emptyMessage: this.dbType === DatabaseClientType.MARIADB ? "Metadata lock info is unavailable unless the plugin is installed." : "Metadata lock details are unavailable unless instrumentation is enabled.",
|
|
521
|
+
rows: metadataLocks.rows
|
|
522
|
+
})
|
|
523
|
+
);
|
|
524
|
+
return {
|
|
525
|
+
id: "sessions-locks",
|
|
526
|
+
title: "Sessions & Locks",
|
|
527
|
+
subtitle: "Current sessions, waits, and lock pressure",
|
|
528
|
+
status: "ready",
|
|
529
|
+
capturedAt,
|
|
530
|
+
statusMessage: notes.length ? notes.join(" ") : null,
|
|
531
|
+
cards: [
|
|
532
|
+
{
|
|
533
|
+
id: "sessions-visible",
|
|
534
|
+
label: "Visible Sessions",
|
|
535
|
+
value: formatNumber(processList.rows.length)
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
id: "lock-waits",
|
|
539
|
+
label: "Lock Wait Rows",
|
|
540
|
+
value: formatNumber(lockWaits.rows.length)
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
id: "metadata-locks",
|
|
544
|
+
label: "Metadata Lock Rows",
|
|
545
|
+
value: formatNumber(metadataLocks.rows.length),
|
|
546
|
+
tone: metadataLocks.error ? "warning" : "default"
|
|
547
|
+
}
|
|
548
|
+
],
|
|
549
|
+
tables
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
async buildConfigurationSection(capturedAt) {
|
|
553
|
+
const variablesResult = await this.tryRawQuery(
|
|
554
|
+
"SHOW GLOBAL VARIABLES"
|
|
555
|
+
);
|
|
556
|
+
if (variablesResult.error) {
|
|
557
|
+
return createUnavailableSection(
|
|
558
|
+
"configuration",
|
|
559
|
+
"Configuration",
|
|
560
|
+
`${this.databaseLabel} system variables`,
|
|
561
|
+
variablesResult.error,
|
|
562
|
+
capturedAt
|
|
563
|
+
);
|
|
564
|
+
}
|
|
565
|
+
const importantNames = new Set(IMPORTANT_VARIABLES);
|
|
566
|
+
const variableRows = variablesResult.rows.map((row) => {
|
|
567
|
+
const name = String(
|
|
568
|
+
this.pick(row, "Variable_name", "VARIABLE_NAME", "variable_name") || ""
|
|
569
|
+
);
|
|
570
|
+
const value = this.pick(row, "Value", "VALUE", "value");
|
|
571
|
+
return {
|
|
572
|
+
name,
|
|
573
|
+
category: importantNames.has(name) ? "Important" : "General",
|
|
574
|
+
value
|
|
575
|
+
};
|
|
576
|
+
}).sort((left, right) => {
|
|
577
|
+
if (left.category !== right.category) {
|
|
578
|
+
return left.category === "Important" ? -1 : 1;
|
|
579
|
+
}
|
|
580
|
+
return left.name.localeCompare(right.name);
|
|
581
|
+
});
|
|
582
|
+
const variableMap = this.toKeyValueMap(variablesResult.rows);
|
|
583
|
+
return {
|
|
584
|
+
id: "configuration",
|
|
585
|
+
title: "Configuration",
|
|
586
|
+
subtitle: `${this.databaseLabel} system variables`,
|
|
587
|
+
status: "ready",
|
|
588
|
+
capturedAt,
|
|
589
|
+
searchable: true,
|
|
590
|
+
searchPlaceholder: "Search variable name or value...",
|
|
591
|
+
cards: [
|
|
592
|
+
{
|
|
593
|
+
id: "variables-total",
|
|
594
|
+
label: "Variables",
|
|
595
|
+
value: formatNumber(variableRows.length)
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
id: "max-connections",
|
|
599
|
+
label: "Max Connections",
|
|
600
|
+
value: formatNumber(variableMap.max_connections)
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
id: "read-only",
|
|
604
|
+
label: "Read Only",
|
|
605
|
+
value: formatBoolean(variableMap.read_only)
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
id: "performance-schema",
|
|
609
|
+
label: "Performance Schema",
|
|
610
|
+
value: formatBoolean(variableMap.performance_schema),
|
|
611
|
+
tone: formatBoolean(variableMap.performance_schema) === "No" ? "warning" : "default"
|
|
612
|
+
}
|
|
613
|
+
],
|
|
614
|
+
tables: [
|
|
615
|
+
createTable({
|
|
616
|
+
id: `${this.dbType}-configuration`,
|
|
617
|
+
title: "Variables",
|
|
618
|
+
emptyMessage: "No global variables were returned.",
|
|
619
|
+
rows: variableRows
|
|
620
|
+
})
|
|
621
|
+
]
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
async buildReplicationSection(capturedAt) {
|
|
625
|
+
const replicaStatus = await this.getReplicaStatusRows();
|
|
626
|
+
const sourceReplicas = await this.getConnectedReplicasRows();
|
|
627
|
+
const notes = [];
|
|
628
|
+
if (replicaStatus.error) {
|
|
629
|
+
notes.push(replicaStatus.error);
|
|
630
|
+
}
|
|
631
|
+
if (sourceReplicas.error) {
|
|
632
|
+
notes.push(sourceReplicas.error);
|
|
633
|
+
}
|
|
634
|
+
const primaryReplicaRow = replicaStatus.rows[0] || {};
|
|
635
|
+
const lagValue = this.pick(
|
|
636
|
+
primaryReplicaRow,
|
|
637
|
+
"seconds_behind_source",
|
|
638
|
+
"seconds_behind_master",
|
|
639
|
+
"seconds_behind_primary"
|
|
640
|
+
);
|
|
641
|
+
const hasReplicationData = replicaStatus.rows.length > 0 || sourceReplicas.rows.length > 0;
|
|
642
|
+
if (!hasReplicationData && notes.length === 0) {
|
|
643
|
+
notes.push(
|
|
644
|
+
`${this.databaseLabel} replication is not configured or the current server is only acting as a primary/source.`
|
|
645
|
+
);
|
|
646
|
+
}
|
|
647
|
+
return {
|
|
648
|
+
id: "replication",
|
|
649
|
+
title: "Replication",
|
|
650
|
+
subtitle: `${this.databaseLabel} replica and source replication health`,
|
|
651
|
+
status: "ready",
|
|
652
|
+
capturedAt,
|
|
653
|
+
statusMessage: notes.length ? notes.join(" ") : null,
|
|
654
|
+
cards: [
|
|
655
|
+
{
|
|
656
|
+
id: "replica-status-rows",
|
|
657
|
+
label: "Replica Status Rows",
|
|
658
|
+
value: formatNumber(replicaStatus.rows.length)
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
id: "connected-replicas",
|
|
662
|
+
label: "Connected Replicas",
|
|
663
|
+
value: formatNumber(sourceReplicas.rows.length)
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
id: "replication-lag",
|
|
667
|
+
label: "Reported Lag",
|
|
668
|
+
value: formatValue(lagValue)
|
|
669
|
+
}
|
|
670
|
+
],
|
|
671
|
+
tables: [
|
|
672
|
+
createTable({
|
|
673
|
+
id: `${this.dbType}-replica-status`,
|
|
674
|
+
title: "Replica Status",
|
|
675
|
+
emptyMessage: "No replica status rows were returned.",
|
|
676
|
+
rows: replicaStatus.rows
|
|
677
|
+
}),
|
|
678
|
+
createTable({
|
|
679
|
+
id: `${this.dbType}-connected-replicas`,
|
|
680
|
+
title: "Connected Replicas",
|
|
681
|
+
emptyMessage: "No connected replicas were returned.",
|
|
682
|
+
rows: sourceReplicas.rows
|
|
683
|
+
})
|
|
684
|
+
]
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
async getLockWaitRows() {
|
|
688
|
+
if (this.dbType === DatabaseClientType.MARIADB) {
|
|
689
|
+
const result = await this.tryRawQuery(`
|
|
690
|
+
SELECT
|
|
691
|
+
trx_id AS transaction_id,
|
|
692
|
+
trx_state AS transaction_state,
|
|
693
|
+
trx_requested_lock_id AS waiting_lock_id,
|
|
694
|
+
trx_wait_started AS wait_started,
|
|
695
|
+
trx_mysql_thread_id AS thread_id,
|
|
696
|
+
trx_query AS query_text
|
|
697
|
+
FROM information_schema.innodb_trx
|
|
698
|
+
ORDER BY trx_wait_started DESC
|
|
699
|
+
LIMIT 200
|
|
700
|
+
`);
|
|
701
|
+
return {
|
|
702
|
+
rows: result.rows.map((row) => this.normalizeRowKeys(row)),
|
|
703
|
+
error: result.error
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
const sysResult = await this.tryRawQuery(`
|
|
707
|
+
SELECT
|
|
708
|
+
waiting_pid,
|
|
709
|
+
waiting_query,
|
|
710
|
+
blocking_pid,
|
|
711
|
+
blocking_query,
|
|
712
|
+
locked_table,
|
|
713
|
+
locked_index,
|
|
714
|
+
wait_age_secs
|
|
715
|
+
FROM sys.innodb_lock_waits
|
|
716
|
+
ORDER BY wait_age_secs DESC
|
|
717
|
+
LIMIT 200
|
|
718
|
+
`);
|
|
719
|
+
if (!sysResult.error) {
|
|
720
|
+
return {
|
|
721
|
+
rows: sysResult.rows.map((row) => this.normalizeRowKeys(row)),
|
|
722
|
+
error: null
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
const perfSchemaResult = await this.tryRawQuery(`
|
|
726
|
+
SELECT
|
|
727
|
+
requesting_engine_transaction_id AS waiting_transaction_id,
|
|
728
|
+
blocking_engine_transaction_id AS blocking_transaction_id,
|
|
729
|
+
requesting_thread_id AS waiting_thread_id,
|
|
730
|
+
blocking_thread_id AS blocking_thread_id
|
|
731
|
+
FROM performance_schema.data_lock_waits
|
|
732
|
+
LIMIT 200
|
|
733
|
+
`);
|
|
734
|
+
return {
|
|
735
|
+
rows: perfSchemaResult.rows.map((row) => this.normalizeRowKeys(row)),
|
|
736
|
+
error: perfSchemaResult.error
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
async getMetadataLockRows() {
|
|
740
|
+
if (this.dbType === DatabaseClientType.MARIADB) {
|
|
741
|
+
const result2 = await this.tryRawQuery(`
|
|
742
|
+
SELECT
|
|
743
|
+
thread_id,
|
|
744
|
+
lock_mode,
|
|
745
|
+
lock_type,
|
|
746
|
+
table_schema AS schema_name,
|
|
747
|
+
table_name
|
|
748
|
+
FROM information_schema.metadata_lock_info
|
|
749
|
+
LIMIT 200
|
|
750
|
+
`);
|
|
751
|
+
return {
|
|
752
|
+
rows: result2.rows.map((row) => this.normalizeRowKeys(row)),
|
|
753
|
+
error: result2.error ? "Metadata lock details are unavailable unless the MariaDB metadata lock plugin is installed." : null
|
|
754
|
+
};
|
|
755
|
+
}
|
|
756
|
+
const result = await this.tryRawQuery(`
|
|
757
|
+
SELECT
|
|
758
|
+
owner_thread_id AS thread_id,
|
|
759
|
+
lock_type,
|
|
760
|
+
lock_status,
|
|
761
|
+
object_schema AS schema_name,
|
|
762
|
+
object_name AS table_name
|
|
763
|
+
FROM performance_schema.metadata_locks
|
|
764
|
+
WHERE object_type = 'TABLE'
|
|
765
|
+
LIMIT 200
|
|
766
|
+
`);
|
|
767
|
+
return {
|
|
768
|
+
rows: result.rows.map((row) => this.normalizeRowKeys(row)),
|
|
769
|
+
error: result.error ? "Metadata lock details are unavailable unless performance_schema metadata instrumentation is enabled." : null
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
async getReplicaStatusRows() {
|
|
773
|
+
const queries = this.dbType === DatabaseClientType.MARIADB ? [
|
|
774
|
+
"SHOW ALL REPLICAS STATUS",
|
|
775
|
+
"SHOW REPLICA STATUS",
|
|
776
|
+
"SHOW SLAVE STATUS"
|
|
777
|
+
] : ["SHOW REPLICA STATUS", "SHOW SLAVE STATUS"];
|
|
778
|
+
for (const query of queries) {
|
|
779
|
+
const result = await this.tryRawQuery(query);
|
|
780
|
+
if (!result.error) {
|
|
781
|
+
return {
|
|
782
|
+
rows: result.rows.map((row) => this.normalizeRowKeys(row)),
|
|
783
|
+
error: null
|
|
784
|
+
};
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
return {
|
|
788
|
+
rows: [],
|
|
789
|
+
error: `${this.databaseLabel} replication status is unavailable with the current privileges or server mode.`
|
|
790
|
+
};
|
|
791
|
+
}
|
|
792
|
+
async getConnectedReplicasRows() {
|
|
793
|
+
const queries = this.dbType === DatabaseClientType.MARIADB ? ["SHOW ALL REPLICAS STATUS"] : ["SHOW REPLICAS", "SHOW SLAVE HOSTS"];
|
|
794
|
+
for (const query of queries) {
|
|
795
|
+
const result = await this.tryRawQuery(query);
|
|
796
|
+
if (!result.error) {
|
|
797
|
+
return {
|
|
798
|
+
rows: result.rows.map((row) => this.normalizeRowKeys(row)),
|
|
799
|
+
error: null
|
|
800
|
+
};
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
return {
|
|
804
|
+
rows: [],
|
|
805
|
+
error: `${this.databaseLabel} source-side replica details are unavailable with the current privileges.`
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
async tryRawQuery(sql, bindings = []) {
|
|
809
|
+
try {
|
|
810
|
+
const rows = await this.adapter.rawQuery(sql, bindings);
|
|
811
|
+
return {
|
|
812
|
+
rows,
|
|
813
|
+
error: null
|
|
814
|
+
};
|
|
815
|
+
} catch (error) {
|
|
816
|
+
return {
|
|
817
|
+
rows: [],
|
|
818
|
+
error: this.getErrorMessage(error)
|
|
819
|
+
};
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
normalizeRowKeys(row) {
|
|
823
|
+
return Object.fromEntries(
|
|
824
|
+
Object.entries(row).map(([key, value]) => [this.toSnakeKey(key), value])
|
|
825
|
+
);
|
|
826
|
+
}
|
|
827
|
+
toKeyValueMap(rows) {
|
|
828
|
+
return rows.reduce((accumulator, row) => {
|
|
829
|
+
const key = this.pick(
|
|
830
|
+
row,
|
|
831
|
+
"Variable_name",
|
|
832
|
+
"VARIABLE_NAME",
|
|
833
|
+
"variable_name",
|
|
834
|
+
"name",
|
|
835
|
+
"NAME"
|
|
836
|
+
);
|
|
837
|
+
const value = this.pick(row, "Value", "VALUE", "value");
|
|
838
|
+
if (key !== null && key !== void 0) {
|
|
839
|
+
accumulator[String(key).toLowerCase()] = value;
|
|
840
|
+
}
|
|
841
|
+
return accumulator;
|
|
842
|
+
}, {});
|
|
843
|
+
}
|
|
844
|
+
pick(row, ...keys) {
|
|
845
|
+
for (const key of keys) {
|
|
846
|
+
if (key in row) {
|
|
847
|
+
return row[key];
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
return null;
|
|
851
|
+
}
|
|
852
|
+
toSnakeKey(value) {
|
|
853
|
+
return value.replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/[\s.-]+/g, "_").toLowerCase();
|
|
854
|
+
}
|
|
855
|
+
toNumber(value) {
|
|
856
|
+
const parsed = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
857
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
858
|
+
}
|
|
859
|
+
ensurePositiveInteger(value, field) {
|
|
860
|
+
if (!Number.isInteger(value) || value <= 0) {
|
|
861
|
+
throw createError({
|
|
862
|
+
statusCode: 400,
|
|
863
|
+
statusMessage: `${field} must be a positive integer`
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
getErrorMessage(error) {
|
|
868
|
+
if (error instanceof Error && error.message) {
|
|
869
|
+
return error.message;
|
|
870
|
+
}
|
|
871
|
+
const candidate = error;
|
|
872
|
+
return String(
|
|
873
|
+
(candidate == null ? void 0 : candidate.message) || (candidate == null ? void 0 : candidate.statusMessage) || "Unknown database error"
|
|
874
|
+
);
|
|
875
|
+
}
|
|
876
|
+
get databaseLabel() {
|
|
877
|
+
return this.dbType === DatabaseClientType.MARIADB ? "MariaDB" : "MySQL";
|
|
69
878
|
}
|
|
70
879
|
}
|
|
71
880
|
|
|
72
881
|
var __defProp$2 = Object.defineProperty;
|
|
73
882
|
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
74
|
-
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, key + "" , value);
|
|
883
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
75
884
|
class OracleInstanceInsightsAdapter extends BaseUnsupportedInstanceInsightsAdapter {
|
|
76
|
-
constructor() {
|
|
77
|
-
super(
|
|
885
|
+
constructor(adapter) {
|
|
886
|
+
super();
|
|
78
887
|
__publicField$2(this, "dbType", DatabaseClientType.ORACLE);
|
|
888
|
+
__publicField$2(this, "adapter");
|
|
889
|
+
this.adapter = adapter;
|
|
79
890
|
}
|
|
80
891
|
static async create(params) {
|
|
81
|
-
|
|
892
|
+
const adapter = await getDatabaseSource({
|
|
893
|
+
...params,
|
|
894
|
+
type: DatabaseClientType.ORACLE
|
|
895
|
+
});
|
|
896
|
+
return new OracleInstanceInsightsAdapter(adapter);
|
|
897
|
+
}
|
|
898
|
+
async getView() {
|
|
899
|
+
var _a, _b;
|
|
900
|
+
const capturedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
901
|
+
const [overview, sessions, memoryLimits, configuration, dataGuard] = await Promise.all([
|
|
902
|
+
this.buildOverviewSection(capturedAt),
|
|
903
|
+
this.buildSessionsSection(capturedAt),
|
|
904
|
+
this.buildMemoryLimitsSection(capturedAt),
|
|
905
|
+
this.buildConfigurationSection(capturedAt),
|
|
906
|
+
this.buildDataGuardSection(capturedAt)
|
|
907
|
+
]);
|
|
908
|
+
const version = (_b = (_a = overview.cards) == null ? void 0 : _a.find((card) => card.id === "version")) == null ? void 0 : _b.value;
|
|
909
|
+
return {
|
|
910
|
+
dbType: this.dbType,
|
|
911
|
+
title: "Instance Insights",
|
|
912
|
+
databaseName: null,
|
|
913
|
+
version: version && version !== "-" ? version : null,
|
|
914
|
+
capturedAt,
|
|
915
|
+
capabilities: createInsightsCapabilities({
|
|
916
|
+
supportsSessionInspection: true,
|
|
917
|
+
supportsLockInspection: true,
|
|
918
|
+
supportsConfiguration: true,
|
|
919
|
+
supportsDataGuard: true,
|
|
920
|
+
supportsMemoryLimits: true
|
|
921
|
+
}),
|
|
922
|
+
actions: [
|
|
923
|
+
createActionCapability({
|
|
924
|
+
id: "kill-session",
|
|
925
|
+
label: "Kill Session",
|
|
926
|
+
state: "unsupported",
|
|
927
|
+
description: "Oracle session termination is reserved for a later phase."
|
|
928
|
+
})
|
|
929
|
+
],
|
|
930
|
+
sections: [overview, sessions, memoryLimits, configuration, dataGuard]
|
|
931
|
+
};
|
|
932
|
+
}
|
|
933
|
+
async buildOverviewSection(capturedAt) {
|
|
934
|
+
const instanceResult = await this.tryRawQuery(`
|
|
935
|
+
SELECT
|
|
936
|
+
instance_name,
|
|
937
|
+
host_name,
|
|
938
|
+
version,
|
|
939
|
+
startup_time,
|
|
940
|
+
status AS instance_status,
|
|
941
|
+
active_state,
|
|
942
|
+
instance_role
|
|
943
|
+
FROM v$instance
|
|
944
|
+
`);
|
|
945
|
+
if (instanceResult.error || !instanceResult.rows[0]) {
|
|
946
|
+
return createUnavailableSection(
|
|
947
|
+
"overview",
|
|
948
|
+
"Overview",
|
|
949
|
+
"Oracle instance state and throughput metrics",
|
|
950
|
+
instanceResult.error || "No Oracle instance details were returned.",
|
|
951
|
+
capturedAt
|
|
952
|
+
);
|
|
953
|
+
}
|
|
954
|
+
const metricsResult = await this.tryRawQuery(`
|
|
955
|
+
SELECT metric_name, value, metric_unit
|
|
956
|
+
FROM v$sysmetric
|
|
957
|
+
WHERE metric_name IN (
|
|
958
|
+
'Logical Reads Per Sec',
|
|
959
|
+
'Physical Reads Per Sec',
|
|
960
|
+
'Executions Per Sec',
|
|
961
|
+
'Redo Generated Per Sec',
|
|
962
|
+
'User Calls Per Sec'
|
|
963
|
+
)
|
|
964
|
+
`);
|
|
965
|
+
const instance = this.normalizeRowKeys(instanceResult.rows[0]);
|
|
966
|
+
const metrics = metricsResult.rows.map((row) => this.normalizeRowKeys(row));
|
|
967
|
+
const metricMap = metrics.reduce(
|
|
968
|
+
(accumulator, row) => {
|
|
969
|
+
const metricName = String(this.pick(row, "metric_name") || "");
|
|
970
|
+
accumulator[metricName] = this.pick(row, "value");
|
|
971
|
+
return accumulator;
|
|
972
|
+
},
|
|
973
|
+
{}
|
|
974
|
+
);
|
|
975
|
+
return {
|
|
976
|
+
id: "overview",
|
|
977
|
+
title: "Overview",
|
|
978
|
+
subtitle: "Oracle instance state and throughput metrics",
|
|
979
|
+
status: "ready",
|
|
980
|
+
capturedAt,
|
|
981
|
+
statusMessage: metricsResult.error,
|
|
982
|
+
cards: [
|
|
983
|
+
{
|
|
984
|
+
id: "instance-name",
|
|
985
|
+
label: "Instance",
|
|
986
|
+
value: formatValue(this.pick(instance, "instance_name"))
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
id: "status",
|
|
990
|
+
label: "Status",
|
|
991
|
+
value: formatValue(this.pick(instance, "instance_status"))
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
id: "active-state",
|
|
995
|
+
label: "Active State",
|
|
996
|
+
value: formatValue(this.pick(instance, "active_state"))
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
id: "role",
|
|
1000
|
+
label: "Instance Role",
|
|
1001
|
+
value: formatValue(this.pick(instance, "instance_role"))
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
id: "version",
|
|
1005
|
+
label: "Version",
|
|
1006
|
+
value: formatValue(this.pick(instance, "version"))
|
|
1007
|
+
},
|
|
1008
|
+
{
|
|
1009
|
+
id: "logical-reads",
|
|
1010
|
+
label: "Logical Reads/Sec",
|
|
1011
|
+
value: formatNumber(metricMap["Logical Reads Per Sec"], 2)
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
id: "physical-reads",
|
|
1015
|
+
label: "Physical Reads/Sec",
|
|
1016
|
+
value: formatNumber(metricMap["Physical Reads Per Sec"], 2)
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
id: "executions",
|
|
1020
|
+
label: "Executions/Sec",
|
|
1021
|
+
value: formatNumber(metricMap["Executions Per Sec"], 2)
|
|
1022
|
+
}
|
|
1023
|
+
],
|
|
1024
|
+
details: [
|
|
1025
|
+
{
|
|
1026
|
+
label: "Host Name",
|
|
1027
|
+
value: formatValue(this.pick(instance, "host_name"))
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
label: "Startup Time",
|
|
1031
|
+
value: formatDateTime(this.pick(instance, "startup_time"))
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
label: "Redo Generated/Sec",
|
|
1035
|
+
value: formatNumber(metricMap["Redo Generated Per Sec"], 2)
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
label: "User Calls/Sec",
|
|
1039
|
+
value: formatNumber(metricMap["User Calls Per Sec"], 2)
|
|
1040
|
+
}
|
|
1041
|
+
],
|
|
1042
|
+
tables: [
|
|
1043
|
+
createTable({
|
|
1044
|
+
id: "oracle-throughput-metrics",
|
|
1045
|
+
title: "Throughput Metrics",
|
|
1046
|
+
emptyMessage: "No throughput metrics were returned.",
|
|
1047
|
+
rows: metrics
|
|
1048
|
+
})
|
|
1049
|
+
]
|
|
1050
|
+
};
|
|
1051
|
+
}
|
|
1052
|
+
async buildSessionsSection(capturedAt) {
|
|
1053
|
+
const sessionsResult = await this.tryRawQuery(`
|
|
1054
|
+
SELECT
|
|
1055
|
+
sid,
|
|
1056
|
+
serial# AS serial_number,
|
|
1057
|
+
username,
|
|
1058
|
+
machine,
|
|
1059
|
+
program,
|
|
1060
|
+
module,
|
|
1061
|
+
event,
|
|
1062
|
+
wait_class,
|
|
1063
|
+
status
|
|
1064
|
+
FROM v$session
|
|
1065
|
+
WHERE type = 'USER'
|
|
1066
|
+
AND ROWNUM <= 200
|
|
1067
|
+
`);
|
|
1068
|
+
if (sessionsResult.error) {
|
|
1069
|
+
return createUnavailableSection(
|
|
1070
|
+
"sessions-locks",
|
|
1071
|
+
"Sessions & Locks",
|
|
1072
|
+
"Oracle sessions, waits, and lock visibility",
|
|
1073
|
+
sessionsResult.error,
|
|
1074
|
+
capturedAt
|
|
1075
|
+
);
|
|
1076
|
+
}
|
|
1077
|
+
const locksResult = await this.tryRawQuery(`
|
|
1078
|
+
SELECT
|
|
1079
|
+
sid,
|
|
1080
|
+
type AS lock_type,
|
|
1081
|
+
lmode AS held_mode,
|
|
1082
|
+
request AS requested_mode,
|
|
1083
|
+
block AS blocking_flag,
|
|
1084
|
+
ctime AS lock_age_seconds
|
|
1085
|
+
FROM v$lock
|
|
1086
|
+
WHERE ROWNUM <= 200
|
|
1087
|
+
`);
|
|
1088
|
+
return {
|
|
1089
|
+
id: "sessions-locks",
|
|
1090
|
+
title: "Sessions & Locks",
|
|
1091
|
+
subtitle: "Oracle sessions, waits, and lock visibility",
|
|
1092
|
+
status: "ready",
|
|
1093
|
+
capturedAt,
|
|
1094
|
+
statusMessage: locksResult.error,
|
|
1095
|
+
cards: [
|
|
1096
|
+
{
|
|
1097
|
+
id: "session-count",
|
|
1098
|
+
label: "Visible Sessions",
|
|
1099
|
+
value: formatNumber(sessionsResult.rows.length)
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
id: "lock-count",
|
|
1103
|
+
label: "Visible Locks",
|
|
1104
|
+
value: formatNumber(locksResult.rows.length)
|
|
1105
|
+
}
|
|
1106
|
+
],
|
|
1107
|
+
tables: [
|
|
1108
|
+
createTable({
|
|
1109
|
+
id: "oracle-sessions",
|
|
1110
|
+
title: "Sessions",
|
|
1111
|
+
emptyMessage: "No Oracle sessions were returned.",
|
|
1112
|
+
rows: sessionsResult.rows.map((row) => this.normalizeRowKeys(row))
|
|
1113
|
+
}),
|
|
1114
|
+
createTable({
|
|
1115
|
+
id: "oracle-locks",
|
|
1116
|
+
title: "Locks",
|
|
1117
|
+
emptyMessage: "No Oracle locks were returned.",
|
|
1118
|
+
rows: locksResult.rows.map((row) => this.normalizeRowKeys(row))
|
|
1119
|
+
})
|
|
1120
|
+
]
|
|
1121
|
+
};
|
|
1122
|
+
}
|
|
1123
|
+
async buildMemoryLimitsSection(capturedAt) {
|
|
1124
|
+
const [sgaResult, pgaResult, limitResult] = await Promise.all([
|
|
1125
|
+
this.tryRawQuery(`
|
|
1126
|
+
SELECT name, value AS bytes
|
|
1127
|
+
FROM v$sga
|
|
1128
|
+
`),
|
|
1129
|
+
this.tryRawQuery(`
|
|
1130
|
+
SELECT name, value, unit
|
|
1131
|
+
FROM v$pgastat
|
|
1132
|
+
WHERE name IN (
|
|
1133
|
+
'aggregate PGA target parameter',
|
|
1134
|
+
'total PGA allocated',
|
|
1135
|
+
'maximum PGA allocated'
|
|
1136
|
+
)
|
|
1137
|
+
`),
|
|
1138
|
+
this.tryRawQuery(`
|
|
1139
|
+
SELECT
|
|
1140
|
+
resource_name,
|
|
1141
|
+
current_utilization,
|
|
1142
|
+
max_utilization,
|
|
1143
|
+
limit_value
|
|
1144
|
+
FROM v$resource_limit
|
|
1145
|
+
WHERE resource_name IN ('sessions', 'processes', 'transactions')
|
|
1146
|
+
`)
|
|
1147
|
+
]);
|
|
1148
|
+
if (sgaResult.error && pgaResult.error && limitResult.error) {
|
|
1149
|
+
return createUnavailableSection(
|
|
1150
|
+
"memory-limits",
|
|
1151
|
+
"Memory & Limits",
|
|
1152
|
+
"SGA, PGA, and resource ceiling visibility",
|
|
1153
|
+
sgaResult.error || pgaResult.error || limitResult.error || "Oracle memory views are unavailable.",
|
|
1154
|
+
capturedAt
|
|
1155
|
+
);
|
|
1156
|
+
}
|
|
1157
|
+
const sgaRows = sgaResult.rows.map((row) => this.normalizeRowKeys(row));
|
|
1158
|
+
const pgaRows = pgaResult.rows.map((row) => this.normalizeRowKeys(row));
|
|
1159
|
+
const limitRows = limitResult.rows.map((row) => this.normalizeRowKeys(row));
|
|
1160
|
+
const totalSgaBytes = sgaRows.reduce(
|
|
1161
|
+
(sum, row) => sum + this.toNumber(this.pick(row, "bytes")),
|
|
1162
|
+
0
|
|
1163
|
+
);
|
|
1164
|
+
const totalPgaAllocated = pgaRows.find(
|
|
1165
|
+
(row) => this.pick(row, "name") === "total PGA allocated"
|
|
1166
|
+
);
|
|
1167
|
+
const sessionsLimit = limitRows.find(
|
|
1168
|
+
(row) => this.pick(row, "resource_name") === "sessions"
|
|
1169
|
+
);
|
|
1170
|
+
const sessionsLimitValue = this.pick(sessionsLimit || {}, "limit_value");
|
|
1171
|
+
const sessionsUsage = this.toNumber(
|
|
1172
|
+
this.pick(sessionsLimit || {}, "current_utilization")
|
|
1173
|
+
);
|
|
1174
|
+
const sessionsUsagePercent = this.toNumber(sessionsLimitValue) > 0 ? sessionsUsage / this.toNumber(sessionsLimitValue) * 100 : 0;
|
|
1175
|
+
return {
|
|
1176
|
+
id: "memory-limits",
|
|
1177
|
+
title: "Memory & Limits",
|
|
1178
|
+
subtitle: "SGA, PGA, and resource ceiling visibility",
|
|
1179
|
+
status: "ready",
|
|
1180
|
+
capturedAt,
|
|
1181
|
+
statusMessage: [sgaResult.error, pgaResult.error, limitResult.error].filter(Boolean).join(" "),
|
|
1182
|
+
cards: [
|
|
1183
|
+
{
|
|
1184
|
+
id: "total-sga",
|
|
1185
|
+
label: "Total SGA",
|
|
1186
|
+
value: formatBytes(totalSgaBytes)
|
|
1187
|
+
},
|
|
1188
|
+
{
|
|
1189
|
+
id: "total-pga-allocated",
|
|
1190
|
+
label: "Total PGA Allocated",
|
|
1191
|
+
value: formatBytes(this.pick(totalPgaAllocated || {}, "value"))
|
|
1192
|
+
},
|
|
1193
|
+
{
|
|
1194
|
+
id: "sessions-usage",
|
|
1195
|
+
label: "Sessions Usage",
|
|
1196
|
+
value: formatPercent(sessionsUsagePercent, 2),
|
|
1197
|
+
helperText: `${formatNumber(sessionsUsage)} of ${formatValue(sessionsLimitValue)}`
|
|
1198
|
+
}
|
|
1199
|
+
],
|
|
1200
|
+
tables: [
|
|
1201
|
+
createTable({
|
|
1202
|
+
id: "oracle-sga",
|
|
1203
|
+
title: "SGA Components",
|
|
1204
|
+
emptyMessage: "No SGA component data was returned.",
|
|
1205
|
+
rows: sgaRows.map((row) => ({
|
|
1206
|
+
name: this.pick(row, "name"),
|
|
1207
|
+
bytes: formatBytes(this.pick(row, "bytes"))
|
|
1208
|
+
}))
|
|
1209
|
+
}),
|
|
1210
|
+
createTable({
|
|
1211
|
+
id: "oracle-pga",
|
|
1212
|
+
title: "PGA Statistics",
|
|
1213
|
+
emptyMessage: "No PGA statistics were returned.",
|
|
1214
|
+
rows: pgaRows.map((row) => ({
|
|
1215
|
+
name: this.pick(row, "name"),
|
|
1216
|
+
value: formatValue(this.pick(row, "value")),
|
|
1217
|
+
unit: this.pick(row, "unit")
|
|
1218
|
+
}))
|
|
1219
|
+
}),
|
|
1220
|
+
createTable({
|
|
1221
|
+
id: "oracle-resource-limits",
|
|
1222
|
+
title: "Resource Limits",
|
|
1223
|
+
emptyMessage: "No resource limit rows were returned.",
|
|
1224
|
+
rows: limitRows
|
|
1225
|
+
})
|
|
1226
|
+
]
|
|
1227
|
+
};
|
|
1228
|
+
}
|
|
1229
|
+
async buildConfigurationSection(capturedAt) {
|
|
1230
|
+
const configurationResult = await this.tryRawQuery(`
|
|
1231
|
+
SELECT
|
|
1232
|
+
name,
|
|
1233
|
+
display_value,
|
|
1234
|
+
isdefault,
|
|
1235
|
+
ismodified,
|
|
1236
|
+
issys_modifiable,
|
|
1237
|
+
isdeprecated,
|
|
1238
|
+
description
|
|
1239
|
+
FROM v$system_parameter
|
|
1240
|
+
WHERE ROWNUM <= 1000
|
|
1241
|
+
ORDER BY name
|
|
1242
|
+
`);
|
|
1243
|
+
if (configurationResult.error) {
|
|
1244
|
+
return createUnavailableSection(
|
|
1245
|
+
"configuration",
|
|
1246
|
+
"Configuration",
|
|
1247
|
+
"Oracle system parameter visibility",
|
|
1248
|
+
configurationResult.error,
|
|
1249
|
+
capturedAt
|
|
1250
|
+
);
|
|
1251
|
+
}
|
|
1252
|
+
const rows = configurationResult.rows.map(
|
|
1253
|
+
(row) => this.normalizeRowKeys(row)
|
|
1254
|
+
);
|
|
1255
|
+
return {
|
|
1256
|
+
id: "configuration",
|
|
1257
|
+
title: "Configuration",
|
|
1258
|
+
subtitle: "Oracle system parameter visibility",
|
|
1259
|
+
status: "ready",
|
|
1260
|
+
capturedAt,
|
|
1261
|
+
searchable: true,
|
|
1262
|
+
searchPlaceholder: "Search parameter name or description...",
|
|
1263
|
+
cards: [
|
|
1264
|
+
{
|
|
1265
|
+
id: "parameter-count",
|
|
1266
|
+
label: "Parameters",
|
|
1267
|
+
value: formatNumber(rows.length)
|
|
1268
|
+
}
|
|
1269
|
+
],
|
|
1270
|
+
tables: [
|
|
1271
|
+
createTable({
|
|
1272
|
+
id: "oracle-configuration",
|
|
1273
|
+
title: "System Parameters",
|
|
1274
|
+
emptyMessage: "No system parameters were returned.",
|
|
1275
|
+
rows
|
|
1276
|
+
})
|
|
1277
|
+
]
|
|
1278
|
+
};
|
|
1279
|
+
}
|
|
1280
|
+
async buildDataGuardSection(capturedAt) {
|
|
1281
|
+
const [statsResult, archiveResult] = await Promise.all([
|
|
1282
|
+
this.tryRawQuery(`
|
|
1283
|
+
SELECT name, value, unit
|
|
1284
|
+
FROM v$dataguard_stats
|
|
1285
|
+
`),
|
|
1286
|
+
this.tryRawQuery(`
|
|
1287
|
+
SELECT
|
|
1288
|
+
dest_id,
|
|
1289
|
+
status,
|
|
1290
|
+
destination,
|
|
1291
|
+
target,
|
|
1292
|
+
db_unique_name,
|
|
1293
|
+
archiver,
|
|
1294
|
+
process,
|
|
1295
|
+
error,
|
|
1296
|
+
recovery_mode,
|
|
1297
|
+
protection_mode
|
|
1298
|
+
FROM v$archive_dest_status
|
|
1299
|
+
WHERE status <> 'INACTIVE'
|
|
1300
|
+
AND ROWNUM <= 200
|
|
1301
|
+
`)
|
|
1302
|
+
]);
|
|
1303
|
+
const statsRows = statsResult.rows.map((row) => this.normalizeRowKeys(row));
|
|
1304
|
+
const archiveRows = archiveResult.rows.map(
|
|
1305
|
+
(row) => this.normalizeRowKeys(row)
|
|
1306
|
+
);
|
|
1307
|
+
if (statsRows.length === 0 && archiveRows.length === 0 && !statsResult.error && !archiveResult.error) {
|
|
1308
|
+
return createUnavailableSection(
|
|
1309
|
+
"data-guard",
|
|
1310
|
+
"Data Guard",
|
|
1311
|
+
"Standby and archive destination health",
|
|
1312
|
+
"Data Guard metrics are empty. This database may not be running in a Data Guard topology.",
|
|
1313
|
+
capturedAt
|
|
1314
|
+
);
|
|
1315
|
+
}
|
|
1316
|
+
if (statsResult.error && archiveResult.error) {
|
|
1317
|
+
return createUnavailableSection(
|
|
1318
|
+
"data-guard",
|
|
1319
|
+
"Data Guard",
|
|
1320
|
+
"Standby and archive destination health",
|
|
1321
|
+
`${statsResult.error} ${archiveResult.error}`.trim(),
|
|
1322
|
+
capturedAt
|
|
1323
|
+
);
|
|
1324
|
+
}
|
|
1325
|
+
const applyLagRow = statsRows.find(
|
|
1326
|
+
(row) => this.pick(row, "name") === "apply lag"
|
|
1327
|
+
);
|
|
1328
|
+
return {
|
|
1329
|
+
id: "data-guard",
|
|
1330
|
+
title: "Data Guard",
|
|
1331
|
+
subtitle: "Standby and archive destination health",
|
|
1332
|
+
status: "ready",
|
|
1333
|
+
capturedAt,
|
|
1334
|
+
statusMessage: [statsResult.error, archiveResult.error].filter(Boolean).join(" "),
|
|
1335
|
+
cards: [
|
|
1336
|
+
{
|
|
1337
|
+
id: "apply-lag",
|
|
1338
|
+
label: "Apply Lag",
|
|
1339
|
+
value: formatValue(this.pick(applyLagRow || {}, "value"))
|
|
1340
|
+
},
|
|
1341
|
+
{
|
|
1342
|
+
id: "destinations",
|
|
1343
|
+
label: "Archive Destinations",
|
|
1344
|
+
value: formatNumber(archiveRows.length)
|
|
1345
|
+
}
|
|
1346
|
+
],
|
|
1347
|
+
tables: [
|
|
1348
|
+
createTable({
|
|
1349
|
+
id: "oracle-dataguard-stats",
|
|
1350
|
+
title: "Data Guard Stats",
|
|
1351
|
+
emptyMessage: "No Data Guard stats were returned.",
|
|
1352
|
+
rows: statsRows
|
|
1353
|
+
}),
|
|
1354
|
+
createTable({
|
|
1355
|
+
id: "oracle-archive-destinations",
|
|
1356
|
+
title: "Archive Destination Status",
|
|
1357
|
+
emptyMessage: "No archive destination rows were returned.",
|
|
1358
|
+
rows: archiveRows
|
|
1359
|
+
})
|
|
1360
|
+
]
|
|
1361
|
+
};
|
|
1362
|
+
}
|
|
1363
|
+
async tryRawQuery(sql, bindings = []) {
|
|
1364
|
+
try {
|
|
1365
|
+
const rows = await this.adapter.rawQuery(sql, bindings);
|
|
1366
|
+
return {
|
|
1367
|
+
rows,
|
|
1368
|
+
error: null
|
|
1369
|
+
};
|
|
1370
|
+
} catch (error) {
|
|
1371
|
+
return {
|
|
1372
|
+
rows: [],
|
|
1373
|
+
error: this.getErrorMessage(error)
|
|
1374
|
+
};
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
normalizeRowKeys(row) {
|
|
1378
|
+
return Object.fromEntries(
|
|
1379
|
+
Object.entries(row).map(([key, value]) => [this.toSnakeKey(key), value])
|
|
1380
|
+
);
|
|
1381
|
+
}
|
|
1382
|
+
pick(row, ...keys) {
|
|
1383
|
+
for (const key of keys) {
|
|
1384
|
+
if (key in row) {
|
|
1385
|
+
return row[key];
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
return null;
|
|
1389
|
+
}
|
|
1390
|
+
toSnakeKey(value) {
|
|
1391
|
+
return value.replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/[\s.-]+/g, "_").toLowerCase();
|
|
1392
|
+
}
|
|
1393
|
+
toNumber(value) {
|
|
1394
|
+
const parsed = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
1395
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
1396
|
+
}
|
|
1397
|
+
getErrorMessage(error) {
|
|
1398
|
+
if (error instanceof Error && error.message) {
|
|
1399
|
+
return error.message;
|
|
1400
|
+
}
|
|
1401
|
+
const candidate = error;
|
|
1402
|
+
return String(
|
|
1403
|
+
(candidate == null ? void 0 : candidate.message) || (candidate == null ? void 0 : candidate.statusMessage) || "Unknown database error"
|
|
1404
|
+
);
|
|
82
1405
|
}
|
|
83
1406
|
}
|
|
84
1407
|
|
|
@@ -106,6 +1429,266 @@ class PostgresInstanceInsightsAdapter extends BaseDomainAdapter {
|
|
|
106
1429
|
cacheKey
|
|
107
1430
|
});
|
|
108
1431
|
}
|
|
1432
|
+
async getView() {
|
|
1433
|
+
const [dashboard, state, configuration, replication] = await Promise.all([
|
|
1434
|
+
this.getDashboard(),
|
|
1435
|
+
this.getState(),
|
|
1436
|
+
this.getConfiguration(),
|
|
1437
|
+
this.getReplication()
|
|
1438
|
+
]);
|
|
1439
|
+
const sessionActions = [
|
|
1440
|
+
createActionCapability({
|
|
1441
|
+
id: "cancel-query",
|
|
1442
|
+
label: "Cancel Query",
|
|
1443
|
+
state: "supported",
|
|
1444
|
+
description: "Cancel the selected backend query."
|
|
1445
|
+
}),
|
|
1446
|
+
createActionCapability({
|
|
1447
|
+
id: "terminate-connection",
|
|
1448
|
+
label: "Terminate Connection",
|
|
1449
|
+
state: "supported",
|
|
1450
|
+
description: "Terminate the selected backend connection."
|
|
1451
|
+
})
|
|
1452
|
+
];
|
|
1453
|
+
const replicationActions = [
|
|
1454
|
+
createActionCapability({
|
|
1455
|
+
id: "drop-replication-slot",
|
|
1456
|
+
label: "Drop Replication Slot",
|
|
1457
|
+
state: "supported",
|
|
1458
|
+
description: "Drop stale replication slots from SQL context."
|
|
1459
|
+
}),
|
|
1460
|
+
createActionCapability({
|
|
1461
|
+
id: "toggle-slot-status",
|
|
1462
|
+
label: "Toggle Slot Status",
|
|
1463
|
+
state: "conditional",
|
|
1464
|
+
description: "Turning logical slots on is supported, while physical slot activation depends on replica clients."
|
|
1465
|
+
})
|
|
1466
|
+
];
|
|
1467
|
+
return {
|
|
1468
|
+
dbType: this.dbType,
|
|
1469
|
+
title: "Instance Insights",
|
|
1470
|
+
databaseName: null,
|
|
1471
|
+
version: dashboard.version || null,
|
|
1472
|
+
capturedAt: dashboard.capturedAt,
|
|
1473
|
+
capabilities: createInsightsCapabilities({
|
|
1474
|
+
supportsSessionInspection: true,
|
|
1475
|
+
supportsLockInspection: true,
|
|
1476
|
+
supportsConfiguration: true,
|
|
1477
|
+
supportsReplication: true,
|
|
1478
|
+
supportsCancelQuery: true,
|
|
1479
|
+
supportsTerminateConnection: true,
|
|
1480
|
+
supportsReplicationActions: true
|
|
1481
|
+
}),
|
|
1482
|
+
actions: [...sessionActions, ...replicationActions],
|
|
1483
|
+
sections: [
|
|
1484
|
+
{
|
|
1485
|
+
id: "overview",
|
|
1486
|
+
title: "Overview",
|
|
1487
|
+
subtitle: "PostgreSQL activity and workload summary",
|
|
1488
|
+
status: "ready",
|
|
1489
|
+
capturedAt: dashboard.capturedAt,
|
|
1490
|
+
cards: [
|
|
1491
|
+
{
|
|
1492
|
+
id: "version",
|
|
1493
|
+
label: "Version",
|
|
1494
|
+
value: dashboard.version || "-"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
id: "sessions-total",
|
|
1498
|
+
label: "Total Sessions",
|
|
1499
|
+
value: formatNumber(dashboard.sessions.total),
|
|
1500
|
+
helperText: `Active ${formatNumber(dashboard.sessions.active)} \xB7 Idle ${formatNumber(dashboard.sessions.idle)}`,
|
|
1501
|
+
tone: dashboard.sessions.exceedsThreshold ? "warning" : "default"
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
id: "tps",
|
|
1505
|
+
label: "TPS",
|
|
1506
|
+
value: formatNumber(dashboard.transactions.tps, 2),
|
|
1507
|
+
helperText: `Commits ${formatNumber(dashboard.transactions.commitsPerSec, 2)}/s \xB7 Rollbacks ${formatNumber(dashboard.transactions.rollbacksPerSec, 2)}/s`
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
id: "buffer-hit-ratio",
|
|
1511
|
+
label: "Buffer Hit Ratio",
|
|
1512
|
+
value: formatPercent(dashboard.blockIO.bufferHitRatio, 2),
|
|
1513
|
+
helperText: `Reads ${formatNumber(dashboard.blockIO.readsPerSec, 2)}/s \xB7 Hits ${formatNumber(dashboard.blockIO.hitsPerSec, 2)}/s`
|
|
1514
|
+
}
|
|
1515
|
+
],
|
|
1516
|
+
details: [
|
|
1517
|
+
{
|
|
1518
|
+
label: "Sampling Interval",
|
|
1519
|
+
value: `${formatNumber(dashboard.intervalSeconds)}s`
|
|
1520
|
+
},
|
|
1521
|
+
{
|
|
1522
|
+
label: "Connection Usage",
|
|
1523
|
+
value: `${formatPercent(dashboard.sessions.usagePercent, 2)} of max_connections`,
|
|
1524
|
+
tone: dashboard.sessions.exceedsThreshold ? "warning" : "default"
|
|
1525
|
+
},
|
|
1526
|
+
{
|
|
1527
|
+
label: "Total Tuples Returned",
|
|
1528
|
+
value: formatNumber(dashboard.tuples.totalReturned)
|
|
1529
|
+
},
|
|
1530
|
+
{
|
|
1531
|
+
label: "Total Tuples Fetched",
|
|
1532
|
+
value: formatNumber(dashboard.tuples.totalFetched)
|
|
1533
|
+
}
|
|
1534
|
+
]
|
|
1535
|
+
},
|
|
1536
|
+
{
|
|
1537
|
+
id: "sessions-locks",
|
|
1538
|
+
title: "Sessions & Locks",
|
|
1539
|
+
subtitle: "Active sessions, locks, and prepared transactions",
|
|
1540
|
+
status: "ready",
|
|
1541
|
+
capturedAt: state.capturedAt,
|
|
1542
|
+
actions: sessionActions,
|
|
1543
|
+
tables: [
|
|
1544
|
+
createTable({
|
|
1545
|
+
id: "postgres-sessions",
|
|
1546
|
+
title: "Sessions",
|
|
1547
|
+
emptyMessage: "No active sessions were returned.",
|
|
1548
|
+
rows: state.sessions.map((row) => ({
|
|
1549
|
+
pid: row.pid,
|
|
1550
|
+
user: row.user,
|
|
1551
|
+
application: row.application,
|
|
1552
|
+
client: row.client,
|
|
1553
|
+
state: row.state,
|
|
1554
|
+
wait_event: row.waitEvent,
|
|
1555
|
+
blocking_pids: row.blockingPids.join(", "),
|
|
1556
|
+
backend_start: formatDateTime(row.backendStart),
|
|
1557
|
+
transaction_start: formatDateTime(row.transactionStart),
|
|
1558
|
+
query_start: formatDateTime(row.queryStart),
|
|
1559
|
+
duration: formatDurationSeconds(row.durationSeconds),
|
|
1560
|
+
sql: row.sql
|
|
1561
|
+
}))
|
|
1562
|
+
}),
|
|
1563
|
+
createTable({
|
|
1564
|
+
id: "postgres-locks",
|
|
1565
|
+
title: "Locks",
|
|
1566
|
+
emptyMessage: "No locks are currently visible.",
|
|
1567
|
+
rows: state.locks.map((row) => ({
|
|
1568
|
+
pid: row.pid,
|
|
1569
|
+
lock_type: row.lockType,
|
|
1570
|
+
target_relation: row.targetRelation,
|
|
1571
|
+
mode: row.mode,
|
|
1572
|
+
granted: row.granted,
|
|
1573
|
+
state: row.state,
|
|
1574
|
+
user: row.user,
|
|
1575
|
+
sql: row.sql
|
|
1576
|
+
}))
|
|
1577
|
+
}),
|
|
1578
|
+
createTable({
|
|
1579
|
+
id: "postgres-prepared-transactions",
|
|
1580
|
+
title: "Prepared Transactions",
|
|
1581
|
+
emptyMessage: "No prepared transactions were returned.",
|
|
1582
|
+
rows: state.preparedTransactions.map((row) => ({
|
|
1583
|
+
transaction: row.transaction,
|
|
1584
|
+
gid: row.gid,
|
|
1585
|
+
prepared: formatDateTime(row.prepared),
|
|
1586
|
+
owner: row.owner,
|
|
1587
|
+
database: row.database
|
|
1588
|
+
}))
|
|
1589
|
+
})
|
|
1590
|
+
]
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
id: "configuration",
|
|
1594
|
+
title: "Configuration",
|
|
1595
|
+
subtitle: "Searchable PostgreSQL settings visibility",
|
|
1596
|
+
status: "ready",
|
|
1597
|
+
capturedAt: configuration.capturedAt,
|
|
1598
|
+
searchable: true,
|
|
1599
|
+
searchPlaceholder: "Search setting name, category, or description...",
|
|
1600
|
+
cards: [
|
|
1601
|
+
{
|
|
1602
|
+
id: "configuration-total",
|
|
1603
|
+
label: "Settings Returned",
|
|
1604
|
+
value: formatNumber(configuration.rows.length),
|
|
1605
|
+
helperText: `Total catalog rows ${formatNumber(configuration.total)}`
|
|
1606
|
+
}
|
|
1607
|
+
],
|
|
1608
|
+
tables: [
|
|
1609
|
+
createTable({
|
|
1610
|
+
id: "postgres-configuration",
|
|
1611
|
+
title: "Settings",
|
|
1612
|
+
emptyMessage: "No configuration settings were returned.",
|
|
1613
|
+
rows: configuration.rows.map((row) => ({
|
|
1614
|
+
name: row.name,
|
|
1615
|
+
category: row.category,
|
|
1616
|
+
value: row.value,
|
|
1617
|
+
unit: row.unit,
|
|
1618
|
+
pending_restart: row.pendingRestart,
|
|
1619
|
+
description: row.description
|
|
1620
|
+
}))
|
|
1621
|
+
})
|
|
1622
|
+
]
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
id: "replication",
|
|
1626
|
+
title: "Replication",
|
|
1627
|
+
subtitle: "Replication clients and slot pressure",
|
|
1628
|
+
status: "ready",
|
|
1629
|
+
capturedAt: replication.capturedAt,
|
|
1630
|
+
statusMessage: replication.staleSlotWarning,
|
|
1631
|
+
actions: replicationActions,
|
|
1632
|
+
cards: [
|
|
1633
|
+
{
|
|
1634
|
+
id: "replication-clients",
|
|
1635
|
+
label: "Replication Clients",
|
|
1636
|
+
value: formatNumber(replication.replicationStats.length)
|
|
1637
|
+
},
|
|
1638
|
+
{
|
|
1639
|
+
id: "replication-slots",
|
|
1640
|
+
label: "Replication Slots",
|
|
1641
|
+
value: formatNumber(replication.replicationSlots.length)
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
id: "inactive-slots",
|
|
1645
|
+
label: "Inactive Slots",
|
|
1646
|
+
value: formatNumber(
|
|
1647
|
+
replication.replicationSlots.filter((slot) => !slot.active).length
|
|
1648
|
+
)
|
|
1649
|
+
}
|
|
1650
|
+
],
|
|
1651
|
+
tables: [
|
|
1652
|
+
createTable({
|
|
1653
|
+
id: "postgres-replication-stats",
|
|
1654
|
+
title: "Replication Stats",
|
|
1655
|
+
emptyMessage: "No replication clients are currently visible.",
|
|
1656
|
+
rows: replication.replicationStats.map((row) => ({
|
|
1657
|
+
pid: row.pid,
|
|
1658
|
+
client_addr: row.clientAddr,
|
|
1659
|
+
application_name: row.applicationName,
|
|
1660
|
+
state: row.state,
|
|
1661
|
+
sync_state: row.syncState,
|
|
1662
|
+
reply_time: formatDateTime(row.replyTime),
|
|
1663
|
+
write_lag: row.writeLag,
|
|
1664
|
+
flush_lag: row.flushLag,
|
|
1665
|
+
replay_lag: row.replayLag,
|
|
1666
|
+
sent_lsn: row.sentLsn,
|
|
1667
|
+
write_lsn: row.writeLsn,
|
|
1668
|
+
flush_lsn: row.flushLsn,
|
|
1669
|
+
replay_lsn: row.replayLsn
|
|
1670
|
+
}))
|
|
1671
|
+
}),
|
|
1672
|
+
createTable({
|
|
1673
|
+
id: "postgres-replication-slots",
|
|
1674
|
+
title: "Replication Slots",
|
|
1675
|
+
emptyMessage: "No replication slots are currently visible.",
|
|
1676
|
+
rows: replication.replicationSlots.map((row) => ({
|
|
1677
|
+
slot_name: row.slotName,
|
|
1678
|
+
slot_type: row.slotType,
|
|
1679
|
+
active: row.active,
|
|
1680
|
+
active_pid: row.activePid,
|
|
1681
|
+
restart_lsn: row.restartLsn,
|
|
1682
|
+
confirmed_flush_lsn: row.confirmedFlushLsn,
|
|
1683
|
+
retained_wal: formatBytes(row.retainedBytes),
|
|
1684
|
+
temporary: row.temporary
|
|
1685
|
+
}))
|
|
1686
|
+
})
|
|
1687
|
+
]
|
|
1688
|
+
}
|
|
1689
|
+
]
|
|
1690
|
+
};
|
|
1691
|
+
}
|
|
109
1692
|
async getDashboard() {
|
|
110
1693
|
var _a, _b;
|
|
111
1694
|
const [
|
|
@@ -714,14 +2297,454 @@ class PostgresInstanceInsightsAdapter extends BaseDomainAdapter {
|
|
|
714
2297
|
|
|
715
2298
|
var __defProp = Object.defineProperty;
|
|
716
2299
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
717
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
|
|
2300
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
718
2301
|
class SqliteInstanceInsightsAdapter extends BaseUnsupportedInstanceInsightsAdapter {
|
|
719
|
-
constructor() {
|
|
720
|
-
super(
|
|
2302
|
+
constructor(adapter) {
|
|
2303
|
+
super();
|
|
721
2304
|
__publicField(this, "dbType", DatabaseClientType.SQLITE3);
|
|
2305
|
+
__publicField(this, "adapter");
|
|
2306
|
+
this.adapter = adapter;
|
|
722
2307
|
}
|
|
723
2308
|
static async create(params) {
|
|
724
|
-
|
|
2309
|
+
const adapter = await getDatabaseSource({
|
|
2310
|
+
...params,
|
|
2311
|
+
type: DatabaseClientType.SQLITE3
|
|
2312
|
+
});
|
|
2313
|
+
return new SqliteInstanceInsightsAdapter(adapter);
|
|
2314
|
+
}
|
|
2315
|
+
async getView() {
|
|
2316
|
+
var _a;
|
|
2317
|
+
const capturedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2318
|
+
const versionResult = await this.tryRawQuery(
|
|
2319
|
+
"SELECT sqlite_version() AS version"
|
|
2320
|
+
);
|
|
2321
|
+
const version = versionResult.rows[0] ? String((_a = this.pick(versionResult.rows[0], "version")) != null ? _a : "") : null;
|
|
2322
|
+
const [overview, storageHealth, configuration, integrity] = await Promise.all([
|
|
2323
|
+
this.buildOverviewSection(capturedAt),
|
|
2324
|
+
this.buildStorageHealthSection(capturedAt),
|
|
2325
|
+
this.buildConfigurationSection(capturedAt),
|
|
2326
|
+
this.buildIntegritySection(capturedAt)
|
|
2327
|
+
]);
|
|
2328
|
+
return {
|
|
2329
|
+
dbType: this.dbType,
|
|
2330
|
+
title: "Instance Insights",
|
|
2331
|
+
databaseName: null,
|
|
2332
|
+
version,
|
|
2333
|
+
capturedAt,
|
|
2334
|
+
capabilities: createInsightsCapabilities({
|
|
2335
|
+
supportsConfiguration: true,
|
|
2336
|
+
supportsStorageHealth: true,
|
|
2337
|
+
supportsIntegrityChecks: true
|
|
2338
|
+
}),
|
|
2339
|
+
actions: [
|
|
2340
|
+
createActionCapability({
|
|
2341
|
+
id: "checkpoint",
|
|
2342
|
+
label: "Checkpoint",
|
|
2343
|
+
state: "unsupported",
|
|
2344
|
+
description: "Checkpoint controls are reserved for a later SQLite phase."
|
|
2345
|
+
}),
|
|
2346
|
+
createActionCapability({
|
|
2347
|
+
id: "vacuum-recommendation",
|
|
2348
|
+
label: "Vacuum Recommendation",
|
|
2349
|
+
state: "conditional",
|
|
2350
|
+
description: "Storage-health warnings highlight reclaimable space without running VACUUM automatically."
|
|
2351
|
+
})
|
|
2352
|
+
],
|
|
2353
|
+
sections: [overview, storageHealth, configuration, integrity]
|
|
2354
|
+
};
|
|
2355
|
+
}
|
|
2356
|
+
async buildOverviewSection(capturedAt) {
|
|
2357
|
+
const [
|
|
2358
|
+
databaseList,
|
|
2359
|
+
pageCount,
|
|
2360
|
+
pageSize,
|
|
2361
|
+
journalMode,
|
|
2362
|
+
lockingMode,
|
|
2363
|
+
autoVacuum
|
|
2364
|
+
] = await Promise.all([
|
|
2365
|
+
this.tryRawQuery("PRAGMA database_list"),
|
|
2366
|
+
this.tryRawQuery("PRAGMA page_count"),
|
|
2367
|
+
this.tryRawQuery("PRAGMA page_size"),
|
|
2368
|
+
this.tryRawQuery("PRAGMA journal_mode"),
|
|
2369
|
+
this.tryRawQuery("PRAGMA locking_mode"),
|
|
2370
|
+
this.tryRawQuery("PRAGMA auto_vacuum")
|
|
2371
|
+
]);
|
|
2372
|
+
if (databaseList.error && pageCount.error && pageSize.error) {
|
|
2373
|
+
return createUnavailableSection(
|
|
2374
|
+
"overview",
|
|
2375
|
+
"Overview",
|
|
2376
|
+
"SQLite database/file shape and mode",
|
|
2377
|
+
databaseList.error || pageCount.error || pageSize.error || "SQLite overview data is unavailable.",
|
|
2378
|
+
capturedAt
|
|
2379
|
+
);
|
|
2380
|
+
}
|
|
2381
|
+
const pageCountValue = this.toNumber(this.firstRowValue(pageCount.rows[0]));
|
|
2382
|
+
const pageSizeValue = this.toNumber(this.firstRowValue(pageSize.rows[0]));
|
|
2383
|
+
const approximateFileSize = pageCountValue * pageSizeValue;
|
|
2384
|
+
const journalModeValue = this.firstRowValue(journalMode.rows[0]);
|
|
2385
|
+
const lockingModeValue = this.firstRowValue(lockingMode.rows[0]);
|
|
2386
|
+
const autoVacuumValue = this.firstRowValue(autoVacuum.rows[0]);
|
|
2387
|
+
const dbRows = databaseList.rows.map((row) => this.normalizeRowKeys(row));
|
|
2388
|
+
const mainDatabase = dbRows.find((row) => this.pick(row, "name") === "main");
|
|
2389
|
+
return {
|
|
2390
|
+
id: "overview",
|
|
2391
|
+
title: "Overview",
|
|
2392
|
+
subtitle: "SQLite database/file shape and mode",
|
|
2393
|
+
status: "ready",
|
|
2394
|
+
capturedAt,
|
|
2395
|
+
statusMessage: [
|
|
2396
|
+
databaseList.error,
|
|
2397
|
+
pageCount.error,
|
|
2398
|
+
pageSize.error,
|
|
2399
|
+
journalMode.error,
|
|
2400
|
+
lockingMode.error,
|
|
2401
|
+
autoVacuum.error
|
|
2402
|
+
].filter(Boolean).join(" "),
|
|
2403
|
+
cards: [
|
|
2404
|
+
{
|
|
2405
|
+
id: "page-count",
|
|
2406
|
+
label: "Page Count",
|
|
2407
|
+
value: formatNumber(pageCountValue)
|
|
2408
|
+
},
|
|
2409
|
+
{
|
|
2410
|
+
id: "page-size",
|
|
2411
|
+
label: "Page Size",
|
|
2412
|
+
value: formatBytes(pageSizeValue)
|
|
2413
|
+
},
|
|
2414
|
+
{
|
|
2415
|
+
id: "approx-size",
|
|
2416
|
+
label: "Approx File Size",
|
|
2417
|
+
value: formatBytes(approximateFileSize)
|
|
2418
|
+
},
|
|
2419
|
+
{
|
|
2420
|
+
id: "journal-mode",
|
|
2421
|
+
label: "Journal Mode",
|
|
2422
|
+
value: formatValue(journalModeValue)
|
|
2423
|
+
},
|
|
2424
|
+
{
|
|
2425
|
+
id: "locking-mode",
|
|
2426
|
+
label: "Locking Mode",
|
|
2427
|
+
value: formatValue(lockingModeValue)
|
|
2428
|
+
},
|
|
2429
|
+
{
|
|
2430
|
+
id: "attached-databases",
|
|
2431
|
+
label: "Attached Databases",
|
|
2432
|
+
value: formatNumber(dbRows.length)
|
|
2433
|
+
}
|
|
2434
|
+
],
|
|
2435
|
+
details: [
|
|
2436
|
+
{
|
|
2437
|
+
label: "Main File Path",
|
|
2438
|
+
value: formatValue(this.pick(mainDatabase || {}, "file"))
|
|
2439
|
+
},
|
|
2440
|
+
{
|
|
2441
|
+
label: "Auto Vacuum",
|
|
2442
|
+
value: this.describeAutoVacuum(autoVacuumValue)
|
|
2443
|
+
}
|
|
2444
|
+
],
|
|
2445
|
+
tables: [
|
|
2446
|
+
createTable({
|
|
2447
|
+
id: "sqlite-database-list",
|
|
2448
|
+
title: "Attached Databases",
|
|
2449
|
+
emptyMessage: "No attached databases were returned.",
|
|
2450
|
+
rows: dbRows
|
|
2451
|
+
})
|
|
2452
|
+
]
|
|
2453
|
+
};
|
|
2454
|
+
}
|
|
2455
|
+
async buildStorageHealthSection(capturedAt) {
|
|
2456
|
+
const [freelistCount, pageSize, tableList, walAutocheckpoint, journalMode] = await Promise.all([
|
|
2457
|
+
this.tryRawQuery("PRAGMA freelist_count"),
|
|
2458
|
+
this.tryRawQuery("PRAGMA page_size"),
|
|
2459
|
+
this.tryRawQuery("PRAGMA table_list"),
|
|
2460
|
+
this.tryRawQuery("PRAGMA wal_autocheckpoint"),
|
|
2461
|
+
this.tryRawQuery("PRAGMA journal_mode")
|
|
2462
|
+
]);
|
|
2463
|
+
if (freelistCount.error && tableList.error) {
|
|
2464
|
+
return createUnavailableSection(
|
|
2465
|
+
"storage-health",
|
|
2466
|
+
"Storage Health",
|
|
2467
|
+
"Freelist, WAL, and table inventory visibility",
|
|
2468
|
+
freelistCount.error || tableList.error || "SQLite storage health data is unavailable.",
|
|
2469
|
+
capturedAt
|
|
2470
|
+
);
|
|
2471
|
+
}
|
|
2472
|
+
const freelistValue = this.toNumber(
|
|
2473
|
+
this.firstRowValue(freelistCount.rows[0])
|
|
2474
|
+
);
|
|
2475
|
+
const pageSizeValue = this.toNumber(this.firstRowValue(pageSize.rows[0]));
|
|
2476
|
+
const reclaimableBytes = freelistValue * pageSizeValue;
|
|
2477
|
+
const journalModeValue = String(
|
|
2478
|
+
this.firstRowValue(journalMode.rows[0]) || ""
|
|
2479
|
+
);
|
|
2480
|
+
const walEnabled = journalModeValue.toLowerCase() === "wal";
|
|
2481
|
+
const walAutocheckpointValue = this.firstRowValue(
|
|
2482
|
+
walAutocheckpoint.rows[0]
|
|
2483
|
+
);
|
|
2484
|
+
const tableRows = tableList.rows.map((row) => this.normalizeRowKeys(row));
|
|
2485
|
+
return {
|
|
2486
|
+
id: "storage-health",
|
|
2487
|
+
title: "Storage Health",
|
|
2488
|
+
subtitle: "Freelist, WAL, and table inventory visibility",
|
|
2489
|
+
status: "ready",
|
|
2490
|
+
capturedAt,
|
|
2491
|
+
statusMessage: [
|
|
2492
|
+
freelistCount.error,
|
|
2493
|
+
pageSize.error,
|
|
2494
|
+
tableList.error,
|
|
2495
|
+
walAutocheckpoint.error,
|
|
2496
|
+
journalMode.error
|
|
2497
|
+
].filter(Boolean).join(" "),
|
|
2498
|
+
cards: [
|
|
2499
|
+
{
|
|
2500
|
+
id: "freelist-count",
|
|
2501
|
+
label: "Freelist Pages",
|
|
2502
|
+
value: formatNumber(freelistValue)
|
|
2503
|
+
},
|
|
2504
|
+
{
|
|
2505
|
+
id: "reclaimable-bytes",
|
|
2506
|
+
label: "Reclaimable Bytes",
|
|
2507
|
+
value: formatBytes(reclaimableBytes),
|
|
2508
|
+
tone: reclaimableBytes > 0 ? "warning" : "default"
|
|
2509
|
+
},
|
|
2510
|
+
{
|
|
2511
|
+
id: "wal-enabled",
|
|
2512
|
+
label: "WAL Enabled",
|
|
2513
|
+
value: walEnabled ? "Yes" : "No"
|
|
2514
|
+
},
|
|
2515
|
+
{
|
|
2516
|
+
id: "table-count",
|
|
2517
|
+
label: "Table Inventory",
|
|
2518
|
+
value: formatNumber(tableRows.length)
|
|
2519
|
+
}
|
|
2520
|
+
],
|
|
2521
|
+
details: [
|
|
2522
|
+
{
|
|
2523
|
+
label: "WAL Auto-checkpoint",
|
|
2524
|
+
value: formatValue(walAutocheckpointValue)
|
|
2525
|
+
}
|
|
2526
|
+
],
|
|
2527
|
+
tables: [
|
|
2528
|
+
createTable({
|
|
2529
|
+
id: "sqlite-table-list",
|
|
2530
|
+
title: "Table Inventory",
|
|
2531
|
+
emptyMessage: "No table inventory rows were returned.",
|
|
2532
|
+
rows: tableRows
|
|
2533
|
+
})
|
|
2534
|
+
],
|
|
2535
|
+
checks: reclaimableBytes > 0 ? [
|
|
2536
|
+
{
|
|
2537
|
+
id: "reclaimable-space",
|
|
2538
|
+
label: "Reclaimable Space Detected",
|
|
2539
|
+
detail: `${formatBytes(reclaimableBytes)} can be reclaimed based on the current freelist count.`,
|
|
2540
|
+
status: "warn",
|
|
2541
|
+
tone: "warning"
|
|
2542
|
+
}
|
|
2543
|
+
] : void 0
|
|
2544
|
+
};
|
|
2545
|
+
}
|
|
2546
|
+
async buildConfigurationSection(capturedAt) {
|
|
2547
|
+
var _a, _b;
|
|
2548
|
+
const pragmaEntries = await Promise.all([
|
|
2549
|
+
this.readPragmaEntry("foreign_keys", "PRAGMA foreign_keys"),
|
|
2550
|
+
this.readPragmaEntry("synchronous", "PRAGMA synchronous"),
|
|
2551
|
+
this.readPragmaEntry("mmap_size", "PRAGMA mmap_size"),
|
|
2552
|
+
this.readPragmaEntry("cache_size", "PRAGMA cache_size"),
|
|
2553
|
+
this.readPragmaEntry("query_only", "PRAGMA query_only"),
|
|
2554
|
+
this.readPragmaEntry("read_uncommitted", "PRAGMA read_uncommitted"),
|
|
2555
|
+
this.readPragmaEntry("trusted_schema", "PRAGMA trusted_schema")
|
|
2556
|
+
]);
|
|
2557
|
+
const errors = pragmaEntries.map((entry) => entry.error).filter(Boolean);
|
|
2558
|
+
const rows = pragmaEntries.filter((entry) => entry.value !== null).map((entry) => ({
|
|
2559
|
+
name: entry.name,
|
|
2560
|
+
value: entry.value
|
|
2561
|
+
}));
|
|
2562
|
+
if (!rows.length && errors.length) {
|
|
2563
|
+
return createUnavailableSection(
|
|
2564
|
+
"configuration",
|
|
2565
|
+
"Configuration",
|
|
2566
|
+
"SQLite PRAGMA settings",
|
|
2567
|
+
errors.join(" "),
|
|
2568
|
+
capturedAt
|
|
2569
|
+
);
|
|
2570
|
+
}
|
|
2571
|
+
return {
|
|
2572
|
+
id: "configuration",
|
|
2573
|
+
title: "Configuration",
|
|
2574
|
+
subtitle: "SQLite PRAGMA settings",
|
|
2575
|
+
status: "ready",
|
|
2576
|
+
capturedAt,
|
|
2577
|
+
searchable: true,
|
|
2578
|
+
searchPlaceholder: "Search PRAGMA name or value...",
|
|
2579
|
+
statusMessage: errors.join(" "),
|
|
2580
|
+
cards: [
|
|
2581
|
+
{
|
|
2582
|
+
id: "foreign-keys",
|
|
2583
|
+
label: "Foreign Keys",
|
|
2584
|
+
value: formatBoolean(
|
|
2585
|
+
(_a = rows.find((row) => row.name === "foreign_keys")) == null ? void 0 : _a.value
|
|
2586
|
+
)
|
|
2587
|
+
},
|
|
2588
|
+
{
|
|
2589
|
+
id: "query-only",
|
|
2590
|
+
label: "Query Only",
|
|
2591
|
+
value: formatBoolean(
|
|
2592
|
+
(_b = rows.find((row) => row.name === "query_only")) == null ? void 0 : _b.value
|
|
2593
|
+
)
|
|
2594
|
+
}
|
|
2595
|
+
],
|
|
2596
|
+
tables: [
|
|
2597
|
+
createTable({
|
|
2598
|
+
id: "sqlite-configuration",
|
|
2599
|
+
title: "PRAGMA Settings",
|
|
2600
|
+
emptyMessage: "No PRAGMA settings were returned.",
|
|
2601
|
+
rows
|
|
2602
|
+
})
|
|
2603
|
+
]
|
|
2604
|
+
};
|
|
2605
|
+
}
|
|
2606
|
+
async buildIntegritySection(capturedAt) {
|
|
2607
|
+
const [quickCheck, integrityCheck] = await Promise.all([
|
|
2608
|
+
this.tryRawQuery("PRAGMA quick_check"),
|
|
2609
|
+
this.tryRawQuery("PRAGMA integrity_check")
|
|
2610
|
+
]);
|
|
2611
|
+
if (quickCheck.error && integrityCheck.error) {
|
|
2612
|
+
return createUnavailableSection(
|
|
2613
|
+
"integrity",
|
|
2614
|
+
"Integrity",
|
|
2615
|
+
"Quick and full integrity checks",
|
|
2616
|
+
`${quickCheck.error} ${integrityCheck.error}`.trim(),
|
|
2617
|
+
capturedAt
|
|
2618
|
+
);
|
|
2619
|
+
}
|
|
2620
|
+
const quickCheckValue = this.firstRowValue(quickCheck.rows[0]);
|
|
2621
|
+
const integrityCheckValue = this.firstRowValue(integrityCheck.rows[0]);
|
|
2622
|
+
const quickOk = String(quickCheckValue || "").toLowerCase() === "ok";
|
|
2623
|
+
const integrityOk = String(integrityCheckValue || "").toLowerCase() === "ok";
|
|
2624
|
+
return {
|
|
2625
|
+
id: "integrity",
|
|
2626
|
+
title: "Integrity",
|
|
2627
|
+
subtitle: "Quick and full integrity checks",
|
|
2628
|
+
status: "ready",
|
|
2629
|
+
capturedAt,
|
|
2630
|
+
statusMessage: [quickCheck.error, integrityCheck.error].filter(Boolean).join(" "),
|
|
2631
|
+
cards: [
|
|
2632
|
+
{
|
|
2633
|
+
id: "quick-check",
|
|
2634
|
+
label: "Quick Check",
|
|
2635
|
+
value: formatValue(quickCheckValue),
|
|
2636
|
+
tone: quickOk ? "success" : "warning"
|
|
2637
|
+
},
|
|
2638
|
+
{
|
|
2639
|
+
id: "integrity-check",
|
|
2640
|
+
label: "Integrity Check",
|
|
2641
|
+
value: formatValue(integrityCheckValue),
|
|
2642
|
+
tone: integrityOk ? "success" : "warning"
|
|
2643
|
+
}
|
|
2644
|
+
],
|
|
2645
|
+
checks: [
|
|
2646
|
+
{
|
|
2647
|
+
id: "quick-check-result",
|
|
2648
|
+
label: "Quick Check Result",
|
|
2649
|
+
detail: formatValue(quickCheckValue),
|
|
2650
|
+
status: quickOk ? "pass" : "warn",
|
|
2651
|
+
tone: quickOk ? "success" : "warning"
|
|
2652
|
+
},
|
|
2653
|
+
{
|
|
2654
|
+
id: "integrity-check-result",
|
|
2655
|
+
label: "Integrity Check Result",
|
|
2656
|
+
detail: formatValue(integrityCheckValue),
|
|
2657
|
+
status: integrityOk ? "pass" : "warn",
|
|
2658
|
+
tone: integrityOk ? "success" : "warning"
|
|
2659
|
+
}
|
|
2660
|
+
],
|
|
2661
|
+
tables: [
|
|
2662
|
+
createTable({
|
|
2663
|
+
id: "sqlite-integrity-results",
|
|
2664
|
+
title: "Integrity Results",
|
|
2665
|
+
rows: [
|
|
2666
|
+
{
|
|
2667
|
+
check: "quick_check",
|
|
2668
|
+
result: quickCheckValue
|
|
2669
|
+
},
|
|
2670
|
+
{
|
|
2671
|
+
check: "integrity_check",
|
|
2672
|
+
result: integrityCheckValue
|
|
2673
|
+
}
|
|
2674
|
+
]
|
|
2675
|
+
})
|
|
2676
|
+
]
|
|
2677
|
+
};
|
|
2678
|
+
}
|
|
2679
|
+
async readPragmaEntry(name, sql) {
|
|
2680
|
+
const result = await this.tryRawQuery(sql);
|
|
2681
|
+
return {
|
|
2682
|
+
name,
|
|
2683
|
+
value: result.rows[0] ? this.firstRowValue(result.rows[0]) : null,
|
|
2684
|
+
error: result.error
|
|
2685
|
+
};
|
|
2686
|
+
}
|
|
2687
|
+
async tryRawQuery(sql, bindings = []) {
|
|
2688
|
+
try {
|
|
2689
|
+
const rows = await this.adapter.rawQuery(sql, bindings);
|
|
2690
|
+
return {
|
|
2691
|
+
rows,
|
|
2692
|
+
error: null
|
|
2693
|
+
};
|
|
2694
|
+
} catch (error) {
|
|
2695
|
+
return {
|
|
2696
|
+
rows: [],
|
|
2697
|
+
error: this.getErrorMessage(error)
|
|
2698
|
+
};
|
|
2699
|
+
}
|
|
2700
|
+
}
|
|
2701
|
+
normalizeRowKeys(row) {
|
|
2702
|
+
return Object.fromEntries(
|
|
2703
|
+
Object.entries(row).map(([key, value]) => [this.toSnakeKey(key), value])
|
|
2704
|
+
);
|
|
2705
|
+
}
|
|
2706
|
+
firstRowValue(row) {
|
|
2707
|
+
if (!row) {
|
|
2708
|
+
return null;
|
|
2709
|
+
}
|
|
2710
|
+
const firstKey = Object.keys(row)[0];
|
|
2711
|
+
return firstKey ? row[firstKey] : null;
|
|
2712
|
+
}
|
|
2713
|
+
pick(row, ...keys) {
|
|
2714
|
+
for (const key of keys) {
|
|
2715
|
+
if (key in row) {
|
|
2716
|
+
return row[key];
|
|
2717
|
+
}
|
|
2718
|
+
}
|
|
2719
|
+
return null;
|
|
2720
|
+
}
|
|
2721
|
+
toSnakeKey(value) {
|
|
2722
|
+
return value.replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/[\s.-]+/g, "_").toLowerCase();
|
|
2723
|
+
}
|
|
2724
|
+
toNumber(value) {
|
|
2725
|
+
const parsed = typeof value === "number" ? value : Number.parseFloat(String(value != null ? value : ""));
|
|
2726
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
2727
|
+
}
|
|
2728
|
+
describeAutoVacuum(value) {
|
|
2729
|
+
switch (String(value != null ? value : "")) {
|
|
2730
|
+
case "0":
|
|
2731
|
+
return "None";
|
|
2732
|
+
case "1":
|
|
2733
|
+
return "Full";
|
|
2734
|
+
case "2":
|
|
2735
|
+
return "Incremental";
|
|
2736
|
+
default:
|
|
2737
|
+
return formatValue(value);
|
|
2738
|
+
}
|
|
2739
|
+
}
|
|
2740
|
+
getErrorMessage(error) {
|
|
2741
|
+
if (error instanceof Error && error.message) {
|
|
2742
|
+
return error.message;
|
|
2743
|
+
}
|
|
2744
|
+
const candidate = error;
|
|
2745
|
+
return String(
|
|
2746
|
+
(candidate == null ? void 0 : candidate.message) || (candidate == null ? void 0 : candidate.statusMessage) || "Unknown database error"
|
|
2747
|
+
);
|
|
725
2748
|
}
|
|
726
2749
|
}
|
|
727
2750
|
|