decocms 2.311.1 → 2.311.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 (507) hide show
  1. package/dist/client/assets/{AlertCircle-GVxuU95v.js → AlertCircle-DZ5eg3QE.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-CZSxj8rY.js → ArrowNarrowLeft-1yI5FVCq.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-C9_9n6RS.js → ArrowUpRight-BHidxwxm.js} +1 -1
  4. package/dist/client/assets/{Check-B7RZVj2P.js → Check-Dw0791ut.js} +1 -1
  5. package/dist/client/assets/{CheckCircle-CpSCTcKF.js → CheckCircle-BpVjAVGG.js} +1 -1
  6. package/dist/client/assets/{ChevronDown-PN1FfGGP.js → ChevronDown-C4G6jLVm.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-B87-4gCD.js → ChevronRight-L-rlViOq.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-DXZ6bMcP.js → ChevronUp-4oGwYYrV.js} +1 -1
  9. package/dist/client/assets/{Container-Bn1bP0Yi.js → Container-1OJhud4n.js} +1 -1
  10. package/dist/client/assets/{DotsVertical-0NEZeBK_.js → DotsVertical-CRhKzL3Z.js} +1 -1
  11. package/dist/client/assets/{LinkExternal01-Cl6M9_6y.js → LinkExternal01-CT0C3v5M.js} +1 -1
  12. package/dist/client/assets/{Lock01-BNDVtNp3.js → Lock01-NALqVAd4.js} +1 -1
  13. package/dist/client/assets/{Palette-BgYWS9GS.js → Palette-B49S2k5j.js} +1 -1
  14. package/dist/client/assets/{Play-jAQMD8Zy.js → Play-D2-YC-0X.js} +1 -1
  15. package/dist/client/assets/{Plus-Decn041v.js → Plus-BwRT24yO.js} +1 -1
  16. package/dist/client/assets/{RefreshCcw01-2tEGwXNO.js → RefreshCcw01-BJA8p2-V.js} +1 -1
  17. package/dist/client/assets/{SearchMd-xzJx66s8.js → SearchMd-8EQr6MDa.js} +1 -1
  18. package/dist/client/assets/{Settings02-I39qsUEU.js → Settings02-BR7-LgkT.js} +1 -1
  19. package/dist/client/assets/{Shield01-DJsSZNak.js → Shield01-CmUy76z8.js} +1 -1
  20. package/dist/client/assets/{Star01-VbAdZ1nM.js → Star01-CrZZMK_h.js} +1 -1
  21. package/dist/client/assets/{Sun-qACU13Q-.js → Sun-BrBo82rN.js} +1 -1
  22. package/dist/client/assets/{Tool01-BqlBf1k7.js → Tool01-CnVLW8Ff.js} +1 -1
  23. package/dist/client/assets/{Trash01-BqSCZqrj.js → Trash01-CqcArs7X.js} +1 -1
  24. package/dist/client/assets/{User01-w8zyOHhj.js → User01-CBWDKiqM.js} +1 -1
  25. package/dist/client/assets/{Users03-n9zzJAad.js → Users03-lMWEL75e.js} +1 -1
  26. package/dist/client/assets/{X-Cwv9W6IH.js → X-Bgn4m6iE.js} +1 -1
  27. package/dist/client/assets/{XCircle-VMAL-xhy.js → XCircle-C7dtAhFo.js} +1 -1
  28. package/dist/client/assets/{XClose-GzEq-HU9.js → XClose-DAS6g7IB.js} +1 -1
  29. package/dist/client/assets/{Zap-D93qKeqm.js → Zap-D4YLhHLH.js} +1 -1
  30. package/dist/client/assets/{ZapSquare-CGJC1mww.js → ZapSquare-DW8WgORO.js} +1 -1
  31. package/dist/client/assets/{accordion-ZNyW-Q9t.js → accordion-w2pr29VL.js} +1 -1
  32. package/dist/client/assets/{agent-icon-zc2fqM1k.js → agent-icon-CoSygmB4.js} +1 -1
  33. package/dist/client/assets/{agents-list-UtLvJq-k.js → agents-list-BmcHuxVe.js} +1 -1
  34. package/dist/client/assets/ai-providers-wvV25hLp.js +1 -0
  35. package/dist/client/assets/{alert-dialog-7vNv5N4P.js → alert-dialog-j_H6Duj2.js} +1 -1
  36. package/dist/client/assets/{auth-catchall-DnPh1GEo.js → auth-catchall-g0qxiTpM.js} +1 -1
  37. package/dist/client/assets/{automation-list-row-Cu-q04m4.js → automation-list-row-BwSlxsKi.js} +1 -1
  38. package/dist/client/assets/{automations-CU2EtM_4.js → automations-CZKFrDcG.js} +1 -1
  39. package/dist/client/assets/{avatar-Dda8SxzC.js → avatar-DH5nI_or.js} +1 -1
  40. package/dist/client/assets/{badge-C_Ey5yTa.js → badge-BITu5EVC.js} +1 -1
  41. package/dist/client/assets/{brand-context-pyqxXmJT.js → brand-context-6Yt9jzFn.js} +1 -1
  42. package/dist/client/assets/{card-BqDVz8rB.js → card-En6r2E_A.js} +1 -1
  43. package/dist/client/assets/{chat-context-B6Fg09sU.js → chat-context-CdP_0Ara.js} +1 -1
  44. package/dist/client/assets/{checkbox-CwdZbdGd.js → checkbox-DfdgwpYz.js} +1 -1
  45. package/dist/client/assets/{collection-detail-WOE1iHbK.js → collection-detail-Cq2qud8Y.js} +1 -1
  46. package/dist/client/assets/{collection-display-button-QyBcFXO8.js → collection-display-button-C9fQJGtX.js} +1 -1
  47. package/dist/client/assets/{collection-search-FuJrX0DL.js → collection-search-DFFtMlUb.js} +1 -1
  48. package/dist/client/assets/{collection-search-BPpIzKqG.js → collection-search-LW_e8pOY.js} +1 -1
  49. package/dist/client/assets/{collection-table-wrapper-k2i9yb0q.js → collection-table-wrapper-B2VGx1DA.js} +1 -1
  50. package/dist/client/assets/{collection-tabs-Bbxi3Lhu.js → collection-tabs-ie4BgKCV.js} +1 -1
  51. package/dist/client/assets/{collections-BXMI7Hvf.js → collections-D8nUEds8.js} +1 -1
  52. package/dist/client/assets/{command-CcKs3phr.js → command-BXrAL_Fp.js} +1 -1
  53. package/dist/client/assets/{connection-card-C9ObrVFa.js → connection-card-B3usJZNT.js} +1 -1
  54. package/dist/client/assets/{connection-detail-DXmyznni.js → connection-detail-BLvhyH8Y.js} +1 -1
  55. package/dist/client/assets/{connection-form-helpers-CLWU-iGL.js → connection-form-helpers-DJ9jYCyJ.js} +1 -1
  56. package/dist/client/assets/{connections-EFejJy4T.js → connections-JJSt3920.js} +1 -1
  57. package/dist/client/assets/{constants-DNYERMOq.js → constants-C_0Pvn36.js} +1 -1
  58. package/dist/client/assets/{constants-Bad0DdgK.js → constants-xCxa-gM5.js} +1 -1
  59. package/dist/client/assets/{dialog-BcmogFZk.js → dialog-CQJ1jbHU.js} +1 -1
  60. package/dist/client/assets/{domain-settings-QGlFO294.js → domain-settings-KzIawZDz.js} +1 -1
  61. package/dist/client/assets/{drawer-CFDUaOVL.js → drawer-CRXUsV25.js} +1 -1
  62. package/dist/client/assets/{dropdown-menu-NvUf9a-j.js → dropdown-menu-B0p6J489.js} +1 -1
  63. package/dist/client/assets/{dynamic-plugin-layout-CNm9aSBE.js → dynamic-plugin-layout-hX-cElnB.js} +1 -1
  64. package/dist/client/assets/{empty-state-Dg7DOfxH.js → empty-state-CTTNNvC-.js} +1 -1
  65. package/dist/client/assets/{empty-state-CYPi3AWF.js → empty-state-DiIlkZVx.js} +1 -1
  66. package/dist/client/assets/{extract-connection-data-Crk93y-a.js → extract-connection-data-D5DCgJwZ.js} +1 -1
  67. package/dist/client/assets/{features-c-yBM4_h.js → features-CcS8M1BD.js} +1 -1
  68. package/dist/client/assets/{form-BbDiaTsN.js → form-D0XM9Oz-.js} +1 -1
  69. package/dist/client/assets/{general-BxBx3E8g.js → general-Ci0gKW7e.js} +1 -1
  70. package/dist/client/assets/{index-D-aGIpWM.js → index-08_qSeNu.js} +1 -1
  71. package/dist/client/assets/{index-DDUZQ_xH.js → index-8ASwCWdl.js} +1 -1
  72. package/dist/client/assets/{index-C3btaY0r.js → index-B2YlGv2D.js} +1 -1
  73. package/dist/client/assets/{index-D5c2Coqp.js → index-BbCoi7Kc.js} +3 -3
  74. package/dist/client/assets/{index-D3w8D7D3.js → index-BkAVJvYj.js} +1 -1
  75. package/dist/client/assets/{index-bUNQ5NEg.js → index-BuupSAqF.js} +1 -1
  76. package/dist/client/assets/{index-CvwiLDhg.js → index-Bzm-pgKW.js} +1 -1
  77. package/dist/client/assets/{index-Dl4CZy6K.js → index-Ce3hTrjw.js} +1 -1
  78. package/dist/client/assets/{index-BEwswwod.js → index-CtORjixM.js} +1 -1
  79. package/dist/client/assets/{index-Bom1zwxj.js → index-DN5Efs9x.js} +1 -1
  80. package/dist/client/assets/{index-rnnpRGp3.js → index-DvT00rVT.js} +1 -1
  81. package/dist/client/assets/{index-DmMHdsYF.js → index-Kg1PzPFs.js} +1 -1
  82. package/dist/client/assets/{index--qrsfEvC.js → index-N3u8642D.js} +1 -1
  83. package/dist/client/assets/{index-BVe-IL8_.js → index-TmBzv9_n.js} +1 -1
  84. package/dist/client/assets/{index-B3GjV7OW.js → index-XtKSdEVT.js} +2 -2
  85. package/dist/client/assets/{index-CLSBe_a4.js → index-gf-c6sSg.js} +1 -1
  86. package/dist/client/assets/{infiniteQueryObserver-RMKX6Nq0.js → infiniteQueryObserver-CGPZBNLK.js} +1 -1
  87. package/dist/client/assets/{input-bkK8ZE7l.js → input-CA3wFziO.js} +1 -1
  88. package/dist/client/assets/{integration-icon-dKiJ5-c6.js → integration-icon-DB1BI0re.js} +1 -1
  89. package/dist/client/assets/{label-DTMz5O44.js → label-CsQ7X2nY.js} +1 -1
  90. package/dist/client/assets/{layout-LMk5O_ZK.js → layout-_eILQ4qX.js} +1 -1
  91. package/dist/client/assets/{lean-canvas-recruit-modal-BAnvgszw.js → lean-canvas-recruit-modal-DS3BEBlK.js} +1 -1
  92. package/dist/client/assets/{login-DL4UCCOO.js → login-BlD2FW6R.js} +1 -1
  93. package/dist/client/assets/{members-xgiddo21.js → members-CWZmvp91.js} +1 -1
  94. package/dist/client/assets/{monaco-editor-C2N0lO8-.js → monaco-editor-CoS3uflL.js} +1 -1
  95. package/dist/client/assets/{monitoring-stats-row-B1WEuAdI.js → monitoring-stats-row-CViWaRD_.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-CEDkVwJ-.js → oauth-callback-CU5hLq_2.js} +1 -1
  97. package/dist/client/assets/{oauth-callback-ai-provider-Dg9MI2Au.js → oauth-callback-ai-provider-BeHCFfTz.js} +1 -1
  98. package/dist/client/assets/{onboarding-DkXotH-C.js → onboarding-1sE9lrXr.js} +1 -1
  99. package/dist/client/assets/{org-layout-BZIyzExD.js → org-layout-DjQQV-Zl.js} +1 -1
  100. package/dist/client/assets/{org-plugin-layout-DMO9tynz.js → org-plugin-layout-DAhuto61.js} +1 -1
  101. package/dist/client/assets/{pair-Cbmyley2.js → pair-2_9kst7n.js} +1 -1
  102. package/dist/client/assets/{plugin-empty-state-9QQH63Km.js → plugin-empty-state-HCn3LT7f.js} +1 -1
  103. package/dist/client/assets/{plugin-header-Ca6fhiCD.js → plugin-header-BURSuFWr.js} +1 -1
  104. package/dist/client/assets/{plugin-layout-CL9tTgtN.js → plugin-layout-D26XJiuJ.js} +1 -1
  105. package/dist/client/assets/{popover-a3tMurU4.js → popover-DVrNLUGd.js} +1 -1
  106. package/dist/client/assets/{profile-D7pjioBj.js → profile-u4Q_ge8P.js} +1 -1
  107. package/dist/client/assets/{project-app-view-BhV2wKdY.js → project-app-view-TR-LCEsF.js} +1 -1
  108. package/dist/client/assets/registry-9FuEyggS.js +2 -0
  109. package/dist/client/assets/{registry-layout-BaWcD2qA.js → registry-layout-CBmViIei.js} +1 -1
  110. package/dist/client/assets/{required-auth-layout-CnaH9rpW.js → required-auth-layout-zpm5EQiY.js} +1 -1
  111. package/dist/client/assets/{reset-password-vwj49aZP.js → reset-password-BBgklwFT.js} +1 -1
  112. package/dist/client/assets/{roles-DphWxHYt.js → roles-BFmJtd_3.js} +1 -1
  113. package/dist/client/assets/{scroll-area-DqbokeCV.js → scroll-area-CTB7VMjJ.js} +1 -1
  114. package/dist/client/assets/{search-input-DAsaTE5l.js → search-input-CDZEhQeH.js} +1 -1
  115. package/dist/client/assets/{select-Dli7sWvO.js → select-Ck5CQAzm.js} +1 -1
  116. package/dist/client/assets/{select-model-BaOTlcuq.js → select-model-WqEqjF0n.js} +1 -1
  117. package/dist/client/assets/{settings-layout-CjXYIm0R.js → settings-layout-OR4Oj5Bz.js} +1 -1
  118. package/dist/client/assets/{settings-section-DBJaYBiY.js → settings-section-hGFEsbcg.js} +1 -1
  119. package/dist/client/assets/{shell-layout-BMRtkmni.js → shell-layout-DgbQScgJ.js} +1 -1
  120. package/dist/client/assets/{skeleton-H0I9mnBy.js → skeleton-15S9YHo5.js} +1 -1
  121. package/dist/client/assets/{sso-DYCaqBsm.js → sso-Clf1UBGT.js} +1 -1
  122. package/dist/client/assets/store-registry-D1p6Sky6.js +2 -0
  123. package/dist/client/assets/{store-uDsU3GrB.js → store-s535k-0R.js} +1 -1
  124. package/dist/client/assets/{switch-BdqZBTdM.js → switch-DZpAuoR4.js} +1 -1
  125. package/dist/client/assets/{table-DK414n0F.js → table-Di3ejdIM.js} +1 -1
  126. package/dist/client/assets/{tabs-CeGpUpHP.js → tabs-CZODVyGB.js} +1 -1
  127. package/dist/client/assets/{task-status-CqDAnW9H.js → task-status-B-brbBsk.js} +1 -1
  128. package/dist/client/assets/{textarea-DYbvm35p.js → textarea-BZSNnTf-.js} +1 -1
  129. package/dist/client/assets/{toggle-group-DXYK5Kmg.js → toggle-group-C6O7_FmI.js} +1 -1
  130. package/dist/client/assets/{tools-list-DQqEXfVG.js → tools-list-E1FCeDba.js} +1 -1
  131. package/dist/client/assets/{tooltip-M7OSSLPB.js → tooltip-DzR2OkiC.js} +1 -1
  132. package/dist/client/assets/{types-aUaKAv-0.js → types-DsXhCCX5.js} +1 -1
  133. package/dist/client/assets/{use-ai-providers-CmHinIUs.js → use-ai-providers-CASknL33.js} +1 -1
  134. package/dist/client/assets/{use-collections-Cy_Omosv.js → use-collections-Clg_Ncfr.js} +1 -1
  135. package/dist/client/assets/{use-connection-BTNmhjS_.js → use-connection-CN-YbXIm.js} +1 -1
  136. package/dist/client/assets/{use-copy-CkkAJAvS.js → use-copy-B4Vw-FGS.js} +1 -1
  137. package/dist/client/assets/{use-create-virtual-mcp-BuaKZJs7.js → use-create-virtual-mcp-DDS948Ec.js} +1 -1
  138. package/dist/client/assets/{use-debounced-autosave-CO57B6nX.js → use-debounced-autosave-DY33egle.js} +1 -1
  139. package/dist/client/assets/{use-decopilot-events-CQ1IkvCh.js → use-decopilot-events-CDc7_gFj.js} +1 -1
  140. package/dist/client/assets/{use-delete-connection-6dZbEpz0.js → use-delete-connection-B_kG1S-Z.js} +1 -1
  141. package/dist/client/assets/{use-infinite-scroll-ZPBLdFp5.js → use-infinite-scroll-C65PuA8D.js} +1 -1
  142. package/dist/client/assets/{use-list-state-C6g9hGA4.js → use-list-state-D0QSC4li.js} +1 -1
  143. package/dist/client/assets/{use-mcp-tools-BxVuuTSL.js → use-mcp-tools-P1EYh7Ne.js} +1 -1
  144. package/dist/client/assets/{use-members-Bi_cxyIQ.js → use-members-B8Y7w6A6.js} +1 -1
  145. package/dist/client/assets/{use-navigate-to-agent-CSPyzm0t.js → use-navigate-to-agent-CdjjjAzp.js} +1 -1
  146. package/dist/client/assets/{use-org-auth-client-C0e9yR_n.js → use-org-auth-client-DgZS2gPK.js} +1 -1
  147. package/dist/client/assets/{use-org-sso-BBRAkASE.js → use-org-sso-DUuDwVMq.js} +1 -1
  148. package/dist/client/assets/{use-organization-roles-C1ELHN87.js → use-organization-roles-COI0teJ2.js} +1 -1
  149. package/dist/client/assets/{use-organization-settings-DTcFJGZh.js → use-organization-settings-DFYG1X4S.js} +1 -1
  150. package/dist/client/assets/{use-registry-connections-BTwHNugi.js → use-registry-connections-DtGSBXyx.js} +1 -1
  151. package/dist/client/assets/{use-status-sounds-DtamCVeq.js → use-status-sounds-Bzo-hQFh.js} +1 -1
  152. package/dist/client/assets/{use-tasks-B6YSkeM5.js → use-tasks-BkEjm0jr.js} +1 -1
  153. package/dist/client/assets/{use-view-mode-BT7njn-W.js → use-view-mode-QyxMfzTw.js} +1 -1
  154. package/dist/client/assets/{use-virtual-mcp-CSMhsIFC.js → use-virtual-mcp-CywGzNw_.js} +1 -1
  155. package/dist/client/assets/useInfiniteQuery-BnoAFbMi.js +1 -0
  156. package/dist/client/assets/useSuspenseInfiniteQuery-DALOqmfR.js +1 -0
  157. package/dist/client/assets/{user-D3wZendk.js → user-B1nA5pjb.js} +1 -1
  158. package/dist/client/assets/{view-mode-toggle-DrXoiKTK.js → view-mode-toggle-Cj3KDqTE.js} +1 -1
  159. package/dist/client/assets/{workflow-BfcwUbw-.js → workflow-DHFQknOK.js} +1 -1
  160. package/dist/client/assets/workflow-detail-Dq-mKRWi.js +1 -0
  161. package/dist/client/index.html +1 -1
  162. package/dist/server/cli.js +6 -2
  163. package/dist/server/node_modules/ansi-styles/index.d.ts +236 -0
  164. package/dist/server/node_modules/ansi-styles/index.js +223 -0
  165. package/dist/server/node_modules/{ansi-regex → ansi-styles}/package.json +13 -20
  166. package/dist/server/node_modules/ansi-styles/readme.md +173 -0
  167. package/dist/server/node_modules/convert-to-spaces/dist/index.d.ts +2 -0
  168. package/dist/server/node_modules/convert-to-spaces/dist/index.js +4 -0
  169. package/dist/server/node_modules/convert-to-spaces/license +21 -0
  170. package/dist/server/node_modules/convert-to-spaces/package.json +40 -0
  171. package/dist/server/node_modules/convert-to-spaces/readme.md +39 -0
  172. package/dist/server/node_modules/environment/index.d.ts +74 -0
  173. package/dist/server/node_modules/environment/index.js +47 -0
  174. package/dist/server/node_modules/environment/package.json +74 -0
  175. package/dist/server/node_modules/environment/readme.md +94 -0
  176. package/dist/server/node_modules/escape-string-regexp/index.d.ts +18 -0
  177. package/dist/server/node_modules/escape-string-regexp/index.js +11 -0
  178. package/dist/server/node_modules/escape-string-regexp/license +9 -0
  179. package/dist/server/node_modules/escape-string-regexp/package.json +43 -0
  180. package/dist/server/node_modules/escape-string-regexp/readme.md +29 -0
  181. package/dist/server/node_modules/get-east-asian-width/index.d.ts +60 -0
  182. package/dist/server/node_modules/get-east-asian-width/index.js +30 -0
  183. package/dist/server/node_modules/{ink → get-east-asian-width}/license +0 -1
  184. package/dist/server/node_modules/get-east-asian-width/lookup-data.js +18 -0
  185. package/dist/server/node_modules/get-east-asian-width/lookup.js +135 -0
  186. package/dist/server/node_modules/get-east-asian-width/package.json +71 -0
  187. package/dist/server/node_modules/get-east-asian-width/readme.md +65 -0
  188. package/dist/server/node_modules/get-east-asian-width/utilities.js +24 -0
  189. package/dist/server/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  190. package/dist/server/node_modules/is-fullwidth-code-point/index.js +12 -0
  191. package/dist/server/node_modules/is-fullwidth-code-point/license +9 -0
  192. package/dist/server/node_modules/is-fullwidth-code-point/package.json +53 -0
  193. package/dist/server/node_modules/is-fullwidth-code-point/readme.md +31 -0
  194. package/dist/server/node_modules/is-unicode-supported/index.d.ts +12 -0
  195. package/dist/server/node_modules/is-unicode-supported/index.js +21 -0
  196. package/dist/server/node_modules/is-unicode-supported/license +9 -0
  197. package/dist/server/node_modules/is-unicode-supported/package.json +47 -0
  198. package/dist/server/node_modules/is-unicode-supported/readme.md +35 -0
  199. package/dist/server/node_modules/pg-cloudflare/LICENSE +21 -0
  200. package/dist/server/node_modules/pg-cloudflare/README.md +112 -0
  201. package/dist/server/node_modules/pg-cloudflare/dist/empty.d.ts +2 -0
  202. package/dist/server/node_modules/pg-cloudflare/dist/empty.js +6 -0
  203. package/dist/server/node_modules/pg-cloudflare/dist/empty.js.map +1 -0
  204. package/dist/server/node_modules/pg-cloudflare/dist/index.d.ts +31 -0
  205. package/dist/server/node_modules/pg-cloudflare/dist/index.js +152 -0
  206. package/dist/server/node_modules/pg-cloudflare/dist/index.js.map +1 -0
  207. package/dist/server/node_modules/pg-cloudflare/esm/index.mjs +3 -0
  208. package/dist/server/node_modules/pg-cloudflare/package.json +39 -0
  209. package/dist/server/node_modules/pg-cloudflare/src/empty.ts +3 -0
  210. package/dist/server/node_modules/pg-cloudflare/src/index.ts +166 -0
  211. package/dist/server/node_modules/pg-cloudflare/src/types.d.ts +25 -0
  212. package/dist/server/node_modules/pg-connection-string/LICENSE +21 -0
  213. package/dist/server/node_modules/pg-connection-string/README.md +105 -0
  214. package/dist/server/node_modules/pg-connection-string/esm/index.mjs +8 -0
  215. package/dist/server/node_modules/pg-connection-string/index.d.ts +36 -0
  216. package/dist/server/node_modules/pg-connection-string/index.js +231 -0
  217. package/dist/server/node_modules/pg-connection-string/package.json +52 -0
  218. package/dist/server/node_modules/pg-pool/LICENSE +21 -0
  219. package/dist/server/node_modules/pg-pool/README.md +357 -0
  220. package/dist/server/node_modules/pg-pool/esm/index.mjs +5 -0
  221. package/dist/server/node_modules/pg-pool/index.js +517 -0
  222. package/dist/server/node_modules/pg-pool/package.json +51 -0
  223. package/dist/server/node_modules/pg-protocol/LICENSE +21 -0
  224. package/dist/server/node_modules/pg-protocol/README.md +3 -0
  225. package/dist/server/node_modules/pg-protocol/dist/b.js +23 -0
  226. package/dist/server/node_modules/pg-protocol/dist/b.js.map +1 -0
  227. package/dist/server/node_modules/pg-protocol/dist/buffer-reader.d.ts +15 -0
  228. package/dist/server/node_modules/pg-protocol/dist/buffer-reader.js +55 -0
  229. package/dist/server/node_modules/pg-protocol/dist/buffer-reader.js.map +1 -0
  230. package/dist/server/node_modules/pg-protocol/dist/buffer-writer.d.ts +16 -0
  231. package/dist/server/node_modules/pg-protocol/dist/buffer-writer.js +81 -0
  232. package/dist/server/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -0
  233. package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.d.ts +1 -0
  234. package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.js +530 -0
  235. package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.js.map +1 -0
  236. package/dist/server/node_modules/pg-protocol/dist/index.d.ts +6 -0
  237. package/dist/server/node_modules/pg-protocol/dist/index.js +15 -0
  238. package/dist/server/node_modules/pg-protocol/dist/index.js.map +1 -0
  239. package/dist/server/node_modules/pg-protocol/dist/messages.d.ts +162 -0
  240. package/dist/server/node_modules/pg-protocol/dist/messages.js +160 -0
  241. package/dist/server/node_modules/pg-protocol/dist/messages.js.map +1 -0
  242. package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.d.ts +1 -0
  243. package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.js +252 -0
  244. package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.js.map +1 -0
  245. package/dist/server/node_modules/pg-protocol/dist/parser.d.ts +24 -0
  246. package/dist/server/node_modules/pg-protocol/dist/parser.js +324 -0
  247. package/dist/server/node_modules/pg-protocol/dist/parser.js.map +1 -0
  248. package/dist/server/node_modules/pg-protocol/dist/serializer.d.ts +42 -0
  249. package/dist/server/node_modules/pg-protocol/dist/serializer.js +189 -0
  250. package/dist/server/node_modules/pg-protocol/dist/serializer.js.map +1 -0
  251. package/dist/server/node_modules/pg-protocol/esm/index.js +11 -0
  252. package/dist/server/node_modules/pg-protocol/package.json +45 -0
  253. package/dist/server/node_modules/pg-protocol/src/b.ts +25 -0
  254. package/dist/server/node_modules/pg-protocol/src/buffer-reader.ts +58 -0
  255. package/dist/server/node_modules/pg-protocol/src/buffer-writer.ts +85 -0
  256. package/dist/server/node_modules/pg-protocol/src/inbound-parser.test.ts +575 -0
  257. package/dist/server/node_modules/pg-protocol/src/index.ts +11 -0
  258. package/dist/server/node_modules/pg-protocol/src/messages.ts +262 -0
  259. package/dist/server/node_modules/pg-protocol/src/outbound-serializer.test.ts +276 -0
  260. package/dist/server/node_modules/pg-protocol/src/parser.ts +413 -0
  261. package/dist/server/node_modules/pg-protocol/src/serializer.ts +274 -0
  262. package/dist/server/node_modules/pg-protocol/src/testing/buffer-list.ts +67 -0
  263. package/dist/server/node_modules/pg-protocol/src/testing/test-buffers.ts +166 -0
  264. package/dist/server/node_modules/pg-protocol/src/types/chunky.d.ts +1 -0
  265. package/dist/server/node_modules/pg-types/.travis.yml +7 -0
  266. package/dist/server/node_modules/pg-types/Makefile +14 -0
  267. package/dist/server/node_modules/pg-types/README.md +75 -0
  268. package/dist/server/node_modules/pg-types/index.d.ts +137 -0
  269. package/dist/server/node_modules/pg-types/index.js +47 -0
  270. package/dist/server/node_modules/pg-types/index.test-d.ts +21 -0
  271. package/dist/server/node_modules/pg-types/lib/arrayParser.js +11 -0
  272. package/dist/server/node_modules/pg-types/lib/binaryParsers.js +257 -0
  273. package/dist/server/node_modules/pg-types/lib/builtins.js +73 -0
  274. package/dist/server/node_modules/pg-types/lib/textParsers.js +215 -0
  275. package/dist/server/node_modules/pg-types/package.json +42 -0
  276. package/dist/server/node_modules/pg-types/test/index.js +24 -0
  277. package/dist/server/node_modules/pg-types/test/types.js +597 -0
  278. package/dist/server/node_modules/pgpass/README.md +74 -0
  279. package/dist/server/node_modules/pgpass/lib/helper.js +233 -0
  280. package/dist/server/node_modules/pgpass/lib/index.js +23 -0
  281. package/dist/server/node_modules/pgpass/package.json +41 -0
  282. package/dist/server/node_modules/restore-cursor/index.d.ts +11 -0
  283. package/dist/server/node_modules/restore-cursor/index.js +11 -0
  284. package/dist/server/node_modules/restore-cursor/license +9 -0
  285. package/dist/server/node_modules/restore-cursor/package.json +55 -0
  286. package/dist/server/node_modules/restore-cursor/readme.md +31 -0
  287. package/dist/server/node_modules/string-width/index.d.ts +39 -0
  288. package/dist/server/node_modules/string-width/index.js +82 -0
  289. package/dist/server/node_modules/string-width/license +9 -0
  290. package/dist/server/node_modules/string-width/package.json +64 -0
  291. package/dist/server/node_modules/string-width/readme.md +66 -0
  292. package/dist/server/server.js +5 -1
  293. package/package.json +1 -1
  294. package/dist/client/assets/ai-providers-CfDd4KX1.js +0 -1
  295. package/dist/client/assets/registry-CWfZJmtj.js +0 -2
  296. package/dist/client/assets/store-registry-CBTBvJpl.js +0 -2
  297. package/dist/client/assets/useInfiniteQuery-96c4mtDU.js +0 -1
  298. package/dist/client/assets/useSuspenseInfiniteQuery-HyWQwfY6.js +0 -1
  299. package/dist/client/assets/workflow-detail-C0BgSrtB.js +0 -1
  300. package/dist/server/node_modules/ansi-regex/index.d.ts +0 -33
  301. package/dist/server/node_modules/ansi-regex/index.js +0 -14
  302. package/dist/server/node_modules/ansi-regex/readme.md +0 -66
  303. package/dist/server/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  304. package/dist/server/node_modules/emoji-regex/README.md +0 -107
  305. package/dist/server/node_modules/emoji-regex/index.d.ts +0 -3
  306. package/dist/server/node_modules/emoji-regex/index.js +0 -4
  307. package/dist/server/node_modules/emoji-regex/index.mjs +0 -4
  308. package/dist/server/node_modules/emoji-regex/package.json +0 -45
  309. package/dist/server/node_modules/ink/build/ansi-tokenizer.d.ts +0 -38
  310. package/dist/server/node_modules/ink/build/ansi-tokenizer.js +0 -316
  311. package/dist/server/node_modules/ink/build/ansi-tokenizer.js.map +0 -1
  312. package/dist/server/node_modules/ink/build/apply-styles.js +0 -175
  313. package/dist/server/node_modules/ink/build/build-layout.js +0 -77
  314. package/dist/server/node_modules/ink/build/calculate-wrapped-text.js +0 -53
  315. package/dist/server/node_modules/ink/build/colorize.d.ts +0 -3
  316. package/dist/server/node_modules/ink/build/colorize.js +0 -48
  317. package/dist/server/node_modules/ink/build/colorize.js.map +0 -1
  318. package/dist/server/node_modules/ink/build/components/AccessibilityContext.d.ts +0 -3
  319. package/dist/server/node_modules/ink/build/components/AccessibilityContext.js +0 -5
  320. package/dist/server/node_modules/ink/build/components/AccessibilityContext.js.map +0 -1
  321. package/dist/server/node_modules/ink/build/components/App.d.ts +0 -18
  322. package/dist/server/node_modules/ink/build/components/App.js +0 -351
  323. package/dist/server/node_modules/ink/build/components/App.js.map +0 -1
  324. package/dist/server/node_modules/ink/build/components/AppContext.d.ts +0 -15
  325. package/dist/server/node_modules/ink/build/components/AppContext.js +0 -11
  326. package/dist/server/node_modules/ink/build/components/AppContext.js.map +0 -1
  327. package/dist/server/node_modules/ink/build/components/BackgroundContext.d.ts +0 -4
  328. package/dist/server/node_modules/ink/build/components/BackgroundContext.js +0 -3
  329. package/dist/server/node_modules/ink/build/components/BackgroundContext.js.map +0 -1
  330. package/dist/server/node_modules/ink/build/components/Box.d.ts +0 -117
  331. package/dist/server/node_modules/ink/build/components/Box.js +0 -34
  332. package/dist/server/node_modules/ink/build/components/Box.js.map +0 -1
  333. package/dist/server/node_modules/ink/build/components/Color.js +0 -62
  334. package/dist/server/node_modules/ink/build/components/Cursor.d.ts +0 -83
  335. package/dist/server/node_modules/ink/build/components/Cursor.js +0 -53
  336. package/dist/server/node_modules/ink/build/components/Cursor.js.map +0 -1
  337. package/dist/server/node_modules/ink/build/components/CursorContext.d.ts +0 -11
  338. package/dist/server/node_modules/ink/build/components/CursorContext.js +0 -8
  339. package/dist/server/node_modules/ink/build/components/CursorContext.js.map +0 -1
  340. package/dist/server/node_modules/ink/build/components/ErrorBoundary.d.ts +0 -18
  341. package/dist/server/node_modules/ink/build/components/ErrorBoundary.js +0 -23
  342. package/dist/server/node_modules/ink/build/components/ErrorBoundary.js.map +0 -1
  343. package/dist/server/node_modules/ink/build/components/ErrorOverview.d.ts +0 -6
  344. package/dist/server/node_modules/ink/build/components/ErrorOverview.js +0 -84
  345. package/dist/server/node_modules/ink/build/components/ErrorOverview.js.map +0 -1
  346. package/dist/server/node_modules/ink/build/components/FocusContext.d.ts +0 -16
  347. package/dist/server/node_modules/ink/build/components/FocusContext.js +0 -17
  348. package/dist/server/node_modules/ink/build/components/FocusContext.js.map +0 -1
  349. package/dist/server/node_modules/ink/build/components/Newline.d.ts +0 -13
  350. package/dist/server/node_modules/ink/build/components/Newline.js +0 -8
  351. package/dist/server/node_modules/ink/build/components/Newline.js.map +0 -1
  352. package/dist/server/node_modules/ink/build/components/Spacer.d.ts +0 -7
  353. package/dist/server/node_modules/ink/build/components/Spacer.js +0 -11
  354. package/dist/server/node_modules/ink/build/components/Spacer.js.map +0 -1
  355. package/dist/server/node_modules/ink/build/components/Static.d.ts +0 -24
  356. package/dist/server/node_modules/ink/build/components/Static.js +0 -28
  357. package/dist/server/node_modules/ink/build/components/Static.js.map +0 -1
  358. package/dist/server/node_modules/ink/build/components/StderrContext.d.ts +0 -15
  359. package/dist/server/node_modules/ink/build/components/StderrContext.js +0 -13
  360. package/dist/server/node_modules/ink/build/components/StderrContext.js.map +0 -1
  361. package/dist/server/node_modules/ink/build/components/StdinContext.d.ts +0 -22
  362. package/dist/server/node_modules/ink/build/components/StdinContext.js +0 -19
  363. package/dist/server/node_modules/ink/build/components/StdinContext.js.map +0 -1
  364. package/dist/server/node_modules/ink/build/components/StdoutContext.d.ts +0 -15
  365. package/dist/server/node_modules/ink/build/components/StdoutContext.js +0 -13
  366. package/dist/server/node_modules/ink/build/components/StdoutContext.js.map +0 -1
  367. package/dist/server/node_modules/ink/build/components/Text.d.ts +0 -55
  368. package/dist/server/node_modules/ink/build/components/Text.js +0 -50
  369. package/dist/server/node_modules/ink/build/components/Text.js.map +0 -1
  370. package/dist/server/node_modules/ink/build/components/Transform.d.ts +0 -16
  371. package/dist/server/node_modules/ink/build/components/Transform.js +0 -15
  372. package/dist/server/node_modules/ink/build/components/Transform.js.map +0 -1
  373. package/dist/server/node_modules/ink/build/cursor-helpers.d.ts +0 -38
  374. package/dist/server/node_modules/ink/build/cursor-helpers.js +0 -56
  375. package/dist/server/node_modules/ink/build/cursor-helpers.js.map +0 -1
  376. package/dist/server/node_modules/ink/build/devtools-window-polyfill.js +0 -65
  377. package/dist/server/node_modules/ink/build/devtools-window-polyfill.js.map +0 -1
  378. package/dist/server/node_modules/ink/build/devtools.d.ts +0 -1
  379. package/dist/server/node_modules/ink/build/devtools.js +0 -11
  380. package/dist/server/node_modules/ink/build/devtools.js.map +0 -1
  381. package/dist/server/node_modules/ink/build/dom.d.ts +0 -56
  382. package/dist/server/node_modules/ink/build/dom.js +0 -124
  383. package/dist/server/node_modules/ink/build/dom.js.map +0 -1
  384. package/dist/server/node_modules/ink/build/experimental/apply-style.js +0 -140
  385. package/dist/server/node_modules/ink/build/experimental/dom.js +0 -123
  386. package/dist/server/node_modules/ink/build/experimental/output.js +0 -91
  387. package/dist/server/node_modules/ink/build/experimental/reconciler.js +0 -141
  388. package/dist/server/node_modules/ink/build/experimental/renderer.js +0 -81
  389. package/dist/server/node_modules/ink/build/get-max-width.d.ts +0 -3
  390. package/dist/server/node_modules/ink/build/get-max-width.js +0 -10
  391. package/dist/server/node_modules/ink/build/get-max-width.js.map +0 -1
  392. package/dist/server/node_modules/ink/build/hooks/use-app.d.ts +0 -5
  393. package/dist/server/node_modules/ink/build/hooks/use-app.js +0 -8
  394. package/dist/server/node_modules/ink/build/hooks/use-app.js.map +0 -1
  395. package/dist/server/node_modules/ink/build/hooks/use-cursor.d.ts +0 -12
  396. package/dist/server/node_modules/ink/build/hooks/use-cursor.js +0 -29
  397. package/dist/server/node_modules/ink/build/hooks/use-cursor.js.map +0 -1
  398. package/dist/server/node_modules/ink/build/hooks/use-focus-manager.d.ts +0 -28
  399. package/dist/server/node_modules/ink/build/hooks/use-focus-manager.js +0 -17
  400. package/dist/server/node_modules/ink/build/hooks/use-focus-manager.js.map +0 -1
  401. package/dist/server/node_modules/ink/build/hooks/use-focus.d.ts +0 -29
  402. package/dist/server/node_modules/ink/build/hooks/use-focus.js +0 -42
  403. package/dist/server/node_modules/ink/build/hooks/use-focus.js.map +0 -1
  404. package/dist/server/node_modules/ink/build/hooks/use-input.d.ts +0 -131
  405. package/dist/server/node_modules/ink/build/hooks/use-input.js +0 -124
  406. package/dist/server/node_modules/ink/build/hooks/use-input.js.map +0 -1
  407. package/dist/server/node_modules/ink/build/hooks/use-is-screen-reader-enabled.d.ts +0 -5
  408. package/dist/server/node_modules/ink/build/hooks/use-is-screen-reader-enabled.js +0 -11
  409. package/dist/server/node_modules/ink/build/hooks/use-is-screen-reader-enabled.js.map +0 -1
  410. package/dist/server/node_modules/ink/build/hooks/use-stderr.d.ts +0 -5
  411. package/dist/server/node_modules/ink/build/hooks/use-stderr.js +0 -8
  412. package/dist/server/node_modules/ink/build/hooks/use-stderr.js.map +0 -1
  413. package/dist/server/node_modules/ink/build/hooks/use-stdin.d.ts +0 -5
  414. package/dist/server/node_modules/ink/build/hooks/use-stdin.js +0 -8
  415. package/dist/server/node_modules/ink/build/hooks/use-stdin.js.map +0 -1
  416. package/dist/server/node_modules/ink/build/hooks/use-stdout.d.ts +0 -5
  417. package/dist/server/node_modules/ink/build/hooks/use-stdout.js +0 -8
  418. package/dist/server/node_modules/ink/build/hooks/use-stdout.js.map +0 -1
  419. package/dist/server/node_modules/ink/build/hooks/useInput.js +0 -38
  420. package/dist/server/node_modules/ink/build/index.d.ts +0 -34
  421. package/dist/server/node_modules/ink/build/index.js +0 -20
  422. package/dist/server/node_modules/ink/build/index.js.map +0 -1
  423. package/dist/server/node_modules/ink/build/ink.d.ts +0 -90
  424. package/dist/server/node_modules/ink/build/ink.js +0 -637
  425. package/dist/server/node_modules/ink/build/ink.js.map +0 -1
  426. package/dist/server/node_modules/ink/build/input-parser.d.ts +0 -7
  427. package/dist/server/node_modules/ink/build/input-parser.js +0 -154
  428. package/dist/server/node_modules/ink/build/input-parser.js.map +0 -1
  429. package/dist/server/node_modules/ink/build/instance.js +0 -205
  430. package/dist/server/node_modules/ink/build/instances.d.ts +0 -3
  431. package/dist/server/node_modules/ink/build/instances.js +0 -8
  432. package/dist/server/node_modules/ink/build/instances.js.map +0 -1
  433. package/dist/server/node_modules/ink/build/kitty-keyboard.d.ts +0 -23
  434. package/dist/server/node_modules/ink/build/kitty-keyboard.js +0 -32
  435. package/dist/server/node_modules/ink/build/kitty-keyboard.js.map +0 -1
  436. package/dist/server/node_modules/ink/build/layout.d.ts +0 -7
  437. package/dist/server/node_modules/ink/build/layout.js +0 -33
  438. package/dist/server/node_modules/ink/build/layout.js.map +0 -1
  439. package/dist/server/node_modules/ink/build/log-update.d.ts +0 -19
  440. package/dist/server/node_modules/ink/build/log-update.js +0 -242
  441. package/dist/server/node_modules/ink/build/log-update.js.map +0 -1
  442. package/dist/server/node_modules/ink/build/measure-element.d.ts +0 -16
  443. package/dist/server/node_modules/ink/build/measure-element.js +0 -9
  444. package/dist/server/node_modules/ink/build/measure-element.js.map +0 -1
  445. package/dist/server/node_modules/ink/build/measure-text.d.ts +0 -6
  446. package/dist/server/node_modules/ink/build/measure-text.js +0 -21
  447. package/dist/server/node_modules/ink/build/measure-text.js.map +0 -1
  448. package/dist/server/node_modules/ink/build/options.d.ts +0 -52
  449. package/dist/server/node_modules/ink/build/options.js +0 -2
  450. package/dist/server/node_modules/ink/build/options.js.map +0 -1
  451. package/dist/server/node_modules/ink/build/output.d.ts +0 -35
  452. package/dist/server/node_modules/ink/build/output.js +0 -183
  453. package/dist/server/node_modules/ink/build/output.js.map +0 -1
  454. package/dist/server/node_modules/ink/build/parse-keypress.d.ts +0 -22
  455. package/dist/server/node_modules/ink/build/parse-keypress.js +0 -493
  456. package/dist/server/node_modules/ink/build/parse-keypress.js.map +0 -1
  457. package/dist/server/node_modules/ink/build/reconciler.d.ts +0 -4
  458. package/dist/server/node_modules/ink/build/reconciler.js +0 -274
  459. package/dist/server/node_modules/ink/build/reconciler.js.map +0 -1
  460. package/dist/server/node_modules/ink/build/render-background.d.ts +0 -4
  461. package/dist/server/node_modules/ink/build/render-background.js +0 -25
  462. package/dist/server/node_modules/ink/build/render-background.js.map +0 -1
  463. package/dist/server/node_modules/ink/build/render-border.d.ts +0 -4
  464. package/dist/server/node_modules/ink/build/render-border.js +0 -73
  465. package/dist/server/node_modules/ink/build/render-border.js.map +0 -1
  466. package/dist/server/node_modules/ink/build/render-node-to-output.d.ts +0 -14
  467. package/dist/server/node_modules/ink/build/render-node-to-output.js +0 -147
  468. package/dist/server/node_modules/ink/build/render-node-to-output.js.map +0 -1
  469. package/dist/server/node_modules/ink/build/render-to-string.d.ts +0 -38
  470. package/dist/server/node_modules/ink/build/render-to-string.js +0 -115
  471. package/dist/server/node_modules/ink/build/render-to-string.js.map +0 -1
  472. package/dist/server/node_modules/ink/build/render.d.ts +0 -121
  473. package/dist/server/node_modules/ink/build/render.js +0 -55
  474. package/dist/server/node_modules/ink/build/render.js.map +0 -1
  475. package/dist/server/node_modules/ink/build/renderer.d.ts +0 -8
  476. package/dist/server/node_modules/ink/build/renderer.js +0 -55
  477. package/dist/server/node_modules/ink/build/renderer.js.map +0 -1
  478. package/dist/server/node_modules/ink/build/sanitize-ansi.d.ts +0 -2
  479. package/dist/server/node_modules/ink/build/sanitize-ansi.js +0 -27
  480. package/dist/server/node_modules/ink/build/sanitize-ansi.js.map +0 -1
  481. package/dist/server/node_modules/ink/build/screen-reader-update.d.ts +0 -13
  482. package/dist/server/node_modules/ink/build/screen-reader-update.js +0 -38
  483. package/dist/server/node_modules/ink/build/screen-reader-update.js.map +0 -1
  484. package/dist/server/node_modules/ink/build/squash-text-nodes.d.ts +0 -3
  485. package/dist/server/node_modules/ink/build/squash-text-nodes.js +0 -36
  486. package/dist/server/node_modules/ink/build/squash-text-nodes.js.map +0 -1
  487. package/dist/server/node_modules/ink/build/styles.d.ts +0 -240
  488. package/dist/server/node_modules/ink/build/styles.js +0 -232
  489. package/dist/server/node_modules/ink/build/styles.js.map +0 -1
  490. package/dist/server/node_modules/ink/build/utils.d.ts +0 -2
  491. package/dist/server/node_modules/ink/build/utils.js +0 -4
  492. package/dist/server/node_modules/ink/build/utils.js.map +0 -1
  493. package/dist/server/node_modules/ink/build/wrap-text.d.ts +0 -3
  494. package/dist/server/node_modules/ink/build/wrap-text.js +0 -31
  495. package/dist/server/node_modules/ink/build/wrap-text.js.map +0 -1
  496. package/dist/server/node_modules/ink/build/write-synchronized.d.ts +0 -4
  497. package/dist/server/node_modules/ink/build/write-synchronized.js +0 -7
  498. package/dist/server/node_modules/ink/build/write-synchronized.js.map +0 -1
  499. package/dist/server/node_modules/ink/package.json +0 -201
  500. package/dist/server/node_modules/ink/readme.md +0 -2636
  501. package/dist/server/node_modules/onetime/index.d.ts +0 -64
  502. package/dist/server/node_modules/onetime/index.js +0 -44
  503. package/dist/server/node_modules/onetime/package.json +0 -43
  504. package/dist/server/node_modules/onetime/readme.md +0 -94
  505. /package/dist/server/node_modules/{ansi-regex → ansi-styles}/license +0 -0
  506. /package/dist/server/node_modules/{onetime → environment}/license +0 -0
  507. /package/dist/server/node_modules/{ink/build/devtools-window-polyfill.d.ts → pg-protocol/dist/b.d.ts} +0 -0
