@resultsafe/core-fp-result 0.1.0

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 (389) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +273 -0
  3. package/README.ru.md +266 -0
  4. package/dist/LICENSE +21 -0
  5. package/dist/README.md +273 -0
  6. package/dist/cjs/constructors/Err.js +4 -0
  7. package/dist/cjs/constructors/Err.js.map +1 -0
  8. package/dist/cjs/constructors/Ok.js +4 -0
  9. package/dist/cjs/constructors/Ok.js.map +1 -0
  10. package/dist/cjs/guards/isErr.js +4 -0
  11. package/dist/cjs/guards/isErr.js.map +1 -0
  12. package/dist/cjs/guards/isErrAnd.js +5 -0
  13. package/dist/cjs/guards/isErrAnd.js.map +1 -0
  14. package/dist/cjs/guards/isOk.js +4 -0
  15. package/dist/cjs/guards/isOk.js.map +1 -0
  16. package/dist/cjs/guards/isOkAnd.js +5 -0
  17. package/dist/cjs/guards/isOkAnd.js.map +1 -0
  18. package/dist/cjs/index.js +70 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/internal/object.js +6 -0
  21. package/dist/cjs/internal/object.js.map +1 -0
  22. package/dist/cjs/internal/option.js +6 -0
  23. package/dist/cjs/internal/option.js.map +1 -0
  24. package/dist/cjs/methods/andThen.js +5 -0
  25. package/dist/cjs/methods/andThen.js.map +1 -0
  26. package/dist/cjs/methods/err.js +6 -0
  27. package/dist/cjs/methods/err.js.map +1 -0
  28. package/dist/cjs/methods/expect.js +10 -0
  29. package/dist/cjs/methods/expect.js.map +1 -0
  30. package/dist/cjs/methods/expectErr.js +10 -0
  31. package/dist/cjs/methods/expectErr.js.map +1 -0
  32. package/dist/cjs/methods/flatten.js +4 -0
  33. package/dist/cjs/methods/flatten.js.map +1 -0
  34. package/dist/cjs/methods/inspect.js +10 -0
  35. package/dist/cjs/methods/inspect.js.map +1 -0
  36. package/dist/cjs/methods/inspectErr.js +10 -0
  37. package/dist/cjs/methods/inspectErr.js.map +1 -0
  38. package/dist/cjs/methods/map.js +5 -0
  39. package/dist/cjs/methods/map.js.map +1 -0
  40. package/dist/cjs/methods/mapErr.js +5 -0
  41. package/dist/cjs/methods/mapErr.js.map +1 -0
  42. package/dist/cjs/methods/match.js +11 -0
  43. package/dist/cjs/methods/match.js.map +1 -0
  44. package/dist/cjs/methods/ok.js +6 -0
  45. package/dist/cjs/methods/ok.js.map +1 -0
  46. package/dist/cjs/methods/orElse.js +5 -0
  47. package/dist/cjs/methods/orElse.js.map +1 -0
  48. package/dist/cjs/methods/tap.js +9 -0
  49. package/dist/cjs/methods/tap.js.map +1 -0
  50. package/dist/cjs/methods/tapErr.js +10 -0
  51. package/dist/cjs/methods/tapErr.js.map +1 -0
  52. package/dist/cjs/methods/transpose.js +10 -0
  53. package/dist/cjs/methods/transpose.js.map +1 -0
  54. package/dist/cjs/methods/unwrap.js +10 -0
  55. package/dist/cjs/methods/unwrap.js.map +1 -0
  56. package/dist/cjs/methods/unwrapErr.js +10 -0
  57. package/dist/cjs/methods/unwrapErr.js.map +1 -0
  58. package/dist/cjs/methods/unwrapOr.js +5 -0
  59. package/dist/cjs/methods/unwrapOr.js.map +1 -0
  60. package/dist/cjs/methods/unwrapOrElse.js +10 -0
  61. package/dist/cjs/methods/unwrapOrElse.js.map +1 -0
  62. package/dist/cjs/package.json +3 -0
  63. package/dist/cjs/refiners/isTypedVariant.js +9 -0
  64. package/dist/cjs/refiners/isTypedVariant.js.map +1 -0
  65. package/dist/cjs/refiners/isTypedVariantOf.js +14 -0
  66. package/dist/cjs/refiners/isTypedVariantOf.js.map +1 -0
  67. package/dist/cjs/refiners/matchVariant.js +57 -0
  68. package/dist/cjs/refiners/matchVariant.js.map +1 -0
  69. package/dist/cjs/refiners/matchVariantStrict.js +37 -0
  70. package/dist/cjs/refiners/matchVariantStrict.js.map +1 -0
  71. package/dist/cjs/refiners/refineAsyncResult.js +26 -0
  72. package/dist/cjs/refiners/refineAsyncResult.js.map +1 -0
  73. package/dist/cjs/refiners/refineAsyncResultU.js +28 -0
  74. package/dist/cjs/refiners/refineAsyncResultU.js.map +1 -0
  75. package/dist/cjs/refiners/refineResult.js +21 -0
  76. package/dist/cjs/refiners/refineResult.js.map +1 -0
  77. package/dist/cjs/refiners/refineResultU.js +5 -0
  78. package/dist/cjs/refiners/refineResultU.js.map +1 -0
  79. package/dist/cjs/refiners/refineVariantMap.js +25 -0
  80. package/dist/cjs/refiners/refineVariantMap.js.map +1 -0
  81. package/dist/cjs/refiners/utils/getPayloadKeys.js +8 -0
  82. package/dist/cjs/refiners/utils/getPayloadKeys.js.map +1 -0
  83. package/dist/docs/api/README.md +9 -0
  84. package/dist/docs/api/constructors/Err.md +58 -0
  85. package/dist/docs/api/constructors/Ok.md +58 -0
  86. package/dist/docs/api/constructors/index.md +7 -0
  87. package/dist/docs/api/guards/index.md +9 -0
  88. package/dist/docs/api/guards/isErr.md +58 -0
  89. package/dist/docs/api/guards/isErrAnd.md +64 -0
  90. package/dist/docs/api/guards/isOk.md +58 -0
  91. package/dist/docs/api/guards/isOkAnd.md +64 -0
  92. package/dist/docs/api/index.md +9 -0
  93. package/dist/docs/api/methods/andThen.md +73 -0
  94. package/dist/docs/api/methods/err.md +58 -0
  95. package/dist/docs/api/methods/expect.md +68 -0
  96. package/dist/docs/api/methods/expectErr.md +68 -0
  97. package/dist/docs/api/methods/flatten.md +58 -0
  98. package/dist/docs/api/methods/index.md +24 -0
  99. package/dist/docs/api/methods/inspect.md +64 -0
  100. package/dist/docs/api/methods/inspectErr.md +64 -0
  101. package/dist/docs/api/methods/map.md +70 -0
  102. package/dist/docs/api/methods/mapErr.md +70 -0
  103. package/dist/docs/api/methods/match.md +76 -0
  104. package/dist/docs/api/methods/ok.md +58 -0
  105. package/dist/docs/api/methods/orElse.md +70 -0
  106. package/dist/docs/api/methods/tap.md +64 -0
  107. package/dist/docs/api/methods/tapErr.md +64 -0
  108. package/dist/docs/api/methods/transpose.md +58 -0
  109. package/dist/docs/api/methods/unwrap.md +62 -0
  110. package/dist/docs/api/methods/unwrapErr.md +62 -0
  111. package/dist/docs/api/methods/unwrapOr.md +64 -0
  112. package/dist/docs/api/methods/unwrapOrElse.md +64 -0
  113. package/dist/docs/api/modules.md +10 -0
  114. package/dist/docs/api/refiners/index.md +14 -0
  115. package/dist/docs/api/refiners/isTypedVariant.md +62 -0
  116. package/dist/docs/api/refiners/isTypedVariantOf.md +68 -0
  117. package/dist/docs/api/refiners/matchVariant.md +59 -0
  118. package/dist/docs/api/refiners/matchVariantStrict.md +63 -0
  119. package/dist/docs/api/refiners/refineAsyncResult.md +98 -0
  120. package/dist/docs/api/refiners/refineAsyncResultU.md +86 -0
  121. package/dist/docs/api/refiners/refineResult.md +98 -0
  122. package/dist/docs/api/refiners/refineResultU.md +86 -0
  123. package/dist/docs/api/refiners/refineVariantMap.md +79 -0
  124. package/dist/docs/api/type-aliases/Handler.md +49 -0
  125. package/dist/docs/api/type-aliases/MatchBuilder.md +57 -0
  126. package/dist/docs/api/type-aliases/Matcher.md +71 -0
  127. package/dist/docs/api/type-aliases/SyncRefinedResult.md +31 -0
  128. package/dist/docs/api/type-aliases/SyncRefinedResultUnion.md +21 -0
  129. package/dist/docs/api/type-aliases/SyncValidatorMap.md +17 -0
  130. package/dist/docs/api/type-aliases/UniversalAsyncRefinedResult.md +31 -0
  131. package/dist/docs/api/type-aliases/UniversalRefinedResult.md +31 -0
  132. package/dist/docs/api/type-aliases/VariantOf.md +23 -0
  133. package/dist/docs/api/type-aliases/index.md +14 -0
  134. package/dist/esm/constructors/Err.js +7 -0
  135. package/dist/esm/constructors/Err.js.map +1 -0
  136. package/dist/esm/constructors/Ok.js +7 -0
  137. package/dist/esm/constructors/Ok.js.map +1 -0
  138. package/dist/esm/guards/isErr.js +7 -0
  139. package/dist/esm/guards/isErr.js.map +1 -0
  140. package/dist/esm/guards/isErrAnd.js +8 -0
  141. package/dist/esm/guards/isErrAnd.js.map +1 -0
  142. package/dist/esm/guards/isOk.js +7 -0
  143. package/dist/esm/guards/isOk.js.map +1 -0
  144. package/dist/esm/guards/isOkAnd.js +8 -0
  145. package/dist/esm/guards/isOkAnd.js.map +1 -0
  146. package/dist/esm/index.js +71 -0
  147. package/dist/esm/index.js.map +1 -0
  148. package/dist/esm/internal/object.js +9 -0
  149. package/dist/esm/internal/object.js.map +1 -0
  150. package/dist/esm/internal/option.js +9 -0
  151. package/dist/esm/internal/option.js.map +1 -0
  152. package/dist/esm/methods/andThen.js +8 -0
  153. package/dist/esm/methods/andThen.js.map +1 -0
  154. package/dist/esm/methods/err.js +9 -0
  155. package/dist/esm/methods/err.js.map +1 -0
  156. package/dist/esm/methods/expect.js +13 -0
  157. package/dist/esm/methods/expect.js.map +1 -0
  158. package/dist/esm/methods/expectErr.js +13 -0
  159. package/dist/esm/methods/expectErr.js.map +1 -0
  160. package/dist/esm/methods/flatten.js +7 -0
  161. package/dist/esm/methods/flatten.js.map +1 -0
  162. package/dist/esm/methods/inspect.js +13 -0
  163. package/dist/esm/methods/inspect.js.map +1 -0
  164. package/dist/esm/methods/inspectErr.js +13 -0
  165. package/dist/esm/methods/inspectErr.js.map +1 -0
  166. package/dist/esm/methods/map.js +8 -0
  167. package/dist/esm/methods/map.js.map +1 -0
  168. package/dist/esm/methods/mapErr.js +8 -0
  169. package/dist/esm/methods/mapErr.js.map +1 -0
  170. package/dist/esm/methods/match.js +14 -0
  171. package/dist/esm/methods/match.js.map +1 -0
  172. package/dist/esm/methods/ok.js +9 -0
  173. package/dist/esm/methods/ok.js.map +1 -0
  174. package/dist/esm/methods/orElse.js +8 -0
  175. package/dist/esm/methods/orElse.js.map +1 -0
  176. package/dist/esm/methods/tap.js +12 -0
  177. package/dist/esm/methods/tap.js.map +1 -0
  178. package/dist/esm/methods/tapErr.js +13 -0
  179. package/dist/esm/methods/tapErr.js.map +1 -0
  180. package/dist/esm/methods/transpose.js +13 -0
  181. package/dist/esm/methods/transpose.js.map +1 -0
  182. package/dist/esm/methods/unwrap.js +13 -0
  183. package/dist/esm/methods/unwrap.js.map +1 -0
  184. package/dist/esm/methods/unwrapErr.js +13 -0
  185. package/dist/esm/methods/unwrapErr.js.map +1 -0
  186. package/dist/esm/methods/unwrapOr.js +8 -0
  187. package/dist/esm/methods/unwrapOr.js.map +1 -0
  188. package/dist/esm/methods/unwrapOrElse.js +13 -0
  189. package/dist/esm/methods/unwrapOrElse.js.map +1 -0
  190. package/dist/esm/refiners/isTypedVariant.js +12 -0
  191. package/dist/esm/refiners/isTypedVariant.js.map +1 -0
  192. package/dist/esm/refiners/isTypedVariantOf.js +17 -0
  193. package/dist/esm/refiners/isTypedVariantOf.js.map +1 -0
  194. package/dist/esm/refiners/matchVariant.js +60 -0
  195. package/dist/esm/refiners/matchVariant.js.map +1 -0
  196. package/dist/esm/refiners/matchVariantStrict.js +40 -0
  197. package/dist/esm/refiners/matchVariantStrict.js.map +1 -0
  198. package/dist/esm/refiners/refineAsyncResult.js +29 -0
  199. package/dist/esm/refiners/refineAsyncResult.js.map +1 -0
  200. package/dist/esm/refiners/refineAsyncResultU.js +31 -0
  201. package/dist/esm/refiners/refineAsyncResultU.js.map +1 -0
  202. package/dist/esm/refiners/refineResult.js +24 -0
  203. package/dist/esm/refiners/refineResult.js.map +1 -0
  204. package/dist/esm/refiners/refineResultU.js +8 -0
  205. package/dist/esm/refiners/refineResultU.js.map +1 -0
  206. package/dist/esm/refiners/refineVariantMap.js +29 -0
  207. package/dist/esm/refiners/refineVariantMap.js.map +1 -0
  208. package/dist/esm/refiners/utils/getPayloadKeys.js +11 -0
  209. package/dist/esm/refiners/utils/getPayloadKeys.js.map +1 -0
  210. package/dist/package.json +36 -0
  211. package/dist/types/constructors/Err.d.ts +21 -0
  212. package/dist/types/constructors/Err.d.ts.map +1 -0
  213. package/dist/types/constructors/Ok.d.ts +21 -0
  214. package/dist/types/constructors/Ok.d.ts.map +1 -0
  215. package/dist/types/constructors/index.d.ts +3 -0
  216. package/dist/types/constructors/index.d.ts.map +1 -0
  217. package/dist/types/guards/index.d.ts +5 -0
  218. package/dist/types/guards/index.d.ts.map +1 -0
  219. package/dist/types/guards/isErr.d.ts +24 -0
  220. package/dist/types/guards/isErr.d.ts.map +1 -0
  221. package/dist/types/guards/isErrAnd.d.ts +22 -0
  222. package/dist/types/guards/isErrAnd.d.ts.map +1 -0
  223. package/dist/types/guards/isOk.d.ts +24 -0
  224. package/dist/types/guards/isOk.d.ts.map +1 -0
  225. package/dist/types/guards/isOkAnd.d.ts +22 -0
  226. package/dist/types/guards/isOkAnd.d.ts.map +1 -0
  227. package/dist/types/index.d.ts +5 -0
  228. package/dist/types/index.d.ts.map +1 -0
  229. package/dist/types/internal/object.d.ts +5 -0
  230. package/dist/types/internal/object.d.ts.map +1 -0
  231. package/dist/types/internal/option.d.ts +10 -0
  232. package/dist/types/internal/option.d.ts.map +1 -0
  233. package/dist/types/methods/andThen.d.ts +26 -0
  234. package/dist/types/methods/andThen.d.ts.map +1 -0
  235. package/dist/types/methods/err.d.ts +22 -0
  236. package/dist/types/methods/err.d.ts.map +1 -0
  237. package/dist/types/methods/expect.d.ts +23 -0
  238. package/dist/types/methods/expect.d.ts.map +1 -0
  239. package/dist/types/methods/expectErr.d.ts +23 -0
  240. package/dist/types/methods/expectErr.d.ts.map +1 -0
  241. package/dist/types/methods/flatten.d.ts +21 -0
  242. package/dist/types/methods/flatten.d.ts.map +1 -0
  243. package/dist/types/methods/index.d.ts +20 -0
  244. package/dist/types/methods/index.d.ts.map +1 -0
  245. package/dist/types/methods/inspect.d.ts +22 -0
  246. package/dist/types/methods/inspect.d.ts.map +1 -0
  247. package/dist/types/methods/inspectErr.d.ts +22 -0
  248. package/dist/types/methods/inspectErr.d.ts.map +1 -0
  249. package/dist/types/methods/map.d.ts +23 -0
  250. package/dist/types/methods/map.d.ts.map +1 -0
  251. package/dist/types/methods/mapErr.d.ts +23 -0
  252. package/dist/types/methods/mapErr.d.ts.map +1 -0
  253. package/dist/types/methods/match.d.ts +24 -0
  254. package/dist/types/methods/match.d.ts.map +1 -0
  255. package/dist/types/methods/ok.d.ts +22 -0
  256. package/dist/types/methods/ok.d.ts.map +1 -0
  257. package/dist/types/methods/orElse.d.ts +23 -0
  258. package/dist/types/methods/orElse.d.ts.map +1 -0
  259. package/dist/types/methods/tap.d.ts +22 -0
  260. package/dist/types/methods/tap.d.ts.map +1 -0
  261. package/dist/types/methods/tapErr.d.ts +22 -0
  262. package/dist/types/methods/tapErr.d.ts.map +1 -0
  263. package/dist/types/methods/transpose.d.ts +22 -0
  264. package/dist/types/methods/transpose.d.ts.map +1 -0
  265. package/dist/types/methods/unwrap.d.ts +22 -0
  266. package/dist/types/methods/unwrap.d.ts.map +1 -0
  267. package/dist/types/methods/unwrapErr.d.ts +22 -0
  268. package/dist/types/methods/unwrapErr.d.ts.map +1 -0
  269. package/dist/types/methods/unwrapOr.d.ts +22 -0
  270. package/dist/types/methods/unwrapOr.d.ts.map +1 -0
  271. package/dist/types/methods/unwrapOrElse.d.ts +22 -0
  272. package/dist/types/methods/unwrapOrElse.d.ts.map +1 -0
  273. package/dist/types/refiners/index.d.ts +11 -0
  274. package/dist/types/refiners/index.d.ts.map +1 -0
  275. package/dist/types/refiners/isTypedVariant.d.ts +21 -0
  276. package/dist/types/refiners/isTypedVariant.d.ts.map +1 -0
  277. package/dist/types/refiners/isTypedVariantOf.d.ts +22 -0
  278. package/dist/types/refiners/isTypedVariantOf.d.ts.map +1 -0
  279. package/dist/types/refiners/matchVariant.d.ts +27 -0
  280. package/dist/types/refiners/matchVariant.d.ts.map +1 -0
  281. package/dist/types/refiners/matchVariantStrict.d.ts +28 -0
  282. package/dist/types/refiners/matchVariantStrict.d.ts.map +1 -0
  283. package/dist/types/refiners/refineAsyncResult.d.ts +54 -0
  284. package/dist/types/refiners/refineAsyncResult.d.ts.map +1 -0
  285. package/dist/types/refiners/refineAsyncResultU.d.ts +30 -0
  286. package/dist/types/refiners/refineAsyncResultU.d.ts.map +1 -0
  287. package/dist/types/refiners/refineResult.d.ts +54 -0
  288. package/dist/types/refiners/refineResult.d.ts.map +1 -0
  289. package/dist/types/refiners/refineResultU.d.ts +30 -0
  290. package/dist/types/refiners/refineResultU.d.ts.map +1 -0
  291. package/dist/types/refiners/refineVariantMap.d.ts +34 -0
  292. package/dist/types/refiners/refineVariantMap.d.ts.map +1 -0
  293. package/dist/types/refiners/types/Handler.d.ts +9 -0
  294. package/dist/types/refiners/types/Handler.d.ts.map +1 -0
  295. package/dist/types/refiners/types/MatchBuilder.d.ts +9 -0
  296. package/dist/types/refiners/types/MatchBuilder.d.ts.map +1 -0
  297. package/dist/types/refiners/types/Matcher.d.ts +11 -0
  298. package/dist/types/refiners/types/Matcher.d.ts.map +1 -0
  299. package/dist/types/refiners/types/SyncRefinedResult.d.ts +6 -0
  300. package/dist/types/refiners/types/SyncRefinedResult.d.ts.map +1 -0
  301. package/dist/types/refiners/types/SyncRefinedResultUnion.d.ts +8 -0
  302. package/dist/types/refiners/types/SyncRefinedResultUnion.d.ts.map +1 -0
  303. package/dist/types/refiners/types/SyncValidatorMap.d.ts +6 -0
  304. package/dist/types/refiners/types/SyncValidatorMap.d.ts.map +1 -0
  305. package/dist/types/refiners/types/UniversalAsyncRefinedResult.d.ts +6 -0
  306. package/dist/types/refiners/types/UniversalAsyncRefinedResult.d.ts.map +1 -0
  307. package/dist/types/refiners/types/UniversalRefinedResult.d.ts +6 -0
  308. package/dist/types/refiners/types/UniversalRefinedResult.d.ts.map +1 -0
  309. package/dist/types/refiners/types/VariantOf.d.ts +5 -0
  310. package/dist/types/refiners/types/VariantOf.d.ts.map +1 -0
  311. package/dist/types/refiners/types/index.d.ts +10 -0
  312. package/dist/types/refiners/types/index.d.ts.map +1 -0
  313. package/dist/types/refiners/utils/getPayloadKeys.d.ts +19 -0
  314. package/dist/types/refiners/utils/getPayloadKeys.d.ts.map +1 -0
  315. package/dist/types/refiners/utils/index.d.ts +2 -0
  316. package/dist/types/refiners/utils/index.d.ts.map +1 -0
  317. package/dist/types/shared-types.d.ts +22 -0
  318. package/dist/types/shared-types.d.ts.map +1 -0
  319. package/dist/umd/resultsafe-monorepo-core-fp-result.umd.js +2 -0
  320. package/dist/umd/resultsafe-monorepo-core-fp-result.umd.js.map +1 -0
  321. package/docs/_category_.json +6 -0
  322. package/docs/api/README.md +9 -0
  323. package/docs/api/constructors/Err.md +58 -0
  324. package/docs/api/constructors/Ok.md +58 -0
  325. package/docs/api/constructors/index.md +7 -0
  326. package/docs/api/guards/index.md +9 -0
  327. package/docs/api/guards/isErr.md +58 -0
  328. package/docs/api/guards/isErrAnd.md +64 -0
  329. package/docs/api/guards/isOk.md +58 -0
  330. package/docs/api/guards/isOkAnd.md +64 -0
  331. package/docs/api/index.md +9 -0
  332. package/docs/api/methods/andThen.md +73 -0
  333. package/docs/api/methods/err.md +58 -0
  334. package/docs/api/methods/expect.md +68 -0
  335. package/docs/api/methods/expectErr.md +68 -0
  336. package/docs/api/methods/flatten.md +58 -0
  337. package/docs/api/methods/index.md +24 -0
  338. package/docs/api/methods/inspect.md +64 -0
  339. package/docs/api/methods/inspectErr.md +64 -0
  340. package/docs/api/methods/map.md +70 -0
  341. package/docs/api/methods/mapErr.md +70 -0
  342. package/docs/api/methods/match.md +76 -0
  343. package/docs/api/methods/ok.md +58 -0
  344. package/docs/api/methods/orElse.md +70 -0
  345. package/docs/api/methods/tap.md +64 -0
  346. package/docs/api/methods/tapErr.md +64 -0
  347. package/docs/api/methods/transpose.md +58 -0
  348. package/docs/api/methods/unwrap.md +62 -0
  349. package/docs/api/methods/unwrapErr.md +62 -0
  350. package/docs/api/methods/unwrapOr.md +64 -0
  351. package/docs/api/methods/unwrapOrElse.md +64 -0
  352. package/docs/api/modules.md +10 -0
  353. package/docs/api/refiners/index.md +14 -0
  354. package/docs/api/refiners/isTypedVariant.md +62 -0
  355. package/docs/api/refiners/isTypedVariantOf.md +68 -0
  356. package/docs/api/refiners/matchVariant.md +59 -0
  357. package/docs/api/refiners/matchVariantStrict.md +63 -0
  358. package/docs/api/refiners/refineAsyncResult.md +98 -0
  359. package/docs/api/refiners/refineAsyncResultU.md +86 -0
  360. package/docs/api/refiners/refineResult.md +98 -0
  361. package/docs/api/refiners/refineResultU.md +86 -0
  362. package/docs/api/refiners/refineVariantMap.md +79 -0
  363. package/docs/api/type-aliases/Handler.md +49 -0
  364. package/docs/api/type-aliases/MatchBuilder.md +57 -0
  365. package/docs/api/type-aliases/Matcher.md +71 -0
  366. package/docs/api/type-aliases/SyncRefinedResult.md +31 -0
  367. package/docs/api/type-aliases/SyncRefinedResultUnion.md +21 -0
  368. package/docs/api/type-aliases/SyncValidatorMap.md +17 -0
  369. package/docs/api/type-aliases/UniversalAsyncRefinedResult.md +31 -0
  370. package/docs/api/type-aliases/UniversalRefinedResult.md +31 -0
  371. package/docs/api/type-aliases/VariantOf.md +23 -0
  372. package/docs/api/type-aliases/index.md +14 -0
  373. package/docs/assets/logo.svg +153 -0
  374. package/docs/examples/_category_.json +4 -0
  375. package/docs/examples/auth/_category_.json +4 -0
  376. package/docs/examples/auth/index.md +3 -0
  377. package/docs/examples/auth/token.md +5 -0
  378. package/docs/examples/connection/_category_.json +4 -0
  379. package/docs/examples/connection/connect.md +5 -0
  380. package/docs/examples/connection/index.md +3 -0
  381. package/docs/examples/connection/reconnect.md +5 -0
  382. package/docs/examples/errors/_category_.json +4 -0
  383. package/docs/examples/errors/index.md +3 -0
  384. package/docs/examples/errors/retry.md +5 -0
  385. package/docs/examples/index.md +9 -0
  386. package/docs/examples/streaming/_category_.json +4 -0
  387. package/docs/examples/streaming/index.md +3 -0
  388. package/docs/examples/streaming/text.md +5 -0
  389. package/package.json +70 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 resultsafe contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,273 @@
