decocms 2.302.1 → 2.302.2

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.
Files changed (205) hide show
  1. package/dist/client/assets/{AlertCircle-BFJK99tM.js → AlertCircle-BkX4HzbS.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-DCbP5K-g.js → ArrowNarrowLeft-BebHkn1X.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-BvzWf0q7.js → ArrowUpRight-uszsF274.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-qqOIolWc.js → CheckCircle-Boq6G01L.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-BMTA9_Ap.js → ChevronDown-ByP-e484.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-QeeRSp8z.js → ChevronRight-BUfZMnd9.js} +1 -1
  7. package/dist/client/assets/{ChevronUp-BHiGg6ZY.js → ChevronUp-TwiYbtUW.js} +1 -1
  8. package/dist/client/assets/{Container-CIDvyJX8.js → Container-DzkLD13G.js} +1 -1
  9. package/dist/client/assets/{DotsVertical-Bd2_5HYZ.js → DotsVertical-BrUfBHwt.js} +1 -1
  10. package/dist/client/assets/{LinkExternal01-DCnMv_g7.js → LinkExternal01-gfL-Fk4b.js} +1 -1
  11. package/dist/client/assets/{Lock01-Ds-YEZnN.js → Lock01-CI-miN4g.js} +1 -1
  12. package/dist/client/assets/{Palette-DescRwe0.js → Palette-1HvN4NnC.js} +1 -1
  13. package/dist/client/assets/{Play-Ch3KWC7Z.js → Play-O7ldNAxa.js} +1 -1
  14. package/dist/client/assets/{Plus-gLdNtuBE.js → Plus-Bihyskqy.js} +1 -1
  15. package/dist/client/assets/{RefreshCcw01-DKf5Q7r6.js → RefreshCcw01-BzT-xyrO.js} +1 -1
  16. package/dist/client/assets/{SearchMd-BI1BY0Xc.js → SearchMd-vBRV-l3E.js} +1 -1
  17. package/dist/client/assets/{Settings02-D0o0GA4h.js → Settings02-eiwWD3s7.js} +1 -1
  18. package/dist/client/assets/{Shield01-btPXI3TS.js → Shield01-D7ml37xT.js} +1 -1
  19. package/dist/client/assets/{Star01-DInOTW7T.js → Star01-ByzmPd4J.js} +1 -1
  20. package/dist/client/assets/{Sun-DLagUbKM.js → Sun-xA_CdWAJ.js} +1 -1
  21. package/dist/client/assets/{Tool01-D1xeep7h.js → Tool01-Dqyo2VjJ.js} +1 -1
  22. package/dist/client/assets/{Trash01-OgQVP2St.js → Trash01-f4CvhuWB.js} +1 -1
  23. package/dist/client/assets/{User01-Cr_qCqW_.js → User01-lDhxACAV.js} +1 -1
  24. package/dist/client/assets/{Users03-DVwMLxYo.js → Users03-IortA-KV.js} +1 -1
  25. package/dist/client/assets/{X-fvjwb2RC.js → X-BiphajNJ.js} +1 -1
  26. package/dist/client/assets/{XCircle-CVED_3Ss.js → XCircle-Dp1Lqd1t.js} +1 -1
  27. package/dist/client/assets/{XClose-C1T9ODT_.js → XClose-lRlzG-cb.js} +1 -1
  28. package/dist/client/assets/{Zap-u543Wk9m.js → Zap-ebWdIwXf.js} +1 -1
  29. package/dist/client/assets/{ZapSquare-B03aoE62.js → ZapSquare-_fsDSSOX.js} +1 -1
  30. package/dist/client/assets/{accordion-zoDibAHc.js → accordion-D3c87Mh0.js} +1 -1
  31. package/dist/client/assets/{agent-icon-B5EEcofO.js → agent-icon-Be_PnRh0.js} +1 -1
  32. package/dist/client/assets/{agents-list-KuDCGevU.js → agents-list-45a0yQhW.js} +1 -1
  33. package/dist/client/assets/ai-providers-BzCSRpkV.js +1 -0
  34. package/dist/client/assets/{alert-dialog-B6JtF6Oy.js → alert-dialog-BUApN05b.js} +1 -1
  35. package/dist/client/assets/{auth-catchall-CnOfYh4q.js → auth-catchall-DH0bWyBT.js} +1 -1
  36. package/dist/client/assets/{automation-list-row-Ce2nqVRS.js → automation-list-row-DETQBuFK.js} +1 -1
  37. package/dist/client/assets/{automations-3wicI9sJ.js → automations-DvIFzGM7.js} +1 -1
  38. package/dist/client/assets/{avatar-B5CcOSaZ.js → avatar-BBnvw18x.js} +1 -1
  39. package/dist/client/assets/{badge-Vn5olYFX.js → badge-CRHmlYav.js} +1 -1
  40. package/dist/client/assets/{brand-context-JEzNXnYS.js → brand-context-CH2SSDlY.js} +1 -1
  41. package/dist/client/assets/{card-DHIGW2Gm.js → card-DoqftRz7.js} +1 -1
  42. package/dist/client/assets/{chat-context-DZ4ItXeY.js → chat-context-JbYHex_O.js} +1 -1
  43. package/dist/client/assets/{checkbox-DBBm6J90.js → checkbox-CHYA_sQZ.js} +1 -1
  44. package/dist/client/assets/{collection-detail-CYmy41EW.js → collection-detail-Bb5ojn6D.js} +1 -1
  45. package/dist/client/assets/{collection-display-button-DifdWxZd.js → collection-display-button-C2ECPv0_.js} +1 -1
  46. package/dist/client/assets/{collection-search-dr2VH0_A.js → collection-search-B8mdZm7u.js} +1 -1
  47. package/dist/client/assets/{collection-search-EJTdRq0l.js → collection-search-C-2UZGyD.js} +1 -1
  48. package/dist/client/assets/{collection-table-wrapper-BNTrWb5l.js → collection-table-wrapper-pDRU_Alr.js} +1 -1
  49. package/dist/client/assets/{collection-tabs-BhSzOngN.js → collection-tabs-Bj7BShdC.js} +1 -1
  50. package/dist/client/assets/{collections-x4R34QWs.js → collections-CjrHbdtT.js} +1 -1
  51. package/dist/client/assets/{command-dTUEruN1.js → command-CZWy1buB.js} +1 -1
  52. package/dist/client/assets/{connection-card-DHMMRnIO.js → connection-card-HM9ImVMm.js} +1 -1
  53. package/dist/client/assets/{connection-detail-B_69g2MY.js → connection-detail-CWdb5LvI.js} +1 -1
  54. package/dist/client/assets/{connection-form-helpers-CSnwVczG.js → connection-form-helpers-Cr0s3TXQ.js} +1 -1
  55. package/dist/client/assets/{connections-DL-vzzoi.js → connections-CpsKPW6X.js} +1 -1
  56. package/dist/client/assets/{constants-BVU634u9.js → constants-Cj0U39_n.js} +1 -1
  57. package/dist/client/assets/{constants-DhipgDPU.js → constants-DE2tzNng.js} +1 -1
  58. package/dist/client/assets/{dialog-Cc5-s5cq.js → dialog-BdVY7mqq.js} +1 -1
  59. package/dist/client/assets/{domain-settings-Ddgt5zKc.js → domain-settings-DALXcXKA.js} +1 -1
  60. package/dist/client/assets/{drawer-CYKJkhyy.js → drawer-0C4xllAB.js} +1 -1
  61. package/dist/client/assets/{dropdown-menu-BdezCavF.js → dropdown-menu-Bq-aRZ_r.js} +1 -1
  62. package/dist/client/assets/{dynamic-plugin-layout-BPGpVId2.js → dynamic-plugin-layout-CXa5_dk-.js} +1 -1
  63. package/dist/client/assets/{empty-state-B-SDOSco.js → empty-state-Cw5GxS3i.js} +1 -1
  64. package/dist/client/assets/{empty-state-CGM_VDGy.js → empty-state-S_EjXlZP.js} +1 -1
  65. package/dist/client/assets/{extract-connection-data-CGFCZBB1.js → extract-connection-data-DN-EBamj.js} +1 -1
  66. package/dist/client/assets/{features-D36LrRkp.js → features-CZe-SpPx.js} +1 -1
  67. package/dist/client/assets/{form-BlgCJwww.js → form-Stkhqjoi.js} +1 -1
  68. package/dist/client/assets/{general-ByIyj3-X.js → general-aMP5BKAQ.js} +1 -1
  69. package/dist/client/assets/{index-DcnDvcwB.js → index-B7sUvMqz.js} +1 -1
  70. package/dist/client/assets/{index-C4B8wMiM.js → index-BP0vNLKa.js} +1 -1
  71. package/dist/client/assets/{index-Ce3V05Jd.js → index-BY8F27EB.js} +1 -1
  72. package/dist/client/assets/{index-C-49LFOm.js → index-BZhxvvXQ.js} +1 -1
  73. package/dist/client/assets/{index-iJW-G2eC.js → index-C--avMTn.js} +1 -1
  74. package/dist/client/assets/{index-CQbT2-AO.js → index-CAum6J1D.js} +1 -1
  75. package/dist/client/assets/{index-CxcuSo6g.js → index-ClNUcJ8s.js} +1 -1
  76. package/dist/client/assets/{index-DL3V_XAA.js → index-Crkc58Yb.js} +1 -1
  77. package/dist/client/assets/index-D2fHFr2F.js +1 -0
  78. package/dist/client/assets/{index-gtAbs0Sc.js → index-D58bzP3p.js} +1 -1
  79. package/dist/client/assets/{index-QpbQL5yY.js → index-DCOURowK.js} +1 -1
  80. package/dist/client/assets/{index-BEdZpL1a.js → index-DhThG5rF.js} +3 -3
  81. package/dist/client/assets/{index-DWnDHmtK.js → index-ZmvI6xf3.js} +1 -1
  82. package/dist/client/assets/{index-BGvMfUr2.js → index-b_n-uXmh.js} +2 -2
  83. package/dist/client/assets/{index-BizlRsAk.js → index-pdnGjAa-.js} +1 -1
  84. package/dist/client/assets/{index-DRSFVCQG.js → index-y9YjpvN-.js} +1 -1
  85. package/dist/client/assets/{infiniteQueryObserver-B9_hQDN4.js → infiniteQueryObserver-DMFjl81X.js} +1 -1
  86. package/dist/client/assets/{input-r-FVR1hH.js → input-C80VzPpQ.js} +1 -1
  87. package/dist/client/assets/{integration-icon-Btl0P6Zi.js → integration-icon-LX1nChXa.js} +1 -1
  88. package/dist/client/assets/{label-CDE7or5s.js → label-2a4WSF52.js} +1 -1
  89. package/dist/client/assets/{layout-DtEpOSua.js → layout-BAy6nHY2.js} +1 -1
  90. package/dist/client/assets/{lean-canvas-recruit-modal-70F-bJzI.js → lean-canvas-recruit-modal-C1vNRy0q.js} +1 -1
  91. package/dist/client/assets/{login-D6mlZnBr.js → login-BwOZspJc.js} +1 -1
  92. package/dist/client/assets/{members-B44F43x3.js → members-BxmUMFwY.js} +1 -1
  93. package/dist/client/assets/{monaco-editor-D9GcAVz1.js → monaco-editor-BY6pRUNM.js} +1 -1
  94. package/dist/client/assets/{monitoring-stats-row-9xBJedBt.js → monitoring-stats-row-BPKt_N1O.js} +1 -1
  95. package/dist/client/assets/{oauth-callback-BzeoI5mr.js → oauth-callback-Dkjb5tCM.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-ai-provider-B7fEhkFp.js → oauth-callback-ai-provider-mujJmFGt.js} +1 -1
  97. package/dist/client/assets/{onboarding-C_yRTGs2.js → onboarding-C1DRaGue.js} +1 -1
  98. package/dist/client/assets/{org-layout-xgtHVrWJ.js → org-layout-DioVArtE.js} +1 -1
  99. package/dist/client/assets/{org-plugin-layout-DjYWXXLz.js → org-plugin-layout-BZoT2SIg.js} +1 -1
  100. package/dist/client/assets/{pair-TlV_Y8fY.js → pair-CBvrXYZC.js} +1 -1
  101. package/dist/client/assets/{plugin-empty-state-wcs5uyqa.js → plugin-empty-state-DRAuC0gx.js} +1 -1
  102. package/dist/client/assets/{plugin-header-D00boOwo.js → plugin-header-Y35bsPBd.js} +1 -1
  103. package/dist/client/assets/{plugin-layout-kZMGzqtV.js → plugin-layout-BM2m7Nsv.js} +1 -1
  104. package/dist/client/assets/{popover-CENSHA5K.js → popover-CALdcEX7.js} +1 -1
  105. package/dist/client/assets/{profile-CmCDElOt.js → profile-Cz2Ymv3u.js} +1 -1
  106. package/dist/client/assets/{project-app-view-CXSUfW9V.js → project-app-view-BJIaTnR2.js} +1 -1
  107. package/dist/client/assets/registry-Bm6dPwQv.js +2 -0
  108. package/dist/client/assets/{registry-layout-jKwqcMMI.js → registry-layout-Bg8yl9if.js} +1 -1
  109. package/dist/client/assets/{required-auth-layout-ByW838Wg.js → required-auth-layout-CnSE-XLF.js} +1 -1
  110. package/dist/client/assets/{reset-password-Cn2aTTGW.js → reset-password-BEfzUzVH.js} +1 -1
  111. package/dist/client/assets/{roles-BOss14ty.js → roles-CFSaKkJP.js} +1 -1
  112. package/dist/client/assets/{scroll-area-KyXayDS_.js → scroll-area-18YOEnqD.js} +1 -1
  113. package/dist/client/assets/{search-input-LdRGRYga.js → search-input-6INcGAwd.js} +1 -1
  114. package/dist/client/assets/{select-CKhnD_dJ.js → select-CaDZpVbI.js} +1 -1
  115. package/dist/client/assets/{select-model-DSERjqbn.js → select-model-S5cFobu5.js} +1 -1
  116. package/dist/client/assets/{settings-layout-DmMGjApo.js → settings-layout-jEkhhHU3.js} +1 -1
  117. package/dist/client/assets/{settings-section-BSfLZRSf.js → settings-section-e84UGEbx.js} +1 -1
  118. package/dist/client/assets/{shell-layout-BTN4hGpk.js → shell-layout-Cdsgdqci.js} +1 -1
  119. package/dist/client/assets/{skeleton-PrntJAKB.js → skeleton-DCXc9Mjl.js} +1 -1
  120. package/dist/client/assets/{sso-Dt9Y-guZ.js → sso-DTC2FHjx.js} +1 -1
  121. package/dist/client/assets/{store-lsrePhQV.js → store-pc-wftmt.js} +1 -1
  122. package/dist/client/assets/store-registry-BCuueIrr.js +2 -0
  123. package/dist/client/assets/{switch-DIPW9oSx.js → switch-BUxRExf5.js} +1 -1
  124. package/dist/client/assets/{table-CyZKmPMu.js → table-CT5HWSPV.js} +1 -1
  125. package/dist/client/assets/{tabs-Cnic4mBc.js → tabs-Cge-9ZTd.js} +1 -1
  126. package/dist/client/assets/{task-status-B4S1zCuU.js → task-status-tGA8S8H-.js} +1 -1
  127. package/dist/client/assets/{textarea-DWnLf30W.js → textarea-Dx8hdqfA.js} +1 -1
  128. package/dist/client/assets/{toggle-group-Bw-pO6dq.js → toggle-group-psHBbDPI.js} +1 -1
  129. package/dist/client/assets/{tools-list-Ddp6jSMU.js → tools-list-tDufGw9O.js} +1 -1
  130. package/dist/client/assets/{tooltip-8sj0FPxK.js → tooltip-B-nRvfy-.js} +1 -1
  131. package/dist/client/assets/{types-CPAcvDGA.js → types-hw9no7At.js} +1 -1
  132. package/dist/client/assets/{use-ai-providers-TD5f5keD.js → use-ai-providers-Bc_Jl0e6.js} +1 -1
  133. package/dist/client/assets/{use-collections-DbJUoPI1.js → use-collections-CqIGWKSp.js} +1 -1
  134. package/dist/client/assets/{use-connection-EBpfvjCE.js → use-connection-DuXPSqwF.js} +1 -1
  135. package/dist/client/assets/{use-copy-DNbmGYTy.js → use-copy-CJlR4d5Y.js} +1 -1
  136. package/dist/client/assets/{use-create-virtual-mcp-oePzdlSN.js → use-create-virtual-mcp-B-gULvH7.js} +1 -1
  137. package/dist/client/assets/{use-decopilot-events-CTJPtEAG.js → use-decopilot-events-CWIgEPKA.js} +1 -1
  138. package/dist/client/assets/{use-delete-connection-DeDsXAxU.js → use-delete-connection-mOKpqJ4Z.js} +1 -1
  139. package/dist/client/assets/{use-infinite-scroll-Blb-Zkmq.js → use-infinite-scroll-HGu4x7ZU.js} +1 -1
  140. package/dist/client/assets/{use-list-state-Bt40g0pF.js → use-list-state-Dlljnhsv.js} +1 -1
  141. package/dist/client/assets/{use-mcp-tools-yGAchpt7.js → use-mcp-tools-BkDSNv3W.js} +1 -1
  142. package/dist/client/assets/{use-members-elTW2IMS.js → use-members-8sha4K9R.js} +1 -1
  143. package/dist/client/assets/{use-navigate-to-agent-XL440g7Q.js → use-navigate-to-agent-B5j-9-p3.js} +1 -1
  144. package/dist/client/assets/{use-org-auth-client-kuXtTIo4.js → use-org-auth-client-Ev284uyK.js} +1 -1
  145. package/dist/client/assets/{use-org-sso-DzmlEuU4.js → use-org-sso-CD6laYaL.js} +1 -1
  146. package/dist/client/assets/{use-organization-roles-B18S9BiQ.js → use-organization-roles-CN53ZUes.js} +1 -1
  147. package/dist/client/assets/{use-organization-settings-vi5z2D5l.js → use-organization-settings-DFNDQvXK.js} +1 -1
  148. package/dist/client/assets/{use-registry-connections-vdam_2jo.js → use-registry-connections-D1xCWobU.js} +1 -1
  149. package/dist/client/assets/{use-status-sounds-DVkOG6QZ.js → use-status-sounds-ojr3d2EQ.js} +1 -1
  150. package/dist/client/assets/{use-tasks-BSCdum36.js → use-tasks-DFEEn9nC.js} +1 -1
  151. package/dist/client/assets/{use-view-mode-IRjBIGSa.js → use-view-mode-BjLGHFfJ.js} +1 -1
  152. package/dist/client/assets/{use-virtual-mcp-BOr32Cw9.js → use-virtual-mcp-Qy5dDA1Q.js} +1 -1
  153. package/dist/client/assets/useInfiniteQuery-B82zG1fE.js +1 -0
  154. package/dist/client/assets/useSuspenseInfiniteQuery-4BiVmPoE.js +1 -0
  155. package/dist/client/assets/{user-Cr4eZetj.js → user-ysfLNnXi.js} +1 -1
  156. package/dist/client/assets/{view-mode-toggle-DqaIt4c7.js → view-mode-toggle-C5L447if.js} +1 -1
  157. package/dist/client/assets/{workflow-f-0F4vKd.js → workflow-CWouU_7K.js} +1 -1
  158. package/dist/client/assets/workflow-detail-rg2LspQv.js +1 -0
  159. package/dist/client/index.html +1 -1
  160. package/dist/server/cli.js +42 -10
  161. package/dist/server/server.js +41 -9
  162. package/package.json +1 -1
  163. package/dist/client/assets/ai-providers-3jYxMl4T.js +0 -1
  164. package/dist/client/assets/index-CSOTvYaA.js +0 -1
  165. package/dist/client/assets/registry-M9hpVTeC.js +0 -2
  166. package/dist/client/assets/store-registry-BiQl34xL.js +0 -2
  167. package/dist/client/assets/useInfiniteQuery-D6CYdRiz.js +0 -1
  168. package/dist/client/assets/useSuspenseInfiniteQuery-hnE5tAGb.js +0 -1
  169. package/dist/client/assets/workflow-detail-CHEOWOns.js +0 -1
  170. package/dist/server/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  171. package/dist/server/node_modules/is-fullwidth-code-point/index.js +0 -12
  172. package/dist/server/node_modules/is-fullwidth-code-point/license +0 -9
  173. package/dist/server/node_modules/is-fullwidth-code-point/package.json +0 -53
  174. package/dist/server/node_modules/is-fullwidth-code-point/readme.md +0 -31
  175. package/dist/server/node_modules/pg/LICENSE +0 -21
  176. package/dist/server/node_modules/pg/README.md +0 -95
  177. package/dist/server/node_modules/pg/esm/index.mjs +0 -20
  178. package/dist/server/node_modules/pg/lib/client.js +0 -743
  179. package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
  180. package/dist/server/node_modules/pg/lib/connection.js +0 -221
  181. package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
  182. package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
  183. package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
  184. package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
  185. package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
  186. package/dist/server/node_modules/pg/lib/defaults.js +0 -91
  187. package/dist/server/node_modules/pg/lib/index.js +0 -73
  188. package/dist/server/node_modules/pg/lib/native/client.js +0 -323
  189. package/dist/server/node_modules/pg/lib/native/index.js +0 -2
  190. package/dist/server/node_modules/pg/lib/native/query.js +0 -165
  191. package/dist/server/node_modules/pg/lib/query.js +0 -252
  192. package/dist/server/node_modules/pg/lib/result.js +0 -109
  193. package/dist/server/node_modules/pg/lib/stream.js +0 -83
  194. package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
  195. package/dist/server/node_modules/pg/lib/utils.js +0 -217
  196. package/dist/server/node_modules/pg/package.json +0 -76
  197. package/dist/server/node_modules/pg-int8/LICENSE +0 -13
  198. package/dist/server/node_modules/pg-int8/README.md +0 -16
  199. package/dist/server/node_modules/pg-int8/index.js +0 -100
  200. package/dist/server/node_modules/pg-int8/package.json +0 -24
  201. package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
  202. package/dist/server/node_modules/postgres-interval/index.js +0 -125
  203. package/dist/server/node_modules/postgres-interval/license +0 -21
  204. package/dist/server/node_modules/postgres-interval/package.json +0 -36
  205. package/dist/server/node_modules/postgres-interval/readme.md +0 -48
