decocms 2.281.2 → 2.281.4-alpha.1

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 (199) hide show
  1. package/dist/client/assets/{AlertCircle-BeQFaTo3.js → AlertCircle-7JjFgLc7.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-C-IANgnQ.js → ArrowNarrowLeft-Dede_Ne2.js} +1 -1
  3. package/dist/client/assets/{CheckCircle-Dh4A5tI_.js → CheckCircle-CTW72EON.js} +1 -1
  4. package/dist/client/assets/{ChevronDown-D9aZn2Hi.js → ChevronDown-kxc5hHzL.js} +1 -1
  5. package/dist/client/assets/{ChevronRight-CkL59Zuk.js → ChevronRight-DDbSh6n1.js} +1 -1
  6. package/dist/client/assets/{ChevronUp-C7hCnblE.js → ChevronUp-Dp8gBsiQ.js} +1 -1
  7. package/dist/client/assets/{Container-CSvdcipc.js → Container-DbPEBCPd.js} +1 -1
  8. package/dist/client/assets/{LinkExternal01-sdvrsKlM.js → LinkExternal01-DGpodMuQ.js} +1 -1
  9. package/dist/client/assets/{Lock01-CneVnDQd.js → Lock01-DWeyLAgC.js} +1 -1
  10. package/dist/client/assets/{Palette-Bo0ad1R6.js → Palette-9DjyOnf4.js} +1 -1
  11. package/dist/client/assets/{Play-BhoAd8Uu.js → Play-CGVWyYId.js} +1 -1
  12. package/dist/client/assets/{Plus-79r9zazJ.js → Plus-BZ8TfrO6.js} +1 -1
  13. package/dist/client/assets/{SearchMd-00qF-7Ba.js → SearchMd-DiHiiShh.js} +1 -1
  14. package/dist/client/assets/{Settings02-B6cIpcv6.js → Settings02-BrMLRmyq.js} +1 -1
  15. package/dist/client/assets/{Star01-RArWROxo.js → Star01-DOZUyUGI.js} +1 -1
  16. package/dist/client/assets/{Sun-CaIYIMZ6.js → Sun-D9NMWxb1.js} +1 -1
  17. package/dist/client/assets/{Tool01-BK4G_l0X.js → Tool01-CPwXEQb5.js} +1 -1
  18. package/dist/client/assets/{Trash01-PNv-fbRK.js → Trash01-JJPVWHIh.js} +1 -1
  19. package/dist/client/assets/{Upload01-BeVyQxbB.js → Upload01-CAASdeK2.js} +1 -1
  20. package/dist/client/assets/{User01-BirINwKI.js → User01-DzewYYcp.js} +1 -1
  21. package/dist/client/assets/{Users03-Dpk7x7z4.js → Users03-1bfUrVZT.js} +1 -1
  22. package/dist/client/assets/{X-KSz9xyi5.js → X-CyqBZIBt.js} +1 -1
  23. package/dist/client/assets/{XCircle-uU-3aWe3.js → XCircle-C0Pb9VbS.js} +1 -1
  24. package/dist/client/assets/{Zap-DvQy6Azt.js → Zap-WS6KKy8N.js} +1 -1
  25. package/dist/client/assets/{ZapSquare-Dk1UmO2a.js → ZapSquare-DBz9qdVm.js} +1 -1
  26. package/dist/client/assets/{accordion-w6xYXziw.js → accordion-iHKIJir4.js} +1 -1
  27. package/dist/client/assets/{agent-icon-CMOX8nfk.js → agent-icon-OPgA0_xh.js} +1 -1
  28. package/dist/client/assets/{agents-list-CeEeRXns.js → agents-list-EtMSypXC.js} +1 -1
  29. package/dist/client/assets/ai-providers-BkPyz71b.js +1 -0
  30. package/dist/client/assets/{alert-dialog-DtwmYIx7.js → alert-dialog-CvUq9c2l.js} +1 -1
  31. package/dist/client/assets/{auth-catchall-CMH1u4oJ.js → auth-catchall-C2AFIXKV.js} +1 -1
  32. package/dist/client/assets/{automation-list-row-Sb9JaQY9.js → automation-list-row-srgvCKZh.js} +1 -1
  33. package/dist/client/assets/{automations-Dmw1cKQC.js → automations-Dp2hsJvG.js} +1 -1
  34. package/dist/client/assets/{avatar-BSJnhSPL.js → avatar-BAGLgwIy.js} +1 -1
  35. package/dist/client/assets/{badge-BbahYJz-.js → badge-Csg5fgRc.js} +1 -1
  36. package/dist/client/assets/{brand-context-9yJi8LtT.js → brand-context-D7GISA6v.js} +1 -1
  37. package/dist/client/assets/{card-BBjkVedQ.js → card-bx_QeXw_.js} +1 -1
  38. package/dist/client/assets/{chat-context-BVA22TkC.js → chat-context-OvrSchhz.js} +1 -1
  39. package/dist/client/assets/{checkbox-BNYrEZke.js → checkbox-C7KSBfZr.js} +1 -1
  40. package/dist/client/assets/{collection-detail-WDWjdfFo.js → collection-detail-BcTctJfQ.js} +1 -1
  41. package/dist/client/assets/{collection-display-button-C_SpzkVL.js → collection-display-button-B4SGVjCw.js} +1 -1
  42. package/dist/client/assets/{collection-search-3gkmMFfK.js → collection-search-DOj_zhXC.js} +1 -1
  43. package/dist/client/assets/{collection-table-wrapper-Nq245ZaG.js → collection-table-wrapper-C7ZPBElG.js} +1 -1
  44. package/dist/client/assets/{collection-tabs-DQAAB0E9.js → collection-tabs-DrO0tDqW.js} +1 -1
  45. package/dist/client/assets/{collections-CvC03WFa.js → collections-DRefuj7X.js} +1 -1
  46. package/dist/client/assets/{command-COmac0HY.js → command-CGYZopFY.js} +1 -1
  47. package/dist/client/assets/{connection-card-C-lcUJmx.js → connection-card-x5-U4xYO.js} +1 -1
  48. package/dist/client/assets/{connection-detail-DXUAuxOs.js → connection-detail-DNT7n-qD.js} +1 -1
  49. package/dist/client/assets/{connection-form-helpers-Beczk_I1.js → connection-form-helpers-Cieg3At7.js} +1 -1
  50. package/dist/client/assets/{connections-jiDZ88zc.js → connections-CcMp0k3e.js} +1 -1
  51. package/dist/client/assets/{constants-K9p6sFeA.js → constants-BTGWOBGG.js} +1 -1
  52. package/dist/client/assets/{constants-BXYBvBo8.js → constants-DfNucTio.js} +1 -1
  53. package/dist/client/assets/{dialog-Cu_M3bSF.js → dialog-CDZoEVTf.js} +1 -1
  54. package/dist/client/assets/{drawer-C0zWk4g_.js → drawer-BtA5XqsS.js} +1 -1
  55. package/dist/client/assets/{dropdown-menu-DVLrmulo.js → dropdown-menu-DU8JG2pk.js} +1 -1
  56. package/dist/client/assets/{dynamic-plugin-layout-4eAl2fmh.js → dynamic-plugin-layout-DI-gMMKE.js} +1 -1
  57. package/dist/client/assets/{empty-state-BKZHnGIj.js → empty-state-B2WkME-3.js} +1 -1
  58. package/dist/client/assets/{empty-state-CUC0Gkix.js → empty-state-BxCE5vnH.js} +1 -1
  59. package/dist/client/assets/{extract-connection-data-CvyRIMCz.js → extract-connection-data-DBjTfzuX.js} +1 -1
  60. package/dist/client/assets/{features-XCvz9PLL.js → features-BTMuaR90.js} +1 -1
  61. package/dist/client/assets/{form-Ddm04alF.js → form-nehB0yqt.js} +1 -1
  62. package/dist/client/assets/{general-DUSBEOfs.js → general-aaZSKs7j.js} +1 -1
  63. package/dist/client/assets/{index-Cg0hncqj.js → index-0Nuumosr.js} +1 -1
  64. package/dist/client/assets/{index-BPDAXzpD.js → index-A1TjNoro.js} +1 -1
  65. package/dist/client/assets/{index-BdfTJahg.js → index-BD-lTLoS.js} +1 -1
  66. package/dist/client/assets/{index-FLw-zxvs.js → index-BFKRaI9q.js} +1 -1
  67. package/dist/client/assets/{index-BrtLQXUh.js → index-C7LpArfe.js} +1 -1
  68. package/dist/client/assets/{index-uAQGGxtu.js → index-CFqkoEQr.js} +1 -1
  69. package/dist/client/assets/{index-BhIzdEY1.js → index-DkLXfxeF.js} +2 -2
  70. package/dist/client/assets/{index-BH8gPP0f.js → index-DvGOE4TR.js} +1 -1
  71. package/dist/client/assets/{index-CU16qbkD.js → index-FCEJcMKv.js} +4 -4
  72. package/dist/client/assets/{index-BHskyDSR.js → index-nsskrYaZ.js} +1 -1
  73. package/dist/client/assets/{infiniteQueryObserver-BO26Xlha.js → infiniteQueryObserver-VUPo5ONC.js} +1 -1
  74. package/dist/client/assets/{input-Bz8fx1AG.js → input-Dxp3-aWz.js} +1 -1
  75. package/dist/client/assets/{integration-icon-Byenx_4j.js → integration-icon-DUduEF01.js} +1 -1
  76. package/dist/client/assets/{label-DaHwCWWB.js → label-BVoDYtUr.js} +1 -1
  77. package/dist/client/assets/{layout-C8AFQnZg.js → layout-C9Y7P28P.js} +1 -1
  78. package/dist/client/assets/{lean-canvas-recruit-modal-mykHJAKm.js → lean-canvas-recruit-modal-N8EVMVv5.js} +1 -1
  79. package/dist/client/assets/{login-DwiMJDl5.js → login-kx3MQEcu.js} +1 -1
  80. package/dist/client/assets/{members-Cd_WsIS9.js → members-BucBnRu5.js} +1 -1
  81. package/dist/client/assets/{monaco-editor-D27CWon0.js → monaco-editor-WwGGEq4E.js} +1 -1
  82. package/dist/client/assets/{monitoring-stats-row-C-XRpFjl.js → monitoring-stats-row-D5uhoKE2.js} +1 -1
  83. package/dist/client/assets/{oauth-callback-GuSY-vSr.js → oauth-callback-BB1bfQ0C.js} +1 -1
  84. package/dist/client/assets/{oauth-callback-ai-provider-D3FgevI5.js → oauth-callback-ai-provider-Cx11JY4J.js} +1 -1
  85. package/dist/client/assets/{onboarding-PM_BE0uA.js → onboarding-CRDp-7ts.js} +1 -1
  86. package/dist/client/assets/{org-layout-C251Cbcv.js → org-layout-DWgxefUR.js} +1 -1
  87. package/dist/client/assets/{org-plugin-layout-BwQLOazi.js → org-plugin-layout-B0IS-vI9.js} +1 -1
  88. package/dist/client/assets/{plugin-empty-state-DLXHjQeu.js → plugin-empty-state-C9Il8L-B.js} +1 -1
  89. package/dist/client/assets/{plugin-header-BddmOg85.js → plugin-header-DF-027xA.js} +1 -1
  90. package/dist/client/assets/{plugin-layout-RqfANRb_.js → plugin-layout-CQviDmLQ.js} +1 -1
  91. package/dist/client/assets/{popover-BEF8mI0w.js → popover-_s_tQK3Z.js} +1 -1
  92. package/dist/client/assets/{profile-DrdPa8Y7.js → profile-BAAvq5PA.js} +1 -1
  93. package/dist/client/assets/{project-app-view-XrA_5t6Q.js → project-app-view-CWfRTdtF.js} +1 -1
  94. package/dist/client/assets/registry-BO9_rH5u.js +2 -0
  95. package/dist/client/assets/{registry-layout-CwCyJT-v.js → registry-layout-DQKjQh-i.js} +1 -1
  96. package/dist/client/assets/{required-auth-layout-Cxviv7yN.js → required-auth-layout-CXhuopzx.js} +1 -1
  97. package/dist/client/assets/{reset-password-DYbWh4Wq.js → reset-password-DZzWPbSN.js} +1 -1
  98. package/dist/client/assets/{scroll-area-_gjorSmM.js → scroll-area-hAa33XcH.js} +1 -1
  99. package/dist/client/assets/{search-input-Dflevf_r.js → search-input-C61ZvpPR.js} +1 -1
  100. package/dist/client/assets/{select-ruUaRI3f.js → select-DRB8tE_p.js} +1 -1
  101. package/dist/client/assets/{select-model-BgS5BYlp.js → select-model-CP81c55I.js} +1 -1
  102. package/dist/client/assets/settings-layout-UJNERdUa.js +1 -0
  103. package/dist/client/assets/{shell-layout-Lnkya_bN.js → shell-layout-DAhaxub0.js} +1 -1
  104. package/dist/client/assets/{skeleton-CvZ1yhmk.js → skeleton-3sAmljB_.js} +1 -1
  105. package/dist/client/assets/{sso-DVCm0NAv.js → sso-BmmBRsro.js} +1 -1
  106. package/dist/client/assets/{store-BAtOk8g6.js → store-Dq5sv0Ed.js} +1 -1
  107. package/dist/client/assets/store-registry-BfCS4xd0.js +2 -0
  108. package/dist/client/assets/{switch-C4VRxkon.js → switch-DL640Ue6.js} +1 -1
  109. package/dist/client/assets/{table-C1xMho2l.js → table-Dbi2W1JY.js} +1 -1
  110. package/dist/client/assets/{tabs-MUC8gGmo.js → tabs-BByMWKiD.js} +1 -1
  111. package/dist/client/assets/{task-status-DBTk3ApD.js → task-status-CmmBYEnr.js} +1 -1
  112. package/dist/client/assets/{textarea-Dh5aI-9Q.js → textarea-DHlYLEvo.js} +1 -1
  113. package/dist/client/assets/{toggle-group-qqPb8p7Z.js → toggle-group-CZBEspMS.js} +1 -1
  114. package/dist/client/assets/{tools-list-5INqbH2J.js → tools-list-DuX1kehi.js} +1 -1
  115. package/dist/client/assets/{types-Bp-YI7R5.js → types-DvTqSron.js} +1 -1
  116. package/dist/client/assets/{use-ai-providers-BXn7VXga.js → use-ai-providers-ClS89y7X.js} +1 -1
  117. package/dist/client/assets/{use-collections-Dg7sh01O.js → use-collections-Dv9KwC2D.js} +1 -1
  118. package/dist/client/assets/{use-connection-DhM_x-jA.js → use-connection-BmcG6E0P.js} +1 -1
  119. package/dist/client/assets/{use-copy-BuEIWb6s.js → use-copy-BkRNxEwn.js} +1 -1
  120. package/dist/client/assets/{use-create-virtual-mcp-KKiF-MXD.js → use-create-virtual-mcp-CH8VJize.js} +1 -1
  121. package/dist/client/assets/{use-decopilot-events-BSRQhWTI.js → use-decopilot-events-BwyevFSM.js} +1 -1
  122. package/dist/client/assets/{use-delete-connection-EjeBh_jx.js → use-delete-connection-DfVzQzgY.js} +1 -1
  123. package/dist/client/assets/{use-infinite-scroll-BvRRlmDj.js → use-infinite-scroll-C0yn-Y6f.js} +1 -1
  124. package/dist/client/assets/{use-list-state-DJ8S20f9.js → use-list-state-D4yuEOh_.js} +1 -1
  125. package/dist/client/assets/{use-mcp-tools-C0kKBiKr.js → use-mcp-tools-B1TR0GK5.js} +1 -1
  126. package/dist/client/assets/{use-members-D4VPX3yK.js → use-members-BSe-l5RV.js} +1 -1
  127. package/dist/client/assets/{use-mobile-BXRLCdzR.js → use-mobile-D7gj1mMa.js} +1 -1
  128. package/dist/client/assets/{use-navigate-to-agent-C1QNfHMd.js → use-navigate-to-agent-BOFYFzjJ.js} +1 -1
  129. package/dist/client/assets/{use-org-sso-C1E2S5f1.js → use-org-sso-BIx4Rk_Y.js} +1 -1
  130. package/dist/client/assets/{use-organization-settings-NQDr_YDe.js → use-organization-settings-CcY3Vn-c.js} +1 -1
  131. package/dist/client/assets/{use-registry-connections-2buwPIEr.js → use-registry-connections-G41Zams2.js} +1 -1
  132. package/dist/client/assets/{use-status-sounds-C5rJSnr7.js → use-status-sounds-Cq0X5c0g.js} +1 -1
  133. package/dist/client/assets/{use-tasks-DoJvFu21.js → use-tasks-DqpLygvk.js} +1 -1
  134. package/dist/client/assets/{use-view-mode-eHr1pnSD.js → use-view-mode-hEZSGIRN.js} +1 -1
  135. package/dist/client/assets/{use-virtual-mcp-DPQanfrd.js → use-virtual-mcp-B0nMlTA1.js} +1 -1
  136. package/dist/client/assets/useInfiniteQuery-D-Fu49PN.js +1 -0
  137. package/dist/client/assets/{user-D-0Dg4hb.js → user-B-lqJM9i.js} +1 -1
  138. package/dist/client/assets/{view-mode-toggle-C9JdTAIx.js → view-mode-toggle-DSiIUGAP.js} +1 -1
  139. package/dist/client/assets/{workflow-Bo7CKW-_.js → workflow-C2B3R0BC.js} +1 -1
  140. package/dist/client/assets/workflow-detail-EmQ0YEuI.js +1 -0
  141. package/dist/client/index.html +1 -1
  142. package/dist/server/cli.js +4 -2
  143. package/dist/server/node_modules/postgres-date/index.js +116 -0
  144. package/dist/server/node_modules/{postgres-bytea → postgres-date}/package.json +7 -8
  145. package/dist/server/node_modules/postgres-date/readme.md +49 -0
  146. package/dist/server/node_modules/split2/LICENSE +13 -0
  147. package/dist/server/node_modules/split2/README.md +85 -0
  148. package/dist/server/node_modules/split2/bench.js +27 -0
  149. package/dist/server/node_modules/split2/index.js +141 -0
  150. package/dist/server/node_modules/split2/package.json +39 -0
  151. package/dist/server/node_modules/split2/test.js +409 -0
  152. package/dist/server/server.js +3 -1
  153. package/package.json +1 -1
  154. package/dist/client/assets/ai-providers-_ruFOoFf.js +0 -1
  155. package/dist/client/assets/registry-hvW8DAlR.js +0 -2
  156. package/dist/client/assets/settings-layout-C9QCDWL8.js +0 -1
  157. package/dist/client/assets/store-registry-DyRkwg3g.js +0 -2
  158. package/dist/client/assets/useInfiniteQuery-Cozeocmy.js +0 -1
  159. package/dist/client/assets/workflow-detail-cv-DGPKy.js +0 -1
  160. package/dist/server/node_modules/ansi-styles/index.d.ts +0 -236
  161. package/dist/server/node_modules/ansi-styles/index.js +0 -223
  162. package/dist/server/node_modules/ansi-styles/license +0 -9
  163. package/dist/server/node_modules/ansi-styles/package.json +0 -54
  164. package/dist/server/node_modules/ansi-styles/readme.md +0 -173
  165. package/dist/server/node_modules/onetime/index.d.ts +0 -64
  166. package/dist/server/node_modules/onetime/index.js +0 -44
  167. package/dist/server/node_modules/onetime/license +0 -9
  168. package/dist/server/node_modules/onetime/package.json +0 -43
  169. package/dist/server/node_modules/onetime/readme.md +0 -94
  170. package/dist/server/node_modules/pg/LICENSE +0 -21
  171. package/dist/server/node_modules/pg/README.md +0 -95
  172. package/dist/server/node_modules/pg/esm/index.mjs +0 -20
  173. package/dist/server/node_modules/pg/lib/client.js +0 -743
  174. package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
  175. package/dist/server/node_modules/pg/lib/connection.js +0 -221
  176. package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
  177. package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
  178. package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
  179. package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
  180. package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
  181. package/dist/server/node_modules/pg/lib/defaults.js +0 -91
  182. package/dist/server/node_modules/pg/lib/index.js +0 -73
  183. package/dist/server/node_modules/pg/lib/native/client.js +0 -323
  184. package/dist/server/node_modules/pg/lib/native/index.js +0 -2
  185. package/dist/server/node_modules/pg/lib/native/query.js +0 -165
  186. package/dist/server/node_modules/pg/lib/query.js +0 -252
  187. package/dist/server/node_modules/pg/lib/result.js +0 -109
  188. package/dist/server/node_modules/pg/lib/stream.js +0 -83
  189. package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
  190. package/dist/server/node_modules/pg/lib/utils.js +0 -217
  191. package/dist/server/node_modules/pg/package.json +0 -76
  192. package/dist/server/node_modules/postgres-array/index.d.ts +0 -4
  193. package/dist/server/node_modules/postgres-array/index.js +0 -97
  194. package/dist/server/node_modules/postgres-array/package.json +0 -35
  195. package/dist/server/node_modules/postgres-array/readme.md +0 -43
  196. package/dist/server/node_modules/postgres-bytea/index.js +0 -33
  197. package/dist/server/node_modules/postgres-bytea/license +0 -21
  198. package/dist/server/node_modules/postgres-bytea/readme.md +0 -34
  199. /package/dist/server/node_modules/{postgres-array → postgres-date}/license +0 -0