1
+ # @resultsafe/core-fp-result
2
+ <a id="top"></a>
3
+
4
+ ![ResultSafe Logo](https://raw.githubusercontent.com/resultsafe/monorepo/main/packages/core/fp/result/docs/assets/logo.svg)
5
+
6
+ [![npm version](https://img.shields.io/npm/v/@resultsafe/core-fp-result.svg)](https://www.npmjs.com/package/@resultsafe/core-fp-result)
7
+ [![npm downloads](https://img.shields.io/npm/dm/@resultsafe/core-fp-result.svg)](https://www.npmjs.com/package/@resultsafe/core-fp-result)
8
+ [![license](https://img.shields.io/npm/l/@resultsafe/core-fp-result.svg)](./LICENSE)
9
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6.svg)](https://www.typescriptlang.org/)
10
+ [![docs](https://img.shields.io/badge/docs-api-informational.svg)](./docs/api/README.md)
11
+ [![build status](https://img.shields.io/badge/build-local%20verified-success.svg)](./package.json)
12
+ [![monorepo](https://img.shields.io/badge/monorepo-resultsafe%2Fmonorepo-0A0A0A.svg)](https://github.com/resultsafe/monorepo)
13
+
14
+ A Rust-inspired Result package for explicit, composable, and type-friendly APIs in TypeScript and JavaScript.
15
+
16
+ **Language:** English | [Русский](./README.ru.md)
17
+
18
+ **Documentation:** [API index](./docs/api/README.md) · [Modules](./docs/api/modules.md)
19
+
20
+ ---
21
+ ## Contents
22
+
23
+ - [Why this package](#why-this-package)
24
+ - [Monorepo context](#monorepo-context)
25
+ - [Key features](#key-features)
26
+ - [Package](#package)
27
+ - [Installation](#installation)
28
+ - [Quick start](#quick-start)
29
+ - [Core API overview](#core-api-overview)
30
+ - [Build and distribution formats](#build-and-distribution-formats)
31
+ - [Monorepo and package structure](#monorepo-and-package-structure)
32
+ - [When to use this project](#when-to-use-this-project)
33
+ - [Documentation links](#documentation-links)
34
+ - [License](#license)
35
+
36
+ ---
37
+
38
+ ## Why this package
39
+
40
+ `@resultsafe/core-fp-result` provides explicit success/error flows instead of hidden control paths and exception-first branching.
41
+
42
+ Its core package, [`@resultsafe/core-fp-result`](https://www.npmjs.com/package/@resultsafe/core-fp-result), provides a Rust-inspired `Result` API for TypeScript and JavaScript with:
43
+
44
+ - explicit `Ok` / `Err`
45
+ - predictable functional composition
46
+ - safe branching through guards and matching
47
+ - disciplined extraction APIs
48
+ - advanced refinement utilities for typed variants and strict matching
49
+
50
+ The goal is not to imitate Rust mechanically, but to bring the same clarity of intent to Node.js libraries: explicit values, predictable branching, and APIs organized for long-term maintenance.
51
+
52
+ ---
53
+
54
+ ## Monorepo context
55
+
56
+ `@resultsafe/core-fp-result` is the TypeScript/JavaScript package inside the multilingual `resultsafe/monorepo`.
57
+
58
+ The monorepo applies shared Rust-inspired design concepts across language-specific packages. TypeScript/JavaScript is the current production package track, while Python is planned as a separate package track with the same conceptual model.
59
+
60
+ ---
61
+
62
+ ## Key features
63
+
64
+ - Rust-inspired `Result` model for TypeScript and JavaScript.
65
+ - Explicit constructors via `Ok` and `Err`.
66
+ - Composable transformations with APIs such as `map`, `mapErr`, `andThen`, and `orElse`.
67
+ - Safe branching through guards like `isOk`, `isErr`, `isOkAnd`, `isErrAnd`, and matching helpers.
68
+ - Controlled extraction with `unwrap`, `unwrapOr`, `unwrapErr`, `expect`, and `expectErr`.
69
+ - Advanced refinement layer for typed variants, strict matching, and result narrowing.
70
+ - Coherent module structure instead of a flat utility dump.
71
+ - Type output for TypeScript users for better DX and safer integrations.
72
+ - Flexible distribution formats with Types, ESM, CJS, and UMD builds.
73
+
74
+ ---
75
+
76
+ ## Package
77
+
78
+ ### `@resultsafe/core-fp-result`
79
+
80
+ A focused Result library for explicit error handling and FP-style composition.
81
+
82
+ It is designed for developers who want:
83
+
84
+ - clear success/error modeling
85
+ - predictable transformations
86
+ - explicit branching and extraction
87
+ - better readability in error-heavy flows
88
+ - a structured Rust-inspired API surface in TypeScript/JavaScript
89
+
90
+ ---
91
+
92
+ ## Installation
93
+
94
+ ### Package
95
+
96
+ ```bash
97
+ pnpm add @resultsafe/core-fp-result
98
+
99
+ # Alternative
100
+ npm install @resultsafe/core-fp-result
101
+ ```
102
+
103
+ ### Monorepo
104
+
105
+ ```bash
106
+ pnpm install
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Quick start
112
+
113
+ A typical Result flow starts with explicit constructors and then composes through functions rather than implicit exception paths.
114
+
115
+ ```ts
116
+ import {
117
+ Ok,
118
+ map,
119
+ unwrapOr,
120
+ } from "@resultsafe/core-fp-result";
121
+
122
+ const initial = Ok(21);
123
+ const doubled = map(initial, (value) => value * 2);
124
+ const finalValue = unwrapOr(doubled, 0);
125
+
126
+ console.log(finalValue); // 42
127
+ ```
128
+
129
+ ### Basic `Ok` / `Err` example
130
+
131
+ ```ts
132
+ import { Ok, Err, match } from "@resultsafe/core-fp-result";
133
+
134
+ const parsePort = (input: string) => {
135
+ const port = Number(input);
136
+ return Number.isInteger(port) && port > 0
137
+ ? Ok(port)
138
+ : Err("Invalid port");
139
+ };
140
+
141
+ const result = parsePort("3000");
142
+ const message = match(result, (value) => `Port: ${value}`, (error) => `Error: ${error}`);
143
+
144
+ console.log(message);
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Core API overview
150
+
151
+ ### Constructors
152
+
153
+ - `Ok`
154
+ - `Err`
155
+
156
+ ### Guards
157
+
158
+ - `isOk`
159
+ - `isOkAnd`
160
+ - `isErr`
161
+ - `isErrAnd`
162
+
163
+ ### Methods
164
+
165
+ - `andThen`
166
+ - `err`
167
+ - `expect`
168
+ - `expectErr`
169
+ - `flatten`
170
+ - `inspect`
171
+ - `inspectErr`
172
+ - `map`
173
+ - `mapErr`
174
+ - `match`
175
+ - `ok`
176
+ - `orElse`
177
+ - `tap`
178
+ - `tapErr`
179
+ - `transpose`
180
+ - `unwrap`
181
+ - `unwrapErr`
182
+ - `unwrapOr`
183
+ - `unwrapOrElse`
184
+
185
+ ### Refiners
186
+
187
+ - `isTypedVariant`
188
+ - `isTypedVariantOf`
189
+ - `matchVariant`
190
+ - `matchVariantStrict`
191
+ - `refineAsyncResult`
192
+ - `refineAsyncResultU`
193
+ - `refineResult`
194
+ - `refineResultU`
195
+ - `refineVariantMap`
196
+
197
+ ### Type aliases
198
+
199
+ - `Handler`
200
+ - `MatchBuilder`
201
+ - `Matcher`
202
+ - `SyncRefinedResult`
203
+ - `SyncRefinedResultUnion`
204
+ - `SyncValidatorMap`
205
+ - `UniversalAsyncRefinedResult`
206
+ - `UniversalRefinedResult`
207
+ - `VariantOf`
208
+
209
+ ---
210
+
211
+ ## Build and distribution formats
212
+
213
+ - Types: `build:types`
214
+ - ESM: `build:esm`
215
+ - CJS: `build:cjs`
216
+ - UMD: `build:umd`
217
+
218
+ This package ships typed declarations and multiple runtime module formats for broad compatibility.
219
+
220
+ ---
221
+
222
+ ## Monorepo and package structure
223
+
224
+ ```txt
225
+ src/
226
+ constructors/
227
+ guards/
228
+ methods/
229
+ refiners/
230
+ types/
231
+ utils/
232
+ internal/
233
+ index.ts
234
+ ```
235
+
236
+ ---
237
+
238
+ ## When to use this project
239
+
240
+ Use this project when you want:
241
+
242
+ - explicit success/error modeling
243
+ - predictable FP-style composition
244
+ - visible control flow
245
+ - stronger type-guided result handling in TypeScript
246
+ - advanced refinement tools for typed variants and strict result matching
247
+
248
+ ---
249
+
250
+ ## Documentation links
251
+
252
+ - [API entry (README)](./docs/api/README.md)
253
+ - [API entry (index)](./docs/api/index.md)
254
+ - [Modules](./docs/api/modules.md)
255
+ - [Constructors module](./docs/api/constructors/index.md)
256
+ - [Guards module](./docs/api/guards/index.md)
257
+ - [Methods module](./docs/api/methods/index.md)
258
+ - [Refiners module](./docs/api/refiners/index.md)
259
+ - [Type aliases module](./docs/api/type-aliases/index.md)
260
+
261
+ ---
262
+ Back to top: [@resultsafe/core-fp-result](#top)
263
+
264
+ ---
265
+ ## Author
266
+
267
+ Denis Savasteev
268
+
269
+ ---
270
+
271
+ ## License
272
+
273
+ [MIT](./LICENSE)
package/README.ru.md ADDED
@@ -0,0 +1,266 @@
1
+ # @resultsafe/core-fp-result
2
+ <a id="top"></a>
3
+
4
+ [![npm version](https://img.shields.io/npm/v/@resultsafe/core-fp-result.svg)](https://www.npmjs.com/package/@resultsafe/core-fp-result)
5
+ [![npm downloads](https://img.shields.io/npm/dm/@resultsafe/core-fp-result.svg)](https://www.npmjs.com/package/@resultsafe/core-fp-result)
6
+ [![license](https://img.shields.io/npm/l/@resultsafe/core-fp-result.svg)](./LICENSE)
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6.svg)](https://www.typescriptlang.org/)
8
+ [![docs](https://img.shields.io/badge/docs-api-informational.svg)](./docs/api/README.md)
9
+ [![build status](https://img.shields.io/badge/build-local%20verified-success.svg)](./package.json)
10
+ [![monorepo](https://img.shields.io/badge/monorepo-resultsafe%2Fmonorepo-0A0A0A.svg)](https://github.com/resultsafe/monorepo)
11
+
12
+ Rust-inspired Result-пакет для явных, композиционных и типобезопасных API в TypeScript и JavaScript.
13
+
14
+ **Язык:** [English](./README.md) | Русский
15
+
16
+ **Документация:** [API index](./docs/api/README.md) · [Modules](./docs/api/modules.md)
17
+
18
+ ---
19
+ ## Содержание
20
+
21
+ - [Зачем нужен этот пакет](#зачем-нужен-этот-пакет)
22
+ - [Контекст monorepo](#контекст-monorepo)
23
+ - [Ключевые возможности](#ключевые-возможности)
24
+ - [Пакет](#пакет)
25
+ - [Установка](#установка)
26
+ - [Быстрый старт](#быстрый-старт)
27
+ - [Обзор основного API](#обзор-основного-api)
28
+ - [Форматы сборки и поставки](#форматы-сборки-и-поставки)
29
+ - [Структура monorepo и пакета](#структура-monorepo-и-пакета)
30
+ - [Когда использовать этот проект](#когда-использовать-этот-проект)
31
+ - [Ссылки на документацию](#ссылки-на-документацию)
32
+ - [License](#license)
33
+
34
+ ---
35
+
36
+ ## Зачем нужен этот пакет
37
+
38
+ `@resultsafe/core-fp-result` предоставляет явные success/error flow вместо скрытых путей управления и exception-first ветвления.
39
+
40
+ Его основной пакет, [`@resultsafe/core-fp-result`](https://www.npmjs.com/package/@resultsafe/core-fp-result), предоставляет Rust-inspired `Result` API для TypeScript и JavaScript со следующими свойствами:
41
+
42
+ - явные `Ok` / `Err`
43
+ - предсказуемая функциональная композиция
44
+ - безопасное ветвление через guards и matching
45
+ - дисциплинированные API извлечения значений
46
+ - продвинутые refinement utilities для typed variants и strict matching
47
+
48
+ Цель проекта не в механическом копировании Rust, а в переносе той же ясности намерений в Node.js-библиотеки: явные значения, предсказуемое ветвление и API, организованные для долгосрочного сопровождения.
49
+
50
+ ---
51
+
52
+ ## Контекст monorepo
53
+
54
+ `@resultsafe/core-fp-result` — это пакет TypeScript/JavaScript внутри мультиязычного `resultsafe/monorepo`.
55
+
56
+ Монорепозиторий переносит общие Rust-inspired концепции в отдельные language-specific пакеты. Текущий production-трек — TypeScript/JavaScript, а Python планируется как отдельный пакетный трек с той же концептуальной моделью.
57
+
58
+ ---
59
+
60
+ ## Ключевые возможности
61
+
62
+ - Rust-inspired модель `Result` для TypeScript и JavaScript.
63
+ - Явные конструкторы через `Ok` и `Err`.
64
+ - Композиционные трансформации через API, такие как `map`, `mapErr`, `andThen` и `orElse`.
65
+ - Безопасное ветвление через guards `isOk`, `isErr`, `isOkAnd`, `isErrAnd` и matching helpers.
66
+ - Контролируемое извлечение через `unwrap`, `unwrapOr`, `unwrapErr`, `expect` и `expectErr`.
67
+ - Продвинутый слой refiners для typed variants, strict matching и сужения результатов.
68
+ - Согласованная модульная структура вместо плоского набора утилит.
69
+ - Type output для TypeScript-пользователей для лучшего DX и более безопасных интеграций.
70
+ - Гибкие форматы поставки: Types, ESM, CJS и UMD.
71
+
72
+ ---
73
+
74
+ ## Пакет
75
+
76
+ ### `@resultsafe/core-fp-result`
77
+
78
+ Фокусированная Result-библиотека для явной обработки ошибок и FP-style композиции.
79
+
80
+ Она рассчитана на разработчиков, которым нужны:
81
+
82
+ - ясное моделирование успеха/ошибки
83
+ - предсказуемые трансформации
84
+ - явное ветвление и извлечение значений
85
+ - лучшая читаемость в error-heavy flow
86
+ - структурированная Rust-inspired API surface в TypeScript/JavaScript
87
+
88
+ ---
89
+
90
+ ## Установка
91
+
92
+ ### Пакет
93
+
94
+ ```bash
95
+ pnpm add @resultsafe/core-fp-result
96
+
97
+ # Альтернатива
98
+ npm install @resultsafe/core-fp-result
99
+ ```
100
+
101
+ ### Monorepo
102
+
103
+ ```bash
104
+ pnpm install
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Быстрый старт
110
+
111
+ Типичный Result flow начинается с явных конструкторов и затем компонуется через функции, а не через неявные пути исключений.
112
+
113
+ ```ts
114
+ import {
115
+ Ok,
116
+ map,
117
+ unwrapOr,
118
+ } from "@resultsafe/core-fp-result";
119
+
120
+ const initial = Ok(21);
121
+ const doubled = map(initial, (value) => value * 2);
122
+ const finalValue = unwrapOr(doubled, 0);
123
+
124
+ console.log(finalValue); // 42
125
+ ```
126
+
127
+ ### Базовый пример `Ok` / `Err`
128
+
129
+ ```ts
130
+ import { Ok, Err, match } from "@resultsafe/core-fp-result";
131
+
132
+ const parsePort = (input: string) => {
133
+ const port = Number(input);
134
+ return Number.isInteger(port) && port > 0
135
+ ? Ok(port)
136
+ : Err("Invalid port");
137
+ };
138
+
139
+ const result = parsePort("3000");
140
+ const message = match(result, (value) => `Port: ${value}`, (error) => `Error: ${error}`);
141
+
142
+ console.log(message);
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Обзор основного API
148
+
149
+ ### Constructors
150
+
151
+ - `Ok`
152
+ - `Err`
153
+
154
+ ### Guards
155
+
156
+ - `isOk`
157
+ - `isOkAnd`
158
+ - `isErr`
159
+ - `isErrAnd`
160
+
161
+ ### Methods
162
+
163
+ - `andThen`
164
+ - `err`
165
+ - `expect`
166
+ - `expectErr`
167
+ - `flatten`
168
+ - `inspect`
169
+ - `inspectErr`
170
+ - `map`
171
+ - `mapErr`
172
+ - `match`
173
+ - `ok`
174
+ - `orElse`
175
+ - `tap`
176
+ - `tapErr`
177
+ - `transpose`
178
+ - `unwrap`
179
+ - `unwrapErr`
180
+ - `unwrapOr`
181
+ - `unwrapOrElse`
182
+
183
+ ### Refiners
184
+
185
+ - `isTypedVariant`
186
+ - `isTypedVariantOf`
187
+ - `matchVariant`
188
+ - `matchVariantStrict`
189
+ - `refineAsyncResult`
190
+ - `refineAsyncResultU`
191
+ - `refineResult`
192
+ - `refineResultU`
193
+ - `refineVariantMap`
194
+
195
+ ### Type aliases
196
+
197
+ - `Handler`
198
+ - `MatchBuilder`
199
+ - `Matcher`
200
+ - `SyncRefinedResult`
201
+ - `SyncRefinedResultUnion`
202
+ - `SyncValidatorMap`
203
+ - `UniversalAsyncRefinedResult`
204
+ - `UniversalRefinedResult`
205
+ - `VariantOf`
206
+
207
+ ---
208
+
209
+ ## Форматы сборки и поставки
210
+
211
+ - Types: `build:types`
212
+ - ESM: `build:esm`
213
+ - CJS: `build:cjs`
214
+ - UMD: `build:umd`
215
+
216
+ Пакет публикует typed declarations и несколько runtime-форматов модулей для широкой совместимости.
217
+
218
+ ---
219
+
220
+ ## Структура monorepo и пакета
221
+
222
+ ```txt
223
+ src/
224
+ constructors/
225
+ guards/
226
+ methods/
227
+ refiners/
228
+ types/
229
+ utils/
230
+ internal/
231
+ index.ts
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Когда использовать этот проект
237
+
238
+ Используйте проект, если вам нужны:
239
+
240
+ - явное моделирование успеха/ошибки
241
+ - предсказуемая FP-style композиция
242
+ - видимый control flow
243
+ - более сильная type-guided обработка результатов в TypeScript
244
+ - продвинутые refinement tools для typed variants и строгого result matching
245
+
246
+ ---
247
+
248
+ ## Ссылки на документацию
249
+
250
+ - [API entry (README)](./docs/api/README.md)
251
+ - [API entry (index)](./docs/api/index.md)
252
+ - [Modules](./docs/api/modules.md)
253
+ - [Constructors module](./docs/api/constructors/index.md)
254
+ - [Guards module](./docs/api/guards/index.md)
255
+ - [Methods module](./docs/api/methods/index.md)
256
+ - [Refiners module](./docs/api/refiners/index.md)
257
+ - [Type aliases module](./docs/api/type-aliases/index.md)
258
+
259
+ ---
260
+ Наверх: [@resultsafe/core-fp-result](#top)
261
+
262
+ ---
263
+
264
+ ## License
265
+
266
+ [MIT](./LICENSE)
package/dist/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 resultsafe contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.