@@ -1,171 +0,0 @@
1
- 'use strict'
2
-
3
- const dns = require('dns')
4
-
5
- const defaults = require('./defaults')
6
-
7
- const parse = require('pg-connection-string').parse // parses a connection string
8
-
9
- const val = function (key, config, envVar) {
10
- if (config[key]) {
11
- return config[key]
12
- }
13
-
14
- if (envVar === undefined) {
15
- envVar = process.env['PG' + key.toUpperCase()]
16
- } else if (envVar === false) {
17
- // do nothing ... use false
18
- } else {
19
- envVar = process.env[envVar]
20
- }
21
-
22
- return envVar || defaults[key]
23
- }
24
-
25
- const readSSLConfigFromEnvironment = function () {
26
- switch (process.env.PGSSLMODE) {
27
- case 'disable':
28
- return false
29
- case 'prefer':
30
- case 'require':
31
- case 'verify-ca':
32
- case 'verify-full':
33
- return true
34
- case 'no-verify':
35
- return { rejectUnauthorized: false }
36
- }
37
- return defaults.ssl
38
- }
39
-
40
- // Convert arg to a string, surround in single quotes, and escape single quotes and backslashes
41
- const quoteParamValue = function (value) {
42
- return "'" + ('' + value).replace(/\\/g, '\\\\').replace(/'/g, "\\'") + "'"
43
- }
44
-
45
- const add = function (params, config, paramName) {
46
- const value = config[paramName]
47
- if (value !== undefined && value !== null) {
48
- params.push(paramName + '=' + quoteParamValue(value))
49
- }
50
- }
51
-
52
- class ConnectionParameters {
53
- constructor(config) {
54
- // if a string is passed, it is a raw connection string so we parse it into a config
55
- config = typeof config === 'string' ? parse(config) : config || {}
56
-
57
- // if the config has a connectionString defined, parse IT into the config we use
58
- // this will override other default values with what is stored in connectionString
59
- if (config.connectionString) {
60
- config = Object.assign({}, config, parse(config.connectionString))
61
- }
62
-
63
- this.user = val('user', config)
64
- this.database = val('database', config)
65
-
66
- if (this.database === undefined) {
67
- this.database = this.user
68
- }
69
-
70
- this.port = parseInt(val('port', config), 10)
71
- this.host = val('host', config)
72
-
73
- // "hiding" the password so it doesn't show up in stack traces
74
- // or if the client is console.logged
75
- Object.defineProperty(this, 'password', {
76
- configurable: true,
77
- enumerable: false,
78
- writable: true,
79
- value: val('password', config),
80
- })
81
-
82
- this.binary = val('binary', config)
83
- this.options = val('options', config)
84
-
85
- this.ssl = typeof config.ssl === 'undefined' ? readSSLConfigFromEnvironment() : config.ssl
86
-
87
- if (typeof this.ssl === 'string') {
88
- if (this.ssl === 'true') {
89
- this.ssl = true
90
- }
91
- }
92
- // support passing in ssl=no-verify via connection string
93
- if (this.ssl === 'no-verify') {
94
- this.ssl = { rejectUnauthorized: false }
95
- }
96
- if (this.ssl && this.ssl.key) {
97
- Object.defineProperty(this.ssl, 'key', {
98
- enumerable: false,
99
- })
100
- }
101
-
102
- this.client_encoding = val('client_encoding', config)
103
- this.replication = val('replication', config)
104
- // a domain socket begins with '/'
105
- this.isDomainSocket = !(this.host || '').indexOf('/')
106
-
107
- this.application_name = val('application_name', config, 'PGAPPNAME')
108
- this.fallback_application_name = val('fallback_application_name', config, false)
109
- this.statement_timeout = val('statement_timeout', config, false)
110
- this.lock_timeout = val('lock_timeout', config, false)
111
- this.idle_in_transaction_session_timeout = val('idle_in_transaction_session_timeout', config, false)
112
- this.query_timeout = val('query_timeout', config, false)
113
-
114
- if (config.connectionTimeoutMillis === undefined) {
115
- this.connect_timeout = process.env.PGCONNECT_TIMEOUT || 0
116
- } else {
117
- this.connect_timeout = Math.floor(config.connectionTimeoutMillis / 1000)
118
- }
119
-
120
- if (config.keepAlive === false) {
121
- this.keepalives = 0
122
- } else if (config.keepAlive === true) {
123
- this.keepalives = 1
124
- }
125
-
126
- if (typeof config.keepAliveInitialDelayMillis === 'number') {
127
- this.keepalives_idle = Math.floor(config.keepAliveInitialDelayMillis / 1000)
128
- }
129
- }
130
-
131
- getLibpqConnectionString(cb) {
132
- const params = []
133
- add(params, this, 'user')
134
- add(params, this, 'password')
135
- add(params, this, 'port')
136
- add(params, this, 'application_name')
137
- add(params, this, 'fallback_application_name')
138
- add(params, this, 'connect_timeout')
139
- add(params, this, 'options')
140
-
141
- const ssl = typeof this.ssl === 'object' ? this.ssl : this.ssl ? { sslmode: this.ssl } : {}
142
- add(params, ssl, 'sslmode')
143
- add(params, ssl, 'sslca')
144
- add(params, ssl, 'sslkey')
145
- add(params, ssl, 'sslcert')
146
- add(params, ssl, 'sslrootcert')
147
-
148
- if (this.database) {
149
- params.push('dbname=' + quoteParamValue(this.database))
150
- }
151
- if (this.replication) {
152
- params.push('replication=' + quoteParamValue(this.replication))
153
- }
154
- if (this.host) {
155
- params.push('host=' + quoteParamValue(this.host))
156
- }
157
- if (this.isDomainSocket) {
158
- return cb(null, params.join(' '))
159
- }
160
- if (this.client_encoding) {
161
- params.push('client_encoding=' + quoteParamValue(this.client_encoding))
162
- }
163
- dns.lookup(this.host, function (err, address) {
164
- if (err) return cb(err, null)
165
- params.push('hostaddr=' + quoteParamValue(address))
166
- return cb(null, params.join(' '))
167
- })
168
- }
169
- }
170
-
171
- module.exports = ConnectionParameters
@@ -1,221 +0,0 @@
1
- 'use strict'
2
-
3
- const EventEmitter = require('events').EventEmitter
4
-
5
- const { parse, serialize } = require('pg-protocol')
6
- const { getStream, getSecureStream } = require('./stream')
7
-
8
- const flushBuffer = serialize.flush()
9
- const syncBuffer = serialize.sync()
10
- const endBuffer = serialize.end()
11
-
12
- // TODO(bmc) support binary mode at some point
13
- class Connection extends EventEmitter {
14
- constructor(config) {
15
- super()
16
- config = config || {}
17
-
18
- this.stream = config.stream || getStream(config.ssl)
19
- if (typeof this.stream === 'function') {
20
- this.stream = this.stream(config)
21
- }
22
-
23
- this._keepAlive = config.keepAlive
24
- this._keepAliveInitialDelayMillis = config.keepAliveInitialDelayMillis
25
- this.parsedStatements = {}
26
- this.ssl = config.ssl || false
27
- this._ending = false
28
- this._emitMessage = false
29
- const self = this
30
- this.on('newListener', function (eventName) {
31
- if (eventName === 'message') {
32
- self._emitMessage = true
33
- }
34
- })
35
- }
36
-
37
- connect(port, host) {
38
- const self = this
39
-
40
- this._connecting = true
41
- this.stream.setNoDelay(true)
42
- this.stream.connect(port, host)
43
-
44
- this.stream.once('connect', function () {
45
- if (self._keepAlive) {
46
- self.stream.setKeepAlive(true, self._keepAliveInitialDelayMillis)
47
- }
48
- self.emit('connect')
49
- })
50
-
51
- const reportStreamError = function (error) {
52
- // errors about disconnections should be ignored during disconnect
53
- if (self._ending && (error.code === 'ECONNRESET' || error.code === 'EPIPE')) {
54
- return
55
- }
56
- self.emit('error', error)
57
- }
58
- this.stream.on('error', reportStreamError)
59
-
60
- this.stream.on('close', function () {
61
- self.emit('end')
62
- })
63
-
64
- if (!this.ssl) {
65
- return this.attachListeners(this.stream)
66
- }
67
-
68
- this.stream.once('data', function (buffer) {
69
- const responseCode = buffer.toString('utf8')
70
- switch (responseCode) {
71
- case 'S': // Server supports SSL connections, continue with a secure connection
72
- break
73
- case 'N': // Server does not support SSL connections
74
- self.stream.end()
75
- return self.emit('error', new Error('The server does not support SSL connections'))
76
- default:
77
- // Any other response byte, including 'E' (ErrorResponse) indicating a server error
78
- self.stream.end()
79
- return self.emit('error', new Error('There was an error establishing an SSL connection'))
80
- }
81
- const options = {
82
- socket: self.stream,
83
- }
84
-
85
- if (self.ssl !== true) {
86
- Object.assign(options, self.ssl)
87
-
88
- if ('key' in self.ssl) {
89
- options.key = self.ssl.key
90
- }
91
- }
92
-
93
- const net = require('net')
94
- if (net.isIP && net.isIP(host) === 0) {
95
- options.servername = host
96
- }
97
- try {
98
- self.stream = getSecureStream(options)
99
- } catch (err) {
100
- return self.emit('error', err)
101
- }
102
- self.attachListeners(self.stream)
103
- self.stream.on('error', reportStreamError)
104
-
105
- self.emit('sslconnect')
106
- })
107
- }
108
-
109
- attachListeners(stream) {
110
- parse(stream, (msg) => {
111
- const eventName = msg.name === 'error' ? 'errorMessage' : msg.name
112
- if (this._emitMessage) {
113
- this.emit('message', msg)
114
- }
115
- this.emit(eventName, msg)
116
- })
117
- }
118
-
119
- requestSsl() {
120
- this.stream.write(serialize.requestSsl())
121
- }
122
-
123
- startup(config) {
124
- this.stream.write(serialize.startup(config))
125
- }
126
-
127
- cancel(processID, secretKey) {
128
- this._send(serialize.cancel(processID, secretKey))
129
- }
130
-
131
- password(password) {
132
- this._send(serialize.password(password))
133
- }
134
-
135
- sendSASLInitialResponseMessage(mechanism, initialResponse) {
136
- this._send(serialize.sendSASLInitialResponseMessage(mechanism, initialResponse))
137
- }
138
-
139
- sendSCRAMClientFinalMessage(additionalData) {
140
- this._send(serialize.sendSCRAMClientFinalMessage(additionalData))
141
- }
142
-
143
- _send(buffer) {
144
- if (!this.stream.writable) {
145
- return false
146
- }
147
- return this.stream.write(buffer)
148
- }
149
-
150
- query(text) {
151
- this._send(serialize.query(text))
152
- }
153
-
154
- // send parse message
155
- parse(query) {
156
- this._send(serialize.parse(query))
157
- }
158
-
159
- // send bind message
160
- bind(config) {
161
- this._send(serialize.bind(config))
162
- }
163
-
164
- // send execute message
165
- execute(config) {
166
- this._send(serialize.execute(config))
167
- }
168
-
169
- flush() {
170
- if (this.stream.writable) {
171
- this.stream.write(flushBuffer)
172
- }
173
- }
174
-
175
- sync() {
176
- this._ending = true
177
- this._send(syncBuffer)
178
- }
179
-
180
- ref() {
181
- this.stream.ref()
182
- }
183
-
184
- unref() {
185
- this.stream.unref()
186
- }
187
-
188
- end() {
189
- // 0x58 = 'X'
190
- this._ending = true
191
- if (!this._connecting || !this.stream.writable) {
192
- this.stream.end()
193
- return
194
- }
195
- return this.stream.write(endBuffer, () => {
196
- this.stream.end()
197
- })
198
- }
199
-
200
- close(msg) {
201
- this._send(serialize.close(msg))
202
- }
203
-
204
- describe(msg) {
205
- this._send(serialize.describe(msg))
206
- }
207
-
208
- sendCopyFromChunk(chunk) {
209
- this._send(serialize.copyData(chunk))
210
- }
211
-
212
- endCopyFrom() {
213
- this._send(serialize.copyDone())
214
- }
215
-
216
- sendCopyFail(msg) {
217
- this._send(serialize.copyFail(msg))
218
- }
219
- }
220
-
221
- module.exports = Connection
@@ -1,122 +0,0 @@
1
- function x509Error(msg, cert) {
2
- return new Error('SASL channel binding: ' + msg + ' when parsing public certificate ' + cert.toString('base64'))
3
- }
4
-
5
- function readASN1Length(data, index) {
6
- let length = data[index++]
7
- if (length < 0x80) return { length, index }
8
-
9
- const lengthBytes = length & 0x7f
10
- if (lengthBytes > 4) throw x509Error('bad length', data)
11
-
12
- length = 0
13
- for (let i = 0; i < lengthBytes; i++) {
14
- length = (length << 8) | data[index++]
15
- }
16
-
17
- return { length, index }
18
- }
19
-
20
- function readASN1OID(data, index) {
21
- if (data[index++] !== 0x6) throw x509Error('non-OID data', data) // 6 = OID
22
-
23
- const { length: OIDLength, index: indexAfterOIDLength } = readASN1Length(data, index)
24
- index = indexAfterOIDLength
25
- const lastIndex = index + OIDLength
26
-
27
- const byte1 = data[index++]
28
- let oid = ((byte1 / 40) >> 0) + '.' + (byte1 % 40)
29
-
30
- while (index < lastIndex) {
31
- // loop over numbers in OID
32
- let value = 0
33
- while (index < lastIndex) {
34
- // loop over bytes in number
35
- const nextByte = data[index++]
36
- value = (value << 7) | (nextByte & 0x7f)
37
- if (nextByte < 0x80) break
38
- }
39
- oid += '.' + value
40
- }
41
-
42
- return { oid, index }
43
- }
44
-
45
- function expectASN1Seq(data, index) {
46
- if (data[index++] !== 0x30) throw x509Error('non-sequence data', data) // 30 = Sequence
47
- return readASN1Length(data, index)
48
- }
49
-
50
- function signatureAlgorithmHashFromCertificate(data, index) {
51
- // read this thread: https://www.postgresql.org/message-id/17760-b6c61e752ec07060%40postgresql.org
52
- if (index === undefined) index = 0
53
- index = expectASN1Seq(data, index).index
54
- const { length: certInfoLength, index: indexAfterCertInfoLength } = expectASN1Seq(data, index)
55
- index = indexAfterCertInfoLength + certInfoLength // skip over certificate info
56
- index = expectASN1Seq(data, index).index // skip over signature length field
57
- const { oid, index: indexAfterOID } = readASN1OID(data, index)
58
- switch (oid) {
59
- // RSA
60
- case '1.2.840.113549.1.1.4':
61
- return 'MD5'
62
- case '1.2.840.113549.1.1.5':
63
- return 'SHA-1'
64
- case '1.2.840.113549.1.1.11':
65
- return 'SHA-256'
66
- case '1.2.840.113549.1.1.12':
67
- return 'SHA-384'
68
- case '1.2.840.113549.1.1.13':
69
- return 'SHA-512'
70
- case '1.2.840.113549.1.1.14':
71
- return 'SHA-224'
72
- case '1.2.840.113549.1.1.15':
73
- return 'SHA512-224'
74
- case '1.2.840.113549.1.1.16':
75
- return 'SHA512-256'
76
- // ECDSA
77
- case '1.2.840.10045.4.1':
78
- return 'SHA-1'
79
- case '1.2.840.10045.4.3.1':
80
- return 'SHA-224'
81
- case '1.2.840.10045.4.3.2':
82
- return 'SHA-256'
83
- case '1.2.840.10045.4.3.3':
84
- return 'SHA-384'
85
- case '1.2.840.10045.4.3.4':
86
- return 'SHA-512'
87
- // RSASSA-PSS: hash is indicated separately
88
- case '1.2.840.113549.1.1.10': {
89
- index = indexAfterOID
90
- index = expectASN1Seq(data, index).index
91
- if (data[index++] !== 0xa0) throw x509Error('non-tag data', data) // a0 = constructed tag 0
92
- index = readASN1Length(data, index).index // skip over tag length field
93
- index = expectASN1Seq(data, index).index // skip over sequence length field
94
- const { oid: hashOID } = readASN1OID(data, index)
95
- switch (hashOID) {
96
- // standalone hash OIDs
97
- case '1.2.840.113549.2.5':
98
- return 'MD5'
99
- case '1.3.14.3.2.26':
100
- return 'SHA-1'
101
- case '2.16.840.1.101.3.4.2.1':
102
- return 'SHA-256'
103
- case '2.16.840.1.101.3.4.2.2':
104
- return 'SHA-384'
105
- case '2.16.840.1.101.3.4.2.3':
106
- return 'SHA-512'
107
- }
108
- throw x509Error('unknown hash OID ' + hashOID, data)
109
- }
110
- // Ed25519 -- see https: return//github.com/openssl/openssl/issues/15477
111
- case '1.3.101.110':
112
- case '1.3.101.112': // ph
113
- return 'SHA-512'
114
- // Ed448 -- still not in pg 17.2 (if supported, digest would be SHAKE256 x 64 bytes)
115
- case '1.3.101.111':
116
- case '1.3.101.113': // ph
117
- throw x509Error('Ed448 certificate channel binding is not currently supported by Postgres')
118
- }
119
- throw x509Error('unknown OID ' + oid, data)
120
- }
121
-
122
- module.exports = { signatureAlgorithmHashFromCertificate }