@@ -0,0 +1,58 @@
1
+ export class BufferReader {
2
+ private buffer: Buffer = Buffer.allocUnsafe(0)
3
+
4
+ // TODO(bmc): support non-utf8 encoding?
5
+ private encoding: string = 'utf-8'
6
+
7
+ constructor(private offset: number = 0) {}
8
+
9
+ public setBuffer(offset: number, buffer: Buffer): void {
10
+ this.offset = offset
11
+ this.buffer = buffer
12
+ }
13
+
14
+ public int16(): number {
15
+ const result = this.buffer.readInt16BE(this.offset)
16
+ this.offset += 2
17
+ return result
18
+ }
19
+
20
+ public byte(): number {
21
+ const result = this.buffer[this.offset]
22
+ this.offset++
23
+ return result
24
+ }
25
+
26
+ public int32(): number {
27
+ const result = this.buffer.readInt32BE(this.offset)
28
+ this.offset += 4
29
+ return result
30
+ }
31
+
32
+ public uint32(): number {
33
+ const result = this.buffer.readUInt32BE(this.offset)
34
+ this.offset += 4
35
+ return result
36
+ }
37
+
38
+ public string(length: number): string {
39
+ const result = this.buffer.toString(this.encoding, this.offset, this.offset + length)
40
+ this.offset += length
41
+ return result
42
+ }
43
+
44
+ public cstring(): string {
45
+ const start = this.offset
46
+ let end = start
47
+ // eslint-disable-next-line no-empty
48
+ while (this.buffer[end++] !== 0) {}
49
+ this.offset = end
50
+ return this.buffer.toString(this.encoding, start, end - 1)
51
+ }
52
+
53
+ public bytes(length: number): Buffer {
54
+ const result = this.buffer.slice(this.offset, this.offset + length)
55
+ this.offset += length
56
+ return result
57
+ }
58
+ }
@@ -0,0 +1,85 @@
1
+ //binary data writer tuned for encoding binary specific to the postgres binary protocol
2
+
3
+ export class Writer {
4
+ private buffer: Buffer
5
+ private offset: number = 5
6
+ private headerPosition: number = 0
7
+ constructor(private size = 256) {
8
+ this.buffer = Buffer.allocUnsafe(size)
9
+ }
10
+
11
+ private ensure(size: number): void {
12
+ const remaining = this.buffer.length - this.offset
13
+ if (remaining < size) {
14
+ const oldBuffer = this.buffer
15
+ // exponential growth factor of around ~ 1.5
16
+ // https://stackoverflow.com/questions/2269063/buffer-growth-strategy
17
+ const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size
18
+ this.buffer = Buffer.allocUnsafe(newSize)
19
+ oldBuffer.copy(this.buffer)
20
+ }
21
+ }
22
+
23
+ public addInt32(num: number): Writer {
24
+ this.ensure(4)
25
+ this.buffer[this.offset++] = (num >>> 24) & 0xff
26
+ this.buffer[this.offset++] = (num >>> 16) & 0xff
27
+ this.buffer[this.offset++] = (num >>> 8) & 0xff
28
+ this.buffer[this.offset++] = (num >>> 0) & 0xff
29
+ return this
30
+ }
31
+
32
+ public addInt16(num: number): Writer {
33
+ this.ensure(2)
34
+ this.buffer[this.offset++] = (num >>> 8) & 0xff
35
+ this.buffer[this.offset++] = (num >>> 0) & 0xff
36
+ return this
37
+ }
38
+
39
+ public addCString(string: string): Writer {
40
+ if (!string) {
41
+ this.ensure(1)
42
+ } else {
43
+ const len = Buffer.byteLength(string)
44
+ this.ensure(len + 1) // +1 for null terminator
45
+ this.buffer.write(string, this.offset, 'utf-8')
46
+ this.offset += len
47
+ }
48
+
49
+ this.buffer[this.offset++] = 0 // null terminator
50
+ return this
51
+ }
52
+
53
+ public addString(string: string = ''): Writer {
54
+ const len = Buffer.byteLength(string)
55
+ this.ensure(len)
56
+ this.buffer.write(string, this.offset)
57
+ this.offset += len
58
+ return this
59
+ }
60
+
61
+ public add(otherBuffer: Buffer): Writer {
62
+ this.ensure(otherBuffer.length)
63
+ otherBuffer.copy(this.buffer, this.offset)
64
+ this.offset += otherBuffer.length
65
+ return this
66
+ }
67
+
68
+ private join(code?: number): Buffer {
69
+ if (code) {
70
+ this.buffer[this.headerPosition] = code
71
+ //length is everything in this packet minus the code
72
+ const length = this.offset - (this.headerPosition + 1)
73
+ this.buffer.writeInt32BE(length, this.headerPosition + 1)
74
+ }
75
+ return this.buffer.slice(code ? 0 : 5, this.offset)
76
+ }
77
+
78
+ public flush(code?: number): Buffer {
79
+ const result = this.join(code)
80
+ this.offset = 5
81
+ this.headerPosition = 0
82
+ this.buffer = Buffer.allocUnsafe(this.size)
83
+ return result
84
+ }
85
+ }
@@ -0,0 +1,575 @@
1
+ import buffers from './testing/test-buffers'
2
+ import BufferList from './testing/buffer-list'
3
+ import { parse } from '.'
4
+ import assert from 'assert'
5
+ import { PassThrough } from 'stream'
6
+ import { BackendMessage } from './messages'
7
+ import { Parser } from './parser'
8
+
9
+ const authOkBuffer = buffers.authenticationOk()
10
+ const paramStatusBuffer = buffers.parameterStatus('client_encoding', 'UTF8')
11
+ const readyForQueryBuffer = buffers.readyForQuery()
12
+ const backendKeyDataBuffer = buffers.backendKeyData(1, 2)
13
+ const commandCompleteBuffer = buffers.commandComplete('SELECT 3')
14
+ const parseCompleteBuffer = buffers.parseComplete()
15
+ const bindCompleteBuffer = buffers.bindComplete()
16
+ const portalSuspendedBuffer = buffers.portalSuspended()
17
+
18
+ const row1 = {
19
+ name: 'id',
20
+ tableID: 1,
21
+ attributeNumber: 2,
22
+ dataTypeID: 3,
23
+ dataTypeSize: 4,
24
+ typeModifier: 5,
25
+ formatCode: 0,
26
+ }
27
+ const oneRowDescBuff = buffers.rowDescription([row1])
28
+ row1.name = 'bang'
29
+
30
+ const twoRowBuf = buffers.rowDescription([
31
+ row1,
32
+ {
33
+ name: 'whoah',
34
+ tableID: 10,
35
+ attributeNumber: 11,
36
+ dataTypeID: 12,
37
+ dataTypeSize: 13,
38
+ typeModifier: 14,
39
+ formatCode: 0,
40
+ },
41
+ ])
42
+
43
+ const rowWithBigOids = {
44
+ name: 'bigoid',
45
+ tableID: 3000000001,
46
+ attributeNumber: 2,
47
+ dataTypeID: 3000000003,
48
+ dataTypeSize: 4,
49
+ typeModifier: 5,
50
+ formatCode: 0,
51
+ }
52
+ const bigOidDescBuff = buffers.rowDescription([rowWithBigOids])
53
+
54
+ const emptyRowFieldBuf = buffers.dataRow([])
55
+
56
+ const oneFieldBuf = buffers.dataRow(['test'])
57
+
58
+ const expectedAuthenticationOkayMessage = {
59
+ name: 'authenticationOk',
60
+ length: 8,
61
+ }
62
+
63
+ const expectedParameterStatusMessage = {
64
+ name: 'parameterStatus',
65
+ parameterName: 'client_encoding',
66
+ parameterValue: 'UTF8',
67
+ length: 25,
68
+ }
69
+
70
+ const expectedBackendKeyDataMessage = {
71
+ name: 'backendKeyData',
72
+ processID: 1,
73
+ secretKey: 2,
74
+ }
75
+
76
+ const expectedReadyForQueryMessage = {
77
+ name: 'readyForQuery',
78
+ length: 5,
79
+ status: 'I',
80
+ }
81
+
82
+ const expectedCommandCompleteMessage = {
83
+ name: 'commandComplete',
84
+ length: 13,
85
+ text: 'SELECT 3',
86
+ }
87
+ const emptyRowDescriptionBuffer = new BufferList()
88
+ .addInt16(0) // number of fields
89
+ .join(true, 'T')
90
+
91
+ const expectedEmptyRowDescriptionMessage = {
92
+ name: 'rowDescription',
93
+ length: 6,
94
+ fieldCount: 0,
95
+ fields: [],
96
+ }
97
+ const expectedOneRowMessage = {
98
+ name: 'rowDescription',
99
+ length: 27,
100
+ fieldCount: 1,
101
+ fields: [
102
+ {
103
+ name: 'id',
104
+ tableID: 1,
105
+ columnID: 2,
106
+ dataTypeID: 3,
107
+ dataTypeSize: 4,
108
+ dataTypeModifier: 5,
109
+ format: 'text',
110
+ },
111
+ ],
112
+ }
113
+
114
+ const expectedTwoRowMessage = {
115
+ name: 'rowDescription',
116
+ length: 53,
117
+ fieldCount: 2,
118
+ fields: [
119
+ {
120
+ name: 'bang',
121
+ tableID: 1,
122
+ columnID: 2,
123
+ dataTypeID: 3,
124
+ dataTypeSize: 4,
125
+ dataTypeModifier: 5,
126
+ format: 'text',
127
+ },
128
+ {
129
+ name: 'whoah',
130
+ tableID: 10,
131
+ columnID: 11,
132
+ dataTypeID: 12,
133
+ dataTypeSize: 13,
134
+ dataTypeModifier: 14,
135
+ format: 'text',
136
+ },
137
+ ],
138
+ }
139
+ const expectedBigOidMessage = {
140
+ name: 'rowDescription',
141
+ length: 31,
142
+ fieldCount: 1,
143
+ fields: [
144
+ {
145
+ name: 'bigoid',
146
+ tableID: 3000000001,
147
+ columnID: 2,
148
+ dataTypeID: 3000000003,
149
+ dataTypeSize: 4,
150
+ dataTypeModifier: 5,
151
+ format: 'text',
152
+ },
153
+ ],
154
+ }
155
+
156
+ const emptyParameterDescriptionBuffer = new BufferList()
157
+ .addInt16(0) // number of parameters
158
+ .join(true, 't')
159
+
160
+ const oneParameterDescBuf = buffers.parameterDescription([1111])
161
+
162
+ const twoParameterDescBuf = buffers.parameterDescription([2222, 3333])
163
+
164
+ const expectedEmptyParameterDescriptionMessage = {
165
+ name: 'parameterDescription',
166
+ length: 6,
167
+ parameterCount: 0,
168
+ dataTypeIDs: [],
169
+ }
170
+
171
+ const expectedOneParameterMessage = {
172
+ name: 'parameterDescription',
173
+ length: 10,
174
+ parameterCount: 1,
175
+ dataTypeIDs: [1111],
176
+ }
177
+
178
+ const expectedTwoParameterMessage = {
179
+ name: 'parameterDescription',
180
+ length: 14,
181
+ parameterCount: 2,
182
+ dataTypeIDs: [2222, 3333],
183
+ }
184
+
185
+ const testForMessage = function (buffer: Buffer, expectedMessage: any) {
186
+ it('receives and parses ' + expectedMessage.name, async () => {
187
+ const messages = await parseBuffers([buffer])
188
+ const [lastMessage] = messages
189
+
190
+ for (const key in expectedMessage) {
191
+ assert.deepEqual((lastMessage as any)[key], expectedMessage[key])
192
+ }
193
+ })
194
+ }
195
+
196
+ const plainPasswordBuffer = buffers.authenticationCleartextPassword()
197
+ const md5PasswordBuffer = buffers.authenticationMD5Password()
198
+ const SASLBuffer = buffers.authenticationSASL()
199
+ const SASLContinueBuffer = buffers.authenticationSASLContinue()
200
+ const SASLFinalBuffer = buffers.authenticationSASLFinal()
201
+
202
+ const expectedPlainPasswordMessage = {
203
+ name: 'authenticationCleartextPassword',
204
+ }
205
+
206
+ const expectedMD5PasswordMessage = {
207
+ name: 'authenticationMD5Password',
208
+ salt: Buffer.from([1, 2, 3, 4]),
209
+ }
210
+
211
+ const expectedSASLMessage = {
212
+ name: 'authenticationSASL',
213
+ mechanisms: ['SCRAM-SHA-256'],
214
+ }
215
+
216
+ const expectedSASLContinueMessage = {
217
+ name: 'authenticationSASLContinue',
218
+ data: 'data',
219
+ }
220
+
221
+ const expectedSASLFinalMessage = {
222
+ name: 'authenticationSASLFinal',
223
+ data: 'data',
224
+ }
225
+
226
+ const notificationResponseBuffer = buffers.notification(4, 'hi', 'boom')
227
+ const expectedNotificationResponseMessage = {
228
+ name: 'notification',
229
+ processId: 4,
230
+ channel: 'hi',
231
+ payload: 'boom',
232
+ }
233
+
234
+ const parseBuffers = async (buffers: Buffer[]): Promise<BackendMessage[]> => {
235
+ const stream = new PassThrough()
236
+ for (const buffer of buffers) {
237
+ stream.write(buffer)
238
+ }
239
+ stream.end()
240
+ const msgs: BackendMessage[] = []
241
+ await parse(stream, (msg) => msgs.push(msg))
242
+ return msgs
243
+ }
244
+
245
+ describe('PgPacketStream', function () {
246
+ testForMessage(authOkBuffer, expectedAuthenticationOkayMessage)
247
+ testForMessage(plainPasswordBuffer, expectedPlainPasswordMessage)
248
+ testForMessage(md5PasswordBuffer, expectedMD5PasswordMessage)
249
+ testForMessage(SASLBuffer, expectedSASLMessage)
250
+ testForMessage(SASLContinueBuffer, expectedSASLContinueMessage)
251
+
252
+ // this exercises a found bug in the parser:
253
+ // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084
254
+ // and adds a test which is deterministic, rather than relying on network packet chunking
255
+ const extendedSASLContinueBuffer = Buffer.concat([SASLContinueBuffer, Buffer.from([1, 2, 3, 4])])
256
+ testForMessage(extendedSASLContinueBuffer, expectedSASLContinueMessage)
257
+
258
+ testForMessage(SASLFinalBuffer, expectedSASLFinalMessage)
259
+
260
+ // this exercises a found bug in the parser:
261
+ // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084
262
+ // and adds a test which is deterministic, rather than relying on network packet chunking
263
+ const extendedSASLFinalBuffer = Buffer.concat([SASLFinalBuffer, Buffer.from([1, 2, 4, 5])])
264
+ testForMessage(extendedSASLFinalBuffer, expectedSASLFinalMessage)
265
+
266
+ testForMessage(paramStatusBuffer, expectedParameterStatusMessage)
267
+ testForMessage(backendKeyDataBuffer, expectedBackendKeyDataMessage)
268
+ testForMessage(readyForQueryBuffer, expectedReadyForQueryMessage)
269
+ testForMessage(commandCompleteBuffer, expectedCommandCompleteMessage)
270
+ testForMessage(notificationResponseBuffer, expectedNotificationResponseMessage)
271
+ testForMessage(buffers.emptyQuery(), {
272
+ name: 'emptyQuery',
273
+ length: 4,
274
+ })
275
+
276
+ testForMessage(Buffer.from([0x6e, 0, 0, 0, 4]), {
277
+ name: 'noData',
278
+ })
279
+
280
+ describe('rowDescription messages', function () {
281
+ testForMessage(emptyRowDescriptionBuffer, expectedEmptyRowDescriptionMessage)
282
+ testForMessage(oneRowDescBuff, expectedOneRowMessage)
283
+ testForMessage(twoRowBuf, expectedTwoRowMessage)
284
+ testForMessage(bigOidDescBuff, expectedBigOidMessage)
285
+ })
286
+
287
+ describe('parameterDescription messages', function () {
288
+ testForMessage(emptyParameterDescriptionBuffer, expectedEmptyParameterDescriptionMessage)
289
+ testForMessage(oneParameterDescBuf, expectedOneParameterMessage)
290
+ testForMessage(twoParameterDescBuf, expectedTwoParameterMessage)
291
+ })
292
+
293
+ describe('parsing rows', function () {
294
+ describe('parsing empty row', function () {
295
+ testForMessage(emptyRowFieldBuf, {
296
+ name: 'dataRow',
297
+ fieldCount: 0,
298
+ })
299
+ })
300
+
301
+ describe('parsing data row with fields', function () {
302
+ testForMessage(oneFieldBuf, {
303
+ name: 'dataRow',
304
+ fieldCount: 1,
305
+ fields: ['test'],
306
+ })
307
+ })
308
+ })
309
+
310
+ describe('notice message', function () {
311
+ // this uses the same logic as error message
312
+ const buff = buffers.notice([{ type: 'C', value: 'code' }])
313
+ testForMessage(buff, {
314
+ name: 'notice',
315
+ code: 'code',
316
+ })
317
+ })
318
+
319
+ testForMessage(buffers.error([]), {
320
+ name: 'error',
321
+ })
322
+
323
+ describe('with all the fields', function () {
324
+ const buffer = buffers.error([
325
+ {
326
+ type: 'S',
327
+ value: 'ERROR',
328
+ },
329
+ {
330
+ type: 'C',
331
+ value: 'code',
332
+ },
333
+ {
334
+ type: 'M',
335
+ value: 'message',
336
+ },
337
+ {
338
+ type: 'D',
339
+ value: 'details',
340
+ },
341
+ {
342
+ type: 'H',
343
+ value: 'hint',
344
+ },
345
+ {
346
+ type: 'P',
347
+ value: '100',
348
+ },
349
+ {
350
+ type: 'p',
351
+ value: '101',
352
+ },
353
+ {
354
+ type: 'q',
355
+ value: 'query',
356
+ },
357
+ {
358
+ type: 'W',
359
+ value: 'where',
360
+ },
361
+ {
362
+ type: 'F',
363
+ value: 'file',
364
+ },
365
+ {
366
+ type: 'L',
367
+ value: 'line',
368
+ },
369
+ {
370
+ type: 'R',
371
+ value: 'routine',
372
+ },
373
+ {
374
+ type: 'Z', // ignored
375
+ value: 'alsdkf',
376
+ },
377
+ ])
378
+
379
+ testForMessage(buffer, {
380
+ name: 'error',
381
+ severity: 'ERROR',
382
+ code: 'code',
383
+ message: 'message',
384
+ detail: 'details',
385
+ hint: 'hint',
386
+ position: '100',
387
+ internalPosition: '101',
388
+ internalQuery: 'query',
389
+ where: 'where',
390
+ file: 'file',
391
+ line: 'line',
392
+ routine: 'routine',
393
+ })
394
+ })
395
+
396
+ testForMessage(parseCompleteBuffer, {
397
+ name: 'parseComplete',
398
+ })
399
+
400
+ testForMessage(bindCompleteBuffer, {
401
+ name: 'bindComplete',
402
+ })
403
+
404
+ testForMessage(bindCompleteBuffer, {
405
+ name: 'bindComplete',
406
+ })
407
+
408
+ testForMessage(buffers.closeComplete(), {
409
+ name: 'closeComplete',
410
+ })
411
+
412
+ describe('parses portal suspended message', function () {
413
+ testForMessage(portalSuspendedBuffer, {
414
+ name: 'portalSuspended',
415
+ })
416
+ })
417
+
418
+ describe('parses replication start message', function () {
419
+ testForMessage(Buffer.from([0x57, 0x00, 0x00, 0x00, 0x04]), {
420
+ name: 'replicationStart',
421
+ length: 4,
422
+ })
423
+ })
424
+
425
+ describe('copy', () => {
426
+ testForMessage(buffers.copyIn(0), {
427
+ name: 'copyInResponse',
428
+ length: 7,
429
+ binary: false,
430
+ columnTypes: [],
431
+ })
432
+
433
+ testForMessage(buffers.copyIn(2), {
434
+ name: 'copyInResponse',
435
+ length: 11,
436
+ binary: false,
437
+ columnTypes: [0, 1],
438
+ })
439
+
440
+ testForMessage(buffers.copyOut(0), {
441
+ name: 'copyOutResponse',
442
+ length: 7,
443
+ binary: false,
444
+ columnTypes: [],
445
+ })
446
+
447
+ testForMessage(buffers.copyOut(3), {
448
+ name: 'copyOutResponse',
449
+ length: 13,
450
+ binary: false,
451
+ columnTypes: [0, 1, 2],
452
+ })
453
+
454
+ testForMessage(buffers.copyDone(), {
455
+ name: 'copyDone',
456
+ length: 4,
457
+ })
458
+
459
+ testForMessage(buffers.copyData(Buffer.from([5, 6, 7])), {
460
+ name: 'copyData',
461
+ length: 7,
462
+ chunk: Buffer.from([5, 6, 7]),
463
+ })
464
+ })
465
+
466
+ // since the data message on a stream can randomly divide the incomming
467
+ // tcp packets anywhere, we need to make sure we can parse every single
468
+ // split on a tcp message
469
+ describe('split buffer, single message parsing', function () {
470
+ const fullBuffer = buffers.dataRow([null, 'bang', 'zug zug', null, '!'])
471
+
472
+ it('parses when full buffer comes in', async function () {
473
+ const messages = await parseBuffers([fullBuffer])
474
+ const message = messages[0] as any
475
+ assert.equal(message.fields.length, 5)
476
+ assert.equal(message.fields[0], null)
477
+ assert.equal(message.fields[1], 'bang')
478
+ assert.equal(message.fields[2], 'zug zug')
479
+ assert.equal(message.fields[3], null)
480
+ assert.equal(message.fields[4], '!')
481
+ })
482
+
483
+ const testMessageReceivedAfterSplitAt = async function (split: number) {
484
+ const firstBuffer = Buffer.alloc(fullBuffer.length - split)
485
+ const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length)
486
+ fullBuffer.copy(firstBuffer, 0, 0)
487
+ fullBuffer.copy(secondBuffer, 0, firstBuffer.length)
488
+ const messages = await parseBuffers([firstBuffer, secondBuffer])
489
+ const message = messages[0] as any
490
+ assert.equal(message.fields.length, 5)
491
+ assert.equal(message.fields[0], null)
492
+ assert.equal(message.fields[1], 'bang')
493
+ assert.equal(message.fields[2], 'zug zug')
494
+ assert.equal(message.fields[3], null)
495
+ assert.equal(message.fields[4], '!')
496
+ }
497
+
498
+ it('parses when split in the middle', function () {
499
+ return testMessageReceivedAfterSplitAt(6)
500
+ })
501
+
502
+ it('parses when split at end', function () {
503
+ return testMessageReceivedAfterSplitAt(2)
504
+ })
505
+
506
+ it('parses when split at beginning', function () {
507
+ return Promise.all([
508
+ testMessageReceivedAfterSplitAt(fullBuffer.length - 2),
509
+ testMessageReceivedAfterSplitAt(fullBuffer.length - 1),
510
+ testMessageReceivedAfterSplitAt(fullBuffer.length - 5),
511
+ ])
512
+ })
513
+ })
514
+
515
+ describe('split buffer, multiple message parsing', function () {
516
+ const dataRowBuffer = buffers.dataRow(['!'])
517
+ const readyForQueryBuffer = buffers.readyForQuery()
518
+ const fullBuffer = Buffer.alloc(dataRowBuffer.length + readyForQueryBuffer.length)
519
+ dataRowBuffer.copy(fullBuffer, 0, 0)
520
+ readyForQueryBuffer.copy(fullBuffer, dataRowBuffer.length, 0)
521
+
522
+ const verifyMessages = function (messages: any[]) {
523
+ assert.strictEqual(messages.length, 2)
524
+ assert.deepEqual(messages[0], {
525
+ name: 'dataRow',
526
+ fieldCount: 1,
527
+ length: 11,
528
+ fields: ['!'],
529
+ })
530
+ assert.equal(messages[0].fields[0], '!')
531
+ assert.deepEqual(messages[1], {
532
+ name: 'readyForQuery',
533
+ length: 5,
534
+ status: 'I',
535
+ })
536
+ }
537
+ // sanity check
538
+ it('receives both messages when packet is not split', async function () {
539
+ const messages = await parseBuffers([fullBuffer])
540
+ verifyMessages(messages)
541
+ })
542
+
543
+ const splitAndVerifyTwoMessages = async function (split: number) {
544
+ const firstBuffer = Buffer.alloc(fullBuffer.length - split)
545
+ const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length)
546
+ fullBuffer.copy(firstBuffer, 0, 0)
547
+ fullBuffer.copy(secondBuffer, 0, firstBuffer.length)
548
+ const messages = await parseBuffers([firstBuffer, secondBuffer])
549
+ verifyMessages(messages)
550
+ }
551
+
552
+ describe('receives both messages when packet is split', function () {
553
+ it('in the middle', function () {
554
+ return splitAndVerifyTwoMessages(11)
555
+ })
556
+ it('at the front', function () {
557
+ return Promise.all([
558
+ splitAndVerifyTwoMessages(fullBuffer.length - 1),
559
+ splitAndVerifyTwoMessages(fullBuffer.length - 4),
560
+ splitAndVerifyTwoMessages(fullBuffer.length - 6),
561
+ ])
562
+ })
563
+
564
+ it('at the end', function () {
565
+ return Promise.all([splitAndVerifyTwoMessages(8), splitAndVerifyTwoMessages(1)])
566
+ })
567
+ })
568
+ })
569
+
570
+ it('cleans up the reader after handling a packet', function () {
571
+ const parser = new Parser()
572
+ parser.parse(oneFieldBuf, () => {})
573
+ assert.strictEqual((parser as any).reader.buffer.byteLength, 0)
574
+ })
575
+ })