@@ -0,0 +1,116 @@
1
+ 'use strict'
2
+
3
+ var DATE_TIME = /(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/
4
+ var DATE = /^(\d{1,})-(\d{2})-(\d{2})( BC)?$/
5
+ var TIME_ZONE = /([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/
6
+ var INFINITY = /^-?infinity$/
7
+
8
+ module.exports = function parseDate (isoDate) {
9
+ if (INFINITY.test(isoDate)) {
10
+ // Capitalize to Infinity before passing to Number
11
+ return Number(isoDate.replace('i', 'I'))
12
+ }
13
+ var matches = DATE_TIME.exec(isoDate)
14
+
15
+ if (!matches) {
16
+ // Force YYYY-MM-DD dates to be parsed as local time
17
+ return getDate(isoDate) || null
18
+ }
19
+
20
+ var isBC = !!matches[8]
21
+ var year = parseInt(matches[1], 10)
22
+ if (isBC) {
23
+ year = bcYearToNegativeYear(year)
24
+ }
25
+
26
+ var month = parseInt(matches[2], 10) - 1
27
+ var day = matches[3]
28
+ var hour = parseInt(matches[4], 10)
29
+ var minute = parseInt(matches[5], 10)
30
+ var second = parseInt(matches[6], 10)
31
+
32
+ var ms = matches[7]
33
+ ms = ms ? 1000 * parseFloat(ms) : 0
34
+
35
+ var date
36
+ var offset = timeZoneOffset(isoDate)
37
+ if (offset != null) {
38
+ date = new Date(Date.UTC(year, month, day, hour, minute, second, ms))
39
+
40
+ // Account for years from 0 to 99 being interpreted as 1900-1999
41
+ // by Date.UTC / the multi-argument form of the Date constructor
42
+ if (is0To99(year)) {
43
+ date.setUTCFullYear(year)
44
+ }
45
+
46
+ if (offset !== 0) {
47
+ date.setTime(date.getTime() - offset)
48
+ }
49
+ } else {
50
+ date = new Date(year, month, day, hour, minute, second, ms)
51
+
52
+ if (is0To99(year)) {
53
+ date.setFullYear(year)
54
+ }
55
+ }
56
+
57
+ return date
58
+ }
59
+
60
+ function getDate (isoDate) {
61
+ var matches = DATE.exec(isoDate)
62
+ if (!matches) {
63
+ return
64
+ }
65
+
66
+ var year = parseInt(matches[1], 10)
67
+ var isBC = !!matches[4]
68
+ if (isBC) {
69
+ year = bcYearToNegativeYear(year)
70
+ }
71
+
72
+ var month = parseInt(matches[2], 10) - 1
73
+ var day = matches[3]
74
+ // YYYY-MM-DD will be parsed as local time
75
+ var date = new Date(year, month, day)
76
+
77
+ if (is0To99(year)) {
78
+ date.setFullYear(year)
79
+ }
80
+
81
+ return date
82
+ }
83
+
84
+ // match timezones:
85
+ // Z (UTC)
86
+ // -05
87
+ // +06:30
88
+ function timeZoneOffset (isoDate) {
89
+ if (isoDate.endsWith('+00')) {
90
+ return 0
91
+ }
92
+
93
+ var zone = TIME_ZONE.exec(isoDate.split(' ')[1])
94
+ if (!zone) return
95
+ var type = zone[1]
96
+
97
+ if (type === 'Z') {
98
+ return 0
99
+ }
100
+ var sign = type === '-' ? -1 : 1
101
+ var offset = parseInt(zone[2], 10) * 3600 +
102
+ parseInt(zone[3] || 0, 10) * 60 +
103
+ parseInt(zone[4] || 0, 10)
104
+
105
+ return offset * sign * 1000
106
+ }
107
+
108
+ function bcYearToNegativeYear (year) {
109
+ // Account for numerical difference between representations of BC years
110
+ // See: https://github.com/bendrucker/postgres-date/issues/5
111
+ return -(year - 1)
112
+ }
113
+
114
+ function is0To99 (num) {
115
+ return num >= 0 && num < 100
116
+ }
@@ -1,10 +1,10 @@
1
1
  {
2
- "name": "postgres-bytea",
2
+ "name": "postgres-date",
3
3
  "main": "index.js",
4
- "version": "1.0.1",
5
- "description": "Postgres bytea parser",
4
+ "version": "1.0.7",
5
+ "description": "Postgres date column parser",
6
6
  "license": "MIT",
7
- "repository": "bendrucker/postgres-bytea",
7
+ "repository": "bendrucker/postgres-date",
8
8
  "author": {
9
9
  "name": "Ben Drucker",
10
10
  "email": "bvdrucker@gmail.com",
@@ -17,15 +17,14 @@
17
17
  "test": "standard && tape test.js"
18
18
  },
19
19
  "keywords": [
20
- "bytea",
21
20
  "postgres",
22
- "binary",
21
+ "date",
23
22
  "parser"
24
23
  ],
25
24
  "dependencies": {},
26
25
  "devDependencies": {
27
- "tape": "^4.0.0",
28
- "standard": "^4.0.0"
26
+ "standard": "^14.0.0",
27
+ "tape": "^5.0.0"
29
28
  },
30
29
  "files": [
31
30
  "index.js",
@@ -0,0 +1,49 @@
1
+ # postgres-date [![Build Status](https://travis-ci.org/bendrucker/postgres-date.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-date) [![Greenkeeper badge](https://badges.greenkeeper.io/bendrucker/postgres-date.svg)](https://greenkeeper.io/)
2
+
3
+ > Postgres date output parser
4
+
5
+ This package parses [date/time outputs](https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT) from Postgres into Javascript `Date` objects. Its goal is to match Postgres behavior and preserve data accuracy.
6
+
7
+ If you find a case where a valid Postgres output results in incorrect parsing (including loss of precision), please [create a pull request](https://github.com/bendrucker/postgres-date/compare) and provide a failing test.
8
+
9
+ **Supported Postgres Versions:** `>= 9.6`
10
+
11
+ All prior versions of Postgres are likely compatible but not officially supported.
12
+
13
+ ## Install
14
+
15
+ ```
16
+ $ npm install --save postgres-date
17
+ ```
18
+
19
+
20
+ ## Usage
21
+
22
+ ```js
23
+ var parse = require('postgres-date')
24
+ parse('2011-01-23 22:15:51Z')
25
+ // => 2011-01-23T22:15:51.000Z
26
+ ```
27
+
28
+ ## API
29
+
30
+ #### `parse(isoDate)` -> `date`
31
+
32
+ ##### isoDate
33
+
34
+ *Required*
35
+ Type: `string`
36
+
37
+ A date string from Postgres.
38
+
39
+ ## Releases
40
+
41
+ The following semantic versioning increments will be used for changes:
42
+
43
+ * **Major**: Removal of support for Node.js versions or Postgres versions (not expected)
44
+ * **Minor**: Unused, since Postgres returns dates in standard ISO 8601 format
45
+ * **Patch**: Any fix for parsing behavior
46
+
47
+ ## License
48
+
49
+ MIT © [Ben Drucker](http://bendrucker.me)
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2014-2018, Matteo Collina <hello@matteocollina.com>
2
+
3
+ Permission to use, copy, modify, and/or distribute this software for any
4
+ purpose with or without fee is hereby granted, provided that the above
5
+ copyright notice and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
13
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,85 @@
1
+ # Split2(matcher, mapper, options)
2
+
3
+ ![ci](https://github.com/mcollina/split2/workflows/ci/badge.svg)
4
+
5
+ Break up a stream and reassemble it so that each line is a chunk.
6
+ `split2` is inspired by [@dominictarr](https://github.com/dominictarr) [`split`](https://github.com/dominictarr/split) module,
7
+ and it is totally API compatible with it.
8
+ However, it is based on Node.js core [`Transform`](https://nodejs.org/api/stream.html#stream_new_stream_transform_options).
9
+
10
+ `matcher` may be a `String`, or a `RegExp`. Example, read every line in a file ...
11
+
12
+ ``` js
13
+ fs.createReadStream(file)
14
+ .pipe(split2())
15
+ .on('data', function (line) {
16
+ //each chunk now is a separate line!
17
+ })
18
+
19
+ ```
20
+
21
+ `split` takes the same arguments as `string.split` except it defaults to '/\r?\n/', and the optional `limit` paremeter is ignored.
22
+ [String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)
23
+
24
+ `split` takes an optional options object on it's third argument, which
25
+ is directly passed as a
26
+ [Transform](https://nodejs.org/api/stream.html#stream_new_stream_transform_options)
27
+ option.
28
+
29
+ Additionally, the `.maxLength` and `.skipOverflow` options are implemented, which set limits on the internal
30
+ buffer size and the stream's behavior when the limit is exceeded. There is no limit unless `maxLength` is set. When
31
+ the internal buffer size exceeds `maxLength`, the stream emits an error by default. You may also set `skipOverflow` to
32
+ true to suppress the error and instead skip past any lines that cause the internal buffer to exceed `maxLength`.
33
+
34
+ Calling `.destroy` will make the stream emit `close`. Use this to perform cleanup logic
35
+
36
+ ``` js
37
+ var splitFile = function(filename) {
38
+ var file = fs.createReadStream(filename)
39
+
40
+ return file
41
+ .pipe(split2())
42
+ .on('close', function() {
43
+ // destroy the file stream in case the split stream was destroyed
44
+ file.destroy()
45
+ })
46
+ }
47
+
48
+ var stream = splitFile('my-file.txt')
49
+
50
+ stream.destroy() // will destroy the input file stream
51
+ ```
52
+
53
+ # NDJ - Newline Delimited Json
54
+
55
+ `split2` accepts a function which transforms each line.
56
+
57
+ ``` js
58
+ fs.createReadStream(file)
59
+ .pipe(split2(JSON.parse))
60
+ .on('data', function (obj) {
61
+ //each chunk now is a js object
62
+ })
63
+ .on("error", function(error) {
64
+ //handling parsing errors
65
+ })
66
+ ```
67
+
68
+ However, in [@dominictarr](https://github.com/dominictarr) [`split`](https://github.com/dominictarr/split) the mapper
69
+ is wrapped in a try-catch, while here it is not: if your parsing logic can throw, wrap it yourself. Otherwise, you can also use the stream error handling when mapper function throw.
70
+
71
+ # License
72
+
73
+ Copyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com>
74
+
75
+ Permission to use, copy, modify, and/or distribute this software for any
76
+ purpose with or without fee is hereby granted, provided that the above
77
+ copyright notice and this permission notice appear in all copies.
78
+
79
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
80
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
81
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
82
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
83
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
84
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
85
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,27 @@
1
+ 'use strict'
2
+
3
+ const split = require('./')
4
+ const bench = require('fastbench')
5
+ const binarySplit = require('binary-split')
6
+ const fs = require('fs')
7
+
8
+ function benchSplit (cb) {
9
+ fs.createReadStream('package.json')
10
+ .pipe(split())
11
+ .on('end', cb)
12
+ .resume()
13
+ }
14
+
15
+ function benchBinarySplit (cb) {
16
+ fs.createReadStream('package.json')
17
+ .pipe(binarySplit())
18
+ .on('end', cb)
19
+ .resume()
20
+ }
21
+
22
+ const run = bench([
23
+ benchSplit,
24
+ benchBinarySplit
25
+ ], 10000)
26
+
27
+ run(run)
@@ -0,0 +1,141 @@
1
+ /*
2
+ Copyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com>
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted, provided that the above
6
+ copyright notice and this permission notice appear in all copies.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
14
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
+ */
16
+
17
+ 'use strict'
18
+
19
+ const { Transform } = require('stream')
20
+ const { StringDecoder } = require('string_decoder')
21
+ const kLast = Symbol('last')
22
+ const kDecoder = Symbol('decoder')
23
+
24
+ function transform (chunk, enc, cb) {
25
+ let list
26
+ if (this.overflow) { // Line buffer is full. Skip to start of next line.
27
+ const buf = this[kDecoder].write(chunk)
28
+ list = buf.split(this.matcher)
29
+
30
+ if (list.length === 1) return cb() // Line ending not found. Discard entire chunk.
31
+
32
+ // Line ending found. Discard trailing fragment of previous line and reset overflow state.
33
+ list.shift()
34
+ this.overflow = false
35
+ } else {
36
+ this[kLast] += this[kDecoder].write(chunk)
37
+ list = this[kLast].split(this.matcher)
38
+ }
39
+
40
+ this[kLast] = list.pop()
41
+
42
+ for (let i = 0; i < list.length; i++) {
43
+ try {
44
+ push(this, this.mapper(list[i]))
45
+ } catch (error) {
46
+ return cb(error)
47
+ }
48
+ }
49
+
50
+ this.overflow = this[kLast].length > this.maxLength
51
+ if (this.overflow && !this.skipOverflow) {
52
+ cb(new Error('maximum buffer reached'))
53
+ return
54
+ }
55
+
56
+ cb()
57
+ }
58
+
59
+ function flush (cb) {
60
+ // forward any gibberish left in there
61
+ this[kLast] += this[kDecoder].end()
62
+
63
+ if (this[kLast]) {
64
+ try {
65
+ push(this, this.mapper(this[kLast]))
66
+ } catch (error) {
67
+ return cb(error)
68
+ }
69
+ }
70
+
71
+ cb()
72
+ }
73
+
74
+ function push (self, val) {
75
+ if (val !== undefined) {
76
+ self.push(val)
77
+ }
78
+ }
79
+
80
+ function noop (incoming) {
81
+ return incoming
82
+ }
83
+
84
+ function split (matcher, mapper, options) {
85
+ // Set defaults for any arguments not supplied.
86
+ matcher = matcher || /\r?\n/
87
+ mapper = mapper || noop
88
+ options = options || {}
89
+
90
+ // Test arguments explicitly.
91
+ switch (arguments.length) {
92
+ case 1:
93
+ // If mapper is only argument.
94
+ if (typeof matcher === 'function') {
95
+ mapper = matcher
96
+ matcher = /\r?\n/
97
+ // If options is only argument.
98
+ } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) {
99
+ options = matcher
100
+ matcher = /\r?\n/
101
+ }
102
+ break
103
+
104
+ case 2:
105
+ // If mapper and options are arguments.
106
+ if (typeof matcher === 'function') {
107
+ options = mapper
108
+ mapper = matcher
109
+ matcher = /\r?\n/
110
+ // If matcher and options are arguments.
111
+ } else if (typeof mapper === 'object') {
112
+ options = mapper
113
+ mapper = noop
114
+ }
115
+ }
116
+
117
+ options = Object.assign({}, options)
118
+ options.autoDestroy = true
119
+ options.transform = transform
120
+ options.flush = flush
121
+ options.readableObjectMode = true
122
+
123
+ const stream = new Transform(options)
124
+
125
+ stream[kLast] = ''
126
+ stream[kDecoder] = new StringDecoder('utf8')
127
+ stream.matcher = matcher
128
+ stream.mapper = mapper
129
+ stream.maxLength = options.maxLength
130
+ stream.skipOverflow = options.skipOverflow || false
131
+ stream.overflow = false
132
+ stream._destroy = function (err, cb) {
133
+ // Weird Node v12 bug that we need to work around
134
+ this._writableState.errorEmitted = false
135
+ cb(err)
136
+ }
137
+
138
+ return stream
139
+ }
140
+
141
+ module.exports = split
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "split2",
3
+ "version": "4.2.0",
4
+ "description": "split a Text Stream into a Line Stream, using Stream 3",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "lint": "standard --verbose",
8
+ "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test.js",
9
+ "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js",
10
+ "test:report": "npm run lint && npm run unit:report",
11
+ "test": "npm run lint && npm run unit",
12
+ "legacy": "tape test.js"
13
+ },
14
+ "pre-commit": [
15
+ "test"
16
+ ],
17
+ "website": "https://github.com/mcollina/split2",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/mcollina/split2.git"
21
+ },
22
+ "bugs": {
23
+ "url": "http://github.com/mcollina/split2/issues"
24
+ },
25
+ "engines": {
26
+ "node": ">= 10.x"
27
+ },
28
+ "author": "Matteo Collina <hello@matteocollina.com>",
29
+ "license": "ISC",
30
+ "devDependencies": {
31
+ "binary-split": "^1.0.3",
32
+ "callback-stream": "^1.1.0",
33
+ "fastbench": "^1.0.0",
34
+ "nyc": "^15.0.1",
35
+ "pre-commit": "^1.1.2",
36
+ "standard": "^17.0.0",
37
+ "tape": "^5.0.0"
38
+ }
39
+ }