type-plus 4.8.2 → 4.10.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 (734) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +19 -18
  3. package/cjs/ComposableTypes.d.ts +1 -0
  4. package/cjs/ComposableTypes.d.ts.map +1 -0
  5. package/cjs/JSONTypes.d.ts +1 -0
  6. package/cjs/JSONTypes.d.ts.map +1 -0
  7. package/cjs/JSONTypes.js.map +1 -1
  8. package/cjs/PrimitiveTypes.d.ts +1 -0
  9. package/cjs/PrimitiveTypes.d.ts.map +1 -0
  10. package/cjs/UnionKeys.d.ts +1 -0
  11. package/cjs/UnionKeys.d.ts.map +1 -0
  12. package/cjs/array/CommonPropKeys.d.ts +2 -1
  13. package/cjs/array/CommonPropKeys.d.ts.map +1 -0
  14. package/cjs/array/Concat.d.ts +1 -0
  15. package/cjs/array/Concat.d.ts.map +1 -0
  16. package/cjs/array/CreateTuple.d.ts +2 -1
  17. package/cjs/array/CreateTuple.d.ts.map +1 -0
  18. package/cjs/array/Filter.d.ts +1 -0
  19. package/cjs/array/Filter.d.ts.map +1 -0
  20. package/cjs/array/FindFirst.d.ts +1 -0
  21. package/cjs/array/FindFirst.d.ts.map +1 -0
  22. package/cjs/array/FindLast.d.ts +1 -0
  23. package/cjs/array/FindLast.d.ts.map +1 -0
  24. package/cjs/array/Head.d.ts +1 -0
  25. package/cjs/array/Head.d.ts.map +1 -0
  26. package/cjs/array/IntersectOfProps.d.ts +3 -2
  27. package/cjs/array/IntersectOfProps.d.ts.map +1 -0
  28. package/cjs/array/IsArray.d.ts +1 -0
  29. package/cjs/array/IsArray.d.ts.map +1 -0
  30. package/cjs/array/Last.d.ts +1 -0
  31. package/cjs/array/Last.d.ts.map +1 -0
  32. package/cjs/array/PadLeft.d.ts +4 -3
  33. package/cjs/array/PadLeft.d.ts.map +1 -0
  34. package/cjs/array/Reverse.d.ts +1 -0
  35. package/cjs/array/Reverse.d.ts.map +1 -0
  36. package/cjs/array/Some.d.ts +4 -3
  37. package/cjs/array/Some.d.ts.map +1 -0
  38. package/cjs/array/Tail.d.ts +2 -1
  39. package/cjs/array/Tail.d.ts.map +1 -0
  40. package/cjs/array/UnionOfProps.d.ts +3 -2
  41. package/cjs/array/UnionOfProps.d.ts.map +1 -0
  42. package/cjs/array/UnionOfValues.d.ts +1 -0
  43. package/cjs/array/UnionOfValues.d.ts.map +1 -0
  44. package/cjs/array/drop.d.ts +3 -2
  45. package/cjs/array/drop.d.ts.map +1 -0
  46. package/cjs/array/drop.js.map +1 -1
  47. package/cjs/array/index.d.ts +20 -19
  48. package/cjs/array/index.d.ts.map +1 -0
  49. package/cjs/array/index.js +3 -3
  50. package/cjs/array/index.js.map +1 -1
  51. package/cjs/array/literalArray.d.ts +2 -1
  52. package/cjs/array/literalArray.d.ts.map +1 -0
  53. package/cjs/array/reduceWhile.d.ts +1 -0
  54. package/cjs/array/reduceWhile.d.ts.map +1 -0
  55. package/cjs/assertion/assertType.d.ts +3 -2
  56. package/cjs/assertion/assertType.d.ts.map +1 -0
  57. package/cjs/assertion/assertType.js +3 -3
  58. package/cjs/assertion/assertType.js.map +1 -1
  59. package/cjs/assertion/index.d.ts +2 -1
  60. package/cjs/assertion/index.d.ts.map +1 -0
  61. package/cjs/assertion/index.js +1 -1
  62. package/cjs/assertion/index.js.map +1 -1
  63. package/cjs/class/AnyConstructor.d.ts +1 -0
  64. package/cjs/class/AnyConstructor.d.ts.map +1 -0
  65. package/cjs/class/index.d.ts +3 -2
  66. package/cjs/class/index.d.ts.map +1 -0
  67. package/cjs/class/index.js +1 -1
  68. package/cjs/class/index.js.map +1 -1
  69. package/cjs/class/isConstructor.d.ts +2 -1
  70. package/cjs/class/isConstructor.d.ts.map +1 -0
  71. package/cjs/function/AnyFunction.d.ts +1 -0
  72. package/cjs/function/AnyFunction.d.ts.map +1 -0
  73. package/cjs/function/index.d.ts +2 -1
  74. package/cjs/function/index.d.ts.map +1 -0
  75. package/cjs/functional/ChainFn.d.ts +1 -0
  76. package/cjs/functional/ChainFn.d.ts.map +1 -0
  77. package/cjs/functional/compose.d.ts +3 -2
  78. package/cjs/functional/compose.d.ts.map +1 -0
  79. package/cjs/functional/compose.js.map +1 -1
  80. package/cjs/functional/index.d.ts +3 -2
  81. package/cjs/functional/index.d.ts.map +1 -0
  82. package/cjs/functional/index.js +1 -1
  83. package/cjs/functional/index.js.map +1 -1
  84. package/cjs/index.d.ts +18 -17
  85. package/cjs/index.d.ts.map +1 -0
  86. package/cjs/index.js +14 -14
  87. package/cjs/index.js.map +1 -1
  88. package/cjs/math/Abs.d.ts +2 -1
  89. package/cjs/math/Abs.d.ts.map +1 -0
  90. package/cjs/math/Add.d.ts +7 -6
  91. package/cjs/math/Add.d.ts.map +1 -0
  92. package/cjs/math/Digit.d.ts +7 -4
  93. package/cjs/math/Digit.d.ts.map +1 -0
  94. package/cjs/math/GreaterThan.d.ts +10 -9
  95. package/cjs/math/GreaterThan.d.ts.map +1 -0
  96. package/cjs/math/IsPositive.d.ts +1 -0
  97. package/cjs/math/IsPositive.d.ts.map +1 -0
  98. package/cjs/math/IsWhole.d.ts +1 -0
  99. package/cjs/math/IsWhole.d.ts.map +1 -0
  100. package/cjs/math/Max.d.ts +4 -10
  101. package/cjs/math/Max.d.ts.map +1 -0
  102. package/cjs/math/Subtract.d.ts +7 -6
  103. package/cjs/math/Subtract.d.ts.map +1 -0
  104. package/cjs/math/index.d.ts +9 -8
  105. package/cjs/math/index.d.ts.map +1 -0
  106. package/cjs/nodejs/index.d.ts +2 -1
  107. package/cjs/nodejs/index.d.ts.map +1 -0
  108. package/cjs/nodejs/index.js +1 -1
  109. package/cjs/nodejs/index.js.map +1 -1
  110. package/cjs/nodejs/isNodeError.d.ts +1 -0
  111. package/cjs/nodejs/isNodeError.d.ts.map +1 -0
  112. package/cjs/nominal-types/Brand.d.ts +3 -2
  113. package/cjs/nominal-types/Brand.d.ts.map +1 -0
  114. package/cjs/nominal-types/Brand.js +2 -2
  115. package/cjs/nominal-types/Brand.js.map +1 -1
  116. package/cjs/nominal-types/Flavor.d.ts +3 -2
  117. package/cjs/nominal-types/Flavor.d.ts.map +1 -0
  118. package/cjs/nominal-types/Flavor.js +2 -2
  119. package/cjs/nominal-types/Flavor.js.map +1 -1
  120. package/cjs/nominal-types/index.d.ts +4 -3
  121. package/cjs/nominal-types/index.d.ts.map +1 -0
  122. package/cjs/nominal-types/index.js +3 -3
  123. package/cjs/nominal-types/index.js.map +1 -1
  124. package/cjs/nominal-types/nominalMatch.d.ts +3 -2
  125. package/cjs/nominal-types/nominalMatch.d.ts.map +1 -0
  126. package/cjs/nominal-types/nominalMatch.js +2 -2
  127. package/cjs/nominal-types/nominalMatch.js.map +1 -1
  128. package/cjs/nominal-types/types.d.ts +1 -0
  129. package/cjs/nominal-types/types.d.ts.map +1 -0
  130. package/cjs/object/ANotB.d.ts +5 -4
  131. package/cjs/object/ANotB.d.ts.map +1 -0
  132. package/cjs/object/AnyRecord.d.ts +1 -0
  133. package/cjs/object/AnyRecord.d.ts.map +1 -0
  134. package/cjs/object/ExcludePropType.d.ts +1 -0
  135. package/cjs/object/ExcludePropType.d.ts.map +1 -0
  136. package/cjs/object/IsDisjoint.d.ts +4 -3
  137. package/cjs/object/IsDisjoint.d.ts.map +1 -0
  138. package/cjs/object/IsRecord.d.ts +1 -0
  139. package/cjs/object/IsRecord.d.ts.map +1 -0
  140. package/cjs/object/KeyTypes.d.ts +1 -0
  141. package/cjs/object/KeyTypes.d.ts.map +1 -0
  142. package/cjs/object/KeyofOptional.d.ts +1 -0
  143. package/cjs/object/KeyofOptional.d.ts.map +1 -0
  144. package/cjs/object/KeysWithDiffType.d.ts +4 -3
  145. package/cjs/object/KeysWithDiffType.d.ts.map +1 -0
  146. package/cjs/object/KnownKeys.d.ts +2 -1
  147. package/cjs/object/KnownKeys.d.ts.map +1 -0
  148. package/cjs/object/OptionalKeys.d.ts +2 -1
  149. package/cjs/object/OptionalKeys.d.ts.map +1 -0
  150. package/cjs/object/Partial.d.ts +4 -3
  151. package/cjs/object/Partial.d.ts.map +1 -0
  152. package/cjs/object/RecursiveIntersect.d.ts +2 -1
  153. package/cjs/object/RecursiveIntersect.d.ts.map +1 -0
  154. package/cjs/object/RecursivePartial.d.ts +2 -1
  155. package/cjs/object/RecursivePartial.d.ts.map +1 -0
  156. package/cjs/object/RecursiveRequired.d.ts +2 -1
  157. package/cjs/object/RecursiveRequired.d.ts.map +1 -0
  158. package/cjs/object/Required.d.ts +1 -0
  159. package/cjs/object/Required.d.ts.map +1 -0
  160. package/cjs/object/RequiredKeys.d.ts +3 -2
  161. package/cjs/object/RequiredKeys.d.ts.map +1 -0
  162. package/cjs/object/SpreadRecord.d.ts +2 -1
  163. package/cjs/object/SpreadRecord.d.ts.map +1 -0
  164. package/cjs/object/ValueOf.d.ts +1 -0
  165. package/cjs/object/ValueOf.d.ts.map +1 -0
  166. package/cjs/object/everyKey.d.ts +2 -1
  167. package/cjs/object/everyKey.d.ts.map +1 -0
  168. package/cjs/object/facade.d.ts +2 -1
  169. package/cjs/object/facade.d.ts.map +1 -0
  170. package/cjs/object/filterKey.d.ts +2 -1
  171. package/cjs/object/filterKey.d.ts.map +1 -0
  172. package/cjs/object/findKey.d.ts +2 -1
  173. package/cjs/object/findKey.d.ts.map +1 -0
  174. package/cjs/object/forEachKey.d.ts +2 -1
  175. package/cjs/object/forEachKey.d.ts.map +1 -0
  176. package/cjs/object/getField.d.ts +2 -1
  177. package/cjs/object/getField.d.ts.map +1 -0
  178. package/cjs/object/hasKey.d.ts +2 -1
  179. package/cjs/object/hasKey.d.ts.map +1 -0
  180. package/cjs/object/hasProperty.d.ts +2 -1
  181. package/cjs/object/hasProperty.d.ts.map +1 -0
  182. package/cjs/object/index.d.ts +37 -36
  183. package/cjs/object/index.d.ts.map +1 -0
  184. package/cjs/object/index.js +18 -18
  185. package/cjs/object/index.js.map +1 -1
  186. package/cjs/object/mapKey.d.ts +2 -1
  187. package/cjs/object/mapKey.d.ts.map +1 -0
  188. package/cjs/object/mapProperties.d.ts +3 -2
  189. package/cjs/object/mapProperties.d.ts.map +1 -0
  190. package/cjs/object/mapProperties.js +2 -2
  191. package/cjs/object/mapProperties.js.map +1 -1
  192. package/cjs/object/omit.d.ts +4 -3
  193. package/cjs/object/omit.d.ts.map +1 -0
  194. package/cjs/object/omit.js +2 -2
  195. package/cjs/object/omit.js.map +1 -1
  196. package/cjs/object/pick.d.ts +3 -2
  197. package/cjs/object/pick.d.ts.map +1 -0
  198. package/cjs/object/pick.js +2 -2
  199. package/cjs/object/pick.js.map +1 -1
  200. package/cjs/object/record.d.ts +3 -2
  201. package/cjs/object/record.d.ts.map +1 -0
  202. package/cjs/object/record.js +1 -1
  203. package/cjs/object/record.js.map +1 -1
  204. package/cjs/object/reduceKey.d.ts +2 -1
  205. package/cjs/object/reduceKey.d.ts.map +1 -0
  206. package/cjs/object/replaceProperty.d.ts +2 -1
  207. package/cjs/object/replaceProperty.d.ts.map +1 -0
  208. package/cjs/object/someKey.d.ts +2 -1
  209. package/cjs/object/someKey.d.ts.map +1 -0
  210. package/cjs/object/split.d.ts +3 -2
  211. package/cjs/object/split.d.ts.map +1 -0
  212. package/cjs/object/split.js +3 -3
  213. package/cjs/object/split.js.map +1 -1
  214. package/cjs/object/typeOverrideIncompatible.d.ts +2 -1
  215. package/cjs/object/typeOverrideIncompatible.d.ts.map +1 -0
  216. package/cjs/predicates/CanAssign.d.ts +3 -2
  217. package/cjs/predicates/CanAssign.d.ts.map +1 -0
  218. package/cjs/predicates/Equal.d.ts +1 -0
  219. package/cjs/predicates/Equal.d.ts.map +1 -0
  220. package/cjs/predicates/Extends.d.ts +1 -0
  221. package/cjs/predicates/Extends.d.ts.map +1 -0
  222. package/cjs/predicates/If.d.ts +1 -0
  223. package/cjs/predicates/If.d.ts.map +1 -0
  224. package/cjs/predicates/IsEmptyObject.d.ts +1 -0
  225. package/cjs/predicates/IsEmptyObject.d.ts.map +1 -0
  226. package/cjs/predicates/index.d.ts +9 -8
  227. package/cjs/predicates/index.d.ts.map +1 -0
  228. package/cjs/predicates/index.js +2 -2
  229. package/cjs/predicates/index.js.map +1 -1
  230. package/cjs/predicates/isType.d.ts +3 -2
  231. package/cjs/predicates/isType.d.ts.map +1 -0
  232. package/cjs/predicates/isType.js +2 -2
  233. package/cjs/predicates/isType.js.map +1 -1
  234. package/cjs/predicates/logical.d.ts +1 -0
  235. package/cjs/predicates/logical.d.ts.map +1 -0
  236. package/cjs/promise/PromiseValue.d.ts +1 -0
  237. package/cjs/promise/PromiseValue.d.ts.map +1 -0
  238. package/cjs/promise/PromiseValueMerge.d.ts +2 -1
  239. package/cjs/promise/PromiseValueMerge.d.ts.map +1 -0
  240. package/cjs/promise/index.d.ts +5 -4
  241. package/cjs/promise/index.d.ts.map +1 -0
  242. package/cjs/promise/index.js +2 -2
  243. package/cjs/promise/index.js.map +1 -1
  244. package/cjs/promise/isPromise.d.ts +1 -0
  245. package/cjs/promise/isPromise.d.ts.map +1 -0
  246. package/cjs/promise/mapSeries.d.ts +1 -0
  247. package/cjs/promise/mapSeries.d.ts.map +1 -0
  248. package/cjs/testing/index.d.ts +2 -1
  249. package/cjs/testing/index.d.ts.map +1 -0
  250. package/cjs/testing/index.js +1 -1
  251. package/cjs/testing/index.js.map +1 -1
  252. package/cjs/testing/stub.d.ts +3 -2
  253. package/cjs/testing/stub.d.ts.map +1 -0
  254. package/cjs/utils/NonNull.d.ts +1 -0
  255. package/cjs/utils/NonNull.d.ts.map +1 -0
  256. package/cjs/utils/NonUndefined.d.ts +1 -0
  257. package/cjs/utils/NonUndefined.d.ts.map +1 -0
  258. package/cjs/utils/Widen.d.ts +1 -0
  259. package/cjs/utils/Widen.d.ts.map +1 -0
  260. package/cjs/utils/as.d.ts +1 -0
  261. package/cjs/utils/as.d.ts.map +1 -0
  262. package/cjs/utils/index.d.ts +5 -4
  263. package/cjs/utils/index.d.ts.map +1 -0
  264. package/cjs/utils/index.js +1 -1
  265. package/cjs/utils/index.js.map +1 -1
  266. package/esm/ComposableTypes.d.ts +3 -0
  267. package/esm/ComposableTypes.d.ts.map +1 -0
  268. package/esm/JSONTypes.d.ts +12 -0
  269. package/esm/JSONTypes.d.ts.map +1 -0
  270. package/esm/JSONTypes.js.map +1 -1
  271. package/esm/PrimitiveTypes.d.ts +2 -0
  272. package/esm/PrimitiveTypes.d.ts.map +1 -0
  273. package/esm/UnionKeys.d.ts +2 -0
  274. package/esm/UnionKeys.d.ts.map +1 -0
  275. package/esm/array/CommonPropKeys.d.ts +4 -0
  276. package/esm/array/CommonPropKeys.d.ts.map +1 -0
  277. package/esm/array/Concat.d.ts +2 -0
  278. package/esm/array/Concat.d.ts.map +1 -0
  279. package/esm/array/CreateTuple.d.ts +3 -0
  280. package/esm/array/CreateTuple.d.ts.map +1 -0
  281. package/esm/array/Filter.d.ts +3 -0
  282. package/esm/array/Filter.d.ts.map +1 -0
  283. package/esm/array/FindFirst.d.ts +3 -0
  284. package/esm/array/FindFirst.d.ts.map +1 -0
  285. package/esm/array/FindLast.d.ts +2 -0
  286. package/esm/array/FindLast.d.ts.map +1 -0
  287. package/esm/array/Head.d.ts +2 -0
  288. package/esm/array/Head.d.ts.map +1 -0
  289. package/esm/array/IntersectOfProps.d.ts +5 -0
  290. package/esm/array/IntersectOfProps.d.ts.map +1 -0
  291. package/esm/array/IsArray.d.ts +2 -0
  292. package/esm/array/IsArray.d.ts.map +1 -0
  293. package/esm/array/Last.d.ts +2 -0
  294. package/esm/array/Last.d.ts.map +1 -0
  295. package/esm/array/PadLeft.d.ts +5 -0
  296. package/esm/array/PadLeft.d.ts.map +1 -0
  297. package/esm/array/Reverse.d.ts +2 -0
  298. package/esm/array/Reverse.d.ts.map +1 -0
  299. package/esm/array/Some.d.ts +8 -0
  300. package/esm/array/Some.d.ts.map +1 -0
  301. package/esm/array/Tail.d.ts +3 -0
  302. package/esm/array/Tail.d.ts.map +1 -0
  303. package/esm/array/UnionOfProps.d.ts +5 -0
  304. package/esm/array/UnionOfProps.d.ts.map +1 -0
  305. package/esm/array/UnionOfValues.d.ts +3 -0
  306. package/esm/array/UnionOfValues.d.ts.map +1 -0
  307. package/esm/array/drop.d.ts +13 -0
  308. package/esm/array/drop.d.ts.map +1 -0
  309. package/esm/array/drop.js.map +1 -1
  310. package/esm/array/index.d.ts +20 -0
  311. package/esm/array/index.d.ts.map +1 -0
  312. package/esm/array/index.js +3 -3
  313. package/esm/array/index.js.map +1 -1
  314. package/esm/array/literalArray.d.ts +3 -0
  315. package/esm/array/literalArray.d.ts.map +1 -0
  316. package/esm/array/reduceWhile.d.ts +2 -0
  317. package/esm/array/reduceWhile.d.ts.map +1 -0
  318. package/esm/assertion/assertType.d.ts +29 -0
  319. package/esm/assertion/assertType.d.ts.map +1 -0
  320. package/esm/assertion/assertType.js +1 -1
  321. package/esm/assertion/assertType.js.map +1 -1
  322. package/esm/assertion/index.d.ts +2 -0
  323. package/esm/assertion/index.d.ts.map +1 -0
  324. package/esm/assertion/index.js +1 -1
  325. package/esm/assertion/index.js.map +1 -1
  326. package/esm/class/AnyConstructor.d.ts +2 -0
  327. package/esm/class/AnyConstructor.d.ts.map +1 -0
  328. package/esm/class/index.d.ts +3 -0
  329. package/esm/class/index.d.ts.map +1 -0
  330. package/esm/class/index.js +1 -1
  331. package/esm/class/index.js.map +1 -1
  332. package/esm/class/isConstructor.d.ts +3 -0
  333. package/esm/class/isConstructor.d.ts.map +1 -0
  334. package/esm/function/AnyFunction.d.ts +2 -0
  335. package/esm/function/AnyFunction.d.ts.map +1 -0
  336. package/esm/function/index.d.ts +2 -0
  337. package/esm/function/index.d.ts.map +1 -0
  338. package/esm/functional/ChainFn.d.ts +3 -0
  339. package/esm/functional/ChainFn.d.ts.map +1 -0
  340. package/esm/functional/compose.d.ts +4 -0
  341. package/esm/functional/compose.d.ts.map +1 -0
  342. package/esm/functional/compose.js.map +1 -1
  343. package/esm/functional/index.d.ts +3 -0
  344. package/esm/functional/index.d.ts.map +1 -0
  345. package/esm/functional/index.js +1 -1
  346. package/esm/functional/index.js.map +1 -1
  347. package/esm/index.d.ts +19 -0
  348. package/esm/index.d.ts.map +1 -0
  349. package/esm/index.js +14 -14
  350. package/esm/index.js.map +1 -1
  351. package/esm/math/Abs.d.ts +3 -0
  352. package/esm/math/Abs.d.ts.map +1 -0
  353. package/esm/math/Add.d.ts +16 -0
  354. package/esm/math/Add.d.ts.map +1 -0
  355. package/esm/math/Digit.d.ts +97 -0
  356. package/esm/math/Digit.d.ts.map +1 -0
  357. package/esm/math/GreaterThan.d.ts +12 -0
  358. package/esm/math/GreaterThan.d.ts.map +1 -0
  359. package/esm/math/IsPositive.d.ts +2 -0
  360. package/esm/math/IsPositive.d.ts.map +1 -0
  361. package/esm/math/IsWhole.d.ts +2 -0
  362. package/esm/math/IsWhole.d.ts.map +1 -0
  363. package/esm/math/Max.d.ts +4 -0
  364. package/esm/math/Max.d.ts.map +1 -0
  365. package/esm/math/Subtract.d.ts +13 -0
  366. package/esm/math/Subtract.d.ts.map +1 -0
  367. package/esm/math/index.d.ts +9 -0
  368. package/esm/math/index.d.ts.map +1 -0
  369. package/esm/nodejs/index.d.ts +2 -0
  370. package/esm/nodejs/index.d.ts.map +1 -0
  371. package/esm/nodejs/index.js +1 -1
  372. package/esm/nodejs/index.js.map +1 -1
  373. package/esm/nodejs/isNodeError.d.ts +26 -0
  374. package/esm/nodejs/isNodeError.d.ts.map +1 -0
  375. package/esm/nominal-types/Brand.d.ts +11 -0
  376. package/esm/nominal-types/Brand.d.ts.map +1 -0
  377. package/esm/nominal-types/Brand.js +1 -1
  378. package/esm/nominal-types/Brand.js.map +1 -1
  379. package/esm/nominal-types/Flavor.d.ts +8 -0
  380. package/esm/nominal-types/Flavor.d.ts.map +1 -0
  381. package/esm/nominal-types/Flavor.js +1 -1
  382. package/esm/nominal-types/Flavor.js.map +1 -1
  383. package/esm/nominal-types/index.d.ts +4 -0
  384. package/esm/nominal-types/index.d.ts.map +1 -0
  385. package/esm/nominal-types/index.js +3 -3
  386. package/esm/nominal-types/index.js.map +1 -1
  387. package/esm/nominal-types/nominalMatch.d.ts +5 -0
  388. package/esm/nominal-types/nominalMatch.d.ts.map +1 -0
  389. package/esm/nominal-types/nominalMatch.js +1 -1
  390. package/esm/nominal-types/nominalMatch.js.map +1 -1
  391. package/esm/nominal-types/types.d.ts +3 -0
  392. package/esm/nominal-types/types.d.ts.map +1 -0
  393. package/esm/object/ANotB.d.ts +14 -0
  394. package/esm/object/ANotB.d.ts.map +1 -0
  395. package/esm/object/AnyRecord.d.ts +2 -0
  396. package/esm/object/AnyRecord.d.ts.map +1 -0
  397. package/esm/object/ExcludePropType.d.ts +4 -0
  398. package/esm/object/ExcludePropType.d.ts.map +1 -0
  399. package/esm/object/IsDisjoint.d.ts +5 -0
  400. package/esm/object/IsDisjoint.d.ts.map +1 -0
  401. package/esm/object/IsRecord.d.ts +2 -0
  402. package/esm/object/IsRecord.d.ts.map +1 -0
  403. package/esm/object/KeyTypes.d.ts +2 -0
  404. package/esm/object/KeyTypes.d.ts.map +1 -0
  405. package/esm/object/KeyofOptional.d.ts +3 -0
  406. package/esm/object/KeyofOptional.d.ts.map +1 -0
  407. package/esm/object/KeysWithDiffType.d.ts +7 -0
  408. package/esm/object/KeysWithDiffType.d.ts.map +1 -0
  409. package/esm/object/KnownKeys.d.ts +7 -0
  410. package/esm/object/KnownKeys.d.ts.map +1 -0
  411. package/esm/object/OptionalKeys.d.ts +8 -0
  412. package/esm/object/OptionalKeys.d.ts.map +1 -0
  413. package/esm/object/Partial.d.ts +7 -0
  414. package/esm/object/Partial.d.ts.map +1 -0
  415. package/esm/object/RecursiveIntersect.d.ts +5 -0
  416. package/esm/object/RecursiveIntersect.d.ts.map +1 -0
  417. package/esm/object/RecursivePartial.d.ts +5 -0
  418. package/esm/object/RecursivePartial.d.ts.map +1 -0
  419. package/esm/object/RecursiveRequired.d.ts +5 -0
  420. package/esm/object/RecursiveRequired.d.ts.map +1 -0
  421. package/esm/object/Required.d.ts +3 -0
  422. package/esm/object/Required.d.ts.map +1 -0
  423. package/esm/object/RequiredKeys.d.ts +7 -0
  424. package/esm/object/RequiredKeys.d.ts.map +1 -0
  425. package/esm/object/SpreadRecord.d.ts +3 -0
  426. package/esm/object/SpreadRecord.d.ts.map +1 -0
  427. package/esm/object/ValueOf.d.ts +2 -0
  428. package/esm/object/ValueOf.d.ts.map +1 -0
  429. package/esm/object/everyKey.d.ts +3 -0
  430. package/esm/object/everyKey.d.ts.map +1 -0
  431. package/esm/object/facade.d.ts +14 -0
  432. package/esm/object/facade.d.ts.map +1 -0
  433. package/esm/object/filterKey.d.ts +3 -0
  434. package/esm/object/filterKey.d.ts.map +1 -0
  435. package/esm/object/findKey.d.ts +3 -0
  436. package/esm/object/findKey.d.ts.map +1 -0
  437. package/esm/object/forEachKey.d.ts +3 -0
  438. package/esm/object/forEachKey.d.ts.map +1 -0
  439. package/esm/object/getField.d.ts +4 -0
  440. package/esm/object/getField.d.ts.map +1 -0
  441. package/esm/object/hasKey.d.ts +4 -0
  442. package/esm/object/hasKey.d.ts.map +1 -0
  443. package/esm/object/hasProperty.d.ts +3 -0
  444. package/esm/object/hasProperty.d.ts.map +1 -0
  445. package/esm/object/index.d.ts +37 -0
  446. package/esm/object/index.d.ts.map +1 -0
  447. package/esm/object/index.js +18 -18
  448. package/esm/object/index.js.map +1 -1
  449. package/esm/object/mapKey.d.ts +3 -0
  450. package/esm/object/mapKey.d.ts.map +1 -0
  451. package/esm/object/mapProperties.d.ts +6 -0
  452. package/esm/object/mapProperties.d.ts.map +1 -0
  453. package/esm/object/mapProperties.js +1 -1
  454. package/esm/object/mapProperties.js.map +1 -1
  455. package/esm/object/omit.d.ts +18 -0
  456. package/esm/object/omit.d.ts.map +1 -0
  457. package/esm/object/omit.js +1 -1
  458. package/esm/object/omit.js.map +1 -1
  459. package/esm/object/pick.d.ts +21 -0
  460. package/esm/object/pick.d.ts.map +1 -0
  461. package/esm/object/pick.js +1 -1
  462. package/esm/object/pick.js.map +1 -1
  463. package/esm/object/record.d.ts +4 -0
  464. package/esm/object/record.d.ts.map +1 -0
  465. package/esm/object/record.js +1 -1
  466. package/esm/object/record.js.map +1 -1
  467. package/esm/object/reduceKey.d.ts +4 -0
  468. package/esm/object/reduceKey.d.ts.map +1 -0
  469. package/esm/object/replaceProperty.d.ts +6 -0
  470. package/esm/object/replaceProperty.d.ts.map +1 -0
  471. package/esm/object/someKey.d.ts +3 -0
  472. package/esm/object/someKey.d.ts.map +1 -0
  473. package/esm/object/split.d.ts +82 -0
  474. package/esm/object/split.d.ts.map +1 -0
  475. package/esm/object/split.js +1 -1
  476. package/esm/object/split.js.map +1 -1
  477. package/esm/object/typeOverrideIncompatible.d.ts +3 -0
  478. package/esm/object/typeOverrideIncompatible.d.ts.map +1 -0
  479. package/esm/predicates/CanAssign.d.ts +7 -0
  480. package/esm/predicates/CanAssign.d.ts.map +1 -0
  481. package/esm/predicates/Equal.d.ts +5 -0
  482. package/esm/predicates/Equal.d.ts.map +1 -0
  483. package/esm/predicates/Extends.d.ts +5 -0
  484. package/esm/predicates/Extends.d.ts.map +1 -0
  485. package/esm/predicates/If.d.ts +2 -0
  486. package/esm/predicates/If.d.ts.map +1 -0
  487. package/esm/predicates/IsEmptyObject.d.ts +2 -0
  488. package/esm/predicates/IsEmptyObject.d.ts.map +1 -0
  489. package/esm/predicates/index.d.ts +12 -0
  490. package/esm/predicates/index.d.ts.map +1 -0
  491. package/esm/predicates/index.js +2 -2
  492. package/esm/predicates/index.js.map +1 -1
  493. package/esm/predicates/isType.d.ts +11 -0
  494. package/esm/predicates/isType.d.ts.map +1 -0
  495. package/esm/predicates/isType.js +1 -1
  496. package/esm/predicates/isType.js.map +1 -1
  497. package/esm/predicates/logical.d.ts +5 -0
  498. package/esm/predicates/logical.d.ts.map +1 -0
  499. package/esm/promise/PromiseValue.d.ts +2 -0
  500. package/esm/promise/PromiseValue.d.ts.map +1 -0
  501. package/esm/promise/PromiseValueMerge.d.ts +3 -0
  502. package/esm/promise/PromiseValueMerge.d.ts.map +1 -0
  503. package/esm/promise/index.d.ts +5 -0
  504. package/esm/promise/index.d.ts.map +1 -0
  505. package/esm/promise/index.js +2 -2
  506. package/esm/promise/index.js.map +1 -1
  507. package/esm/promise/isPromise.d.ts +2 -0
  508. package/esm/promise/isPromise.d.ts.map +1 -0
  509. package/esm/promise/mapSeries.d.ts +2 -0
  510. package/esm/promise/mapSeries.d.ts.map +1 -0
  511. package/esm/testing/index.d.ts +2 -0
  512. package/esm/testing/index.d.ts.map +1 -0
  513. package/esm/testing/index.js +1 -1
  514. package/esm/testing/index.js.map +1 -1
  515. package/esm/testing/stub.d.ts +10 -0
  516. package/esm/testing/stub.d.ts.map +1 -0
  517. package/esm/utils/NonNull.d.ts +2 -0
  518. package/esm/utils/NonNull.d.ts.map +1 -0
  519. package/esm/utils/NonUndefined.d.ts +2 -0
  520. package/esm/utils/NonUndefined.d.ts.map +1 -0
  521. package/esm/utils/Widen.d.ts +2 -0
  522. package/esm/utils/Widen.d.ts.map +1 -0
  523. package/esm/utils/as.d.ts +7 -0
  524. package/esm/utils/as.d.ts.map +1 -0
  525. package/esm/utils/index.d.ts +5 -0
  526. package/esm/utils/index.d.ts.map +1 -0
  527. package/esm/utils/index.js +1 -1
  528. package/esm/utils/index.js.map +1 -1
  529. package/package.json +47 -42
  530. package/ts/JSONTypes.ts +17 -18
  531. package/ts/array/CommonPropKeys.ts +18 -18
  532. package/ts/array/CreateTuple.ts +1 -1
  533. package/ts/array/IntersectOfProps.ts +20 -20
  534. package/ts/array/PadLeft.ts +3 -3
  535. package/ts/array/Some.ts +3 -3
  536. package/ts/array/Tail.ts +1 -1
  537. package/ts/array/UnionOfProps.ts +18 -18
  538. package/ts/array/drop.ts +3 -3
  539. package/ts/array/index.ts +19 -19
  540. package/ts/array/literalArray.ts +1 -1
  541. package/ts/assertion/assertType.ts +105 -105
  542. package/ts/assertion/index.ts +1 -1
  543. package/ts/binary/_binary.ts +1 -1
  544. package/ts/binary/index.ts +2 -2
  545. package/ts/class/index.ts +2 -2
  546. package/ts/class/isConstructor.ts +1 -1
  547. package/ts/function/index.ts +1 -1
  548. package/ts/functional/Maybe.ts +19 -19
  549. package/ts/functional/compose.ts +4 -3
  550. package/ts/functional/index.ts +3 -3
  551. package/ts/index.ts +19 -19
  552. package/ts/math/Abs.ts +1 -1
  553. package/ts/math/Add.ts +6 -6
  554. package/ts/math/Digit.ts +6 -4
  555. package/ts/math/GreaterThan.ts +16 -17
  556. package/ts/math/Max.ts +6 -30
  557. package/ts/math/Subtract.ts +6 -6
  558. package/ts/math/index.ts +8 -8
  559. package/ts/nodejs/index.ts +1 -1
  560. package/ts/nominal-types/Brand.ts +2 -2
  561. package/ts/nominal-types/Flavor.ts +32 -32
  562. package/ts/nominal-types/index.ts +3 -3
  563. package/ts/nominal-types/nominalMatch.ts +3 -3
  564. package/ts/object/ANotB.ts +21 -21
  565. package/ts/object/IsDisjoint.ts +12 -12
  566. package/ts/object/KeysWithDiffType.ts +3 -3
  567. package/ts/object/KnownKeys.ts +1 -1
  568. package/ts/object/OptionalKeys.ts +1 -1
  569. package/ts/object/Partial.ts +3 -3
  570. package/ts/object/RecursiveIntersect.ts +1 -1
  571. package/ts/object/RecursivePartial.ts +1 -1
  572. package/ts/object/RecursiveRequired.ts +1 -1
  573. package/ts/object/RequiredKeys.ts +2 -2
  574. package/ts/object/SpreadRecord.ts +6 -6
  575. package/ts/object/everyKey.ts +1 -1
  576. package/ts/object/facade.ts +39 -39
  577. package/ts/object/filterKey.ts +1 -1
  578. package/ts/object/findKey.ts +1 -1
  579. package/ts/object/forEachKey.ts +1 -1
  580. package/ts/object/getField.ts +1 -1
  581. package/ts/object/hasKey.ts +7 -7
  582. package/ts/object/hasProperty.ts +1 -1
  583. package/ts/object/index.ts +36 -36
  584. package/ts/object/mapKey.ts +1 -1
  585. package/ts/object/mapProperties.ts +3 -3
  586. package/ts/object/omit.ts +36 -36
  587. package/ts/object/pick.ts +35 -35
  588. package/ts/object/record.ts +5 -4
  589. package/ts/object/reduceKey.ts +1 -1
  590. package/ts/object/replaceProperty.ts +1 -1
  591. package/ts/object/someKey.ts +1 -1
  592. package/ts/object/split.ts +5 -4
  593. package/ts/object/typeOverrideIncompatible.ts +10 -10
  594. package/ts/predicates/CanAssign.ts +2 -2
  595. package/ts/predicates/index.ts +8 -8
  596. package/ts/predicates/isType.ts +30 -30
  597. package/ts/promise/PromiseValueMerge.ts +1 -1
  598. package/ts/promise/index.ts +4 -4
  599. package/ts/testing/index.ts +1 -1
  600. package/ts/testing/stub.ts +2 -2
  601. package/ts/utils/index.ts +4 -4
  602. package/ts/ComposableTypes.spec.ts +0 -29
  603. package/ts/JSONTypes.spec.ts +0 -43
  604. package/ts/array/CommonPropKeys.spec.ts +0 -20
  605. package/ts/array/Concat.spec.ts +0 -21
  606. package/ts/array/CreateTuple.spec.ts +0 -46
  607. package/ts/array/DropFirst.spec.ts +0 -21
  608. package/ts/array/DropLast.spec.ts +0 -21
  609. package/ts/array/DropMatch.spec.ts +0 -234
  610. package/ts/array/Filter.spec.ts +0 -107
  611. package/ts/array/FindFirst.spec.ts +0 -27
  612. package/ts/array/FindLast.spec.ts +0 -27
  613. package/ts/array/Head.spec.ts +0 -21
  614. package/ts/array/IntersectOfProps.spec.ts +0 -14
  615. package/ts/array/Last.spec.ts +0 -32
  616. package/ts/array/PadLeft.spec.ts +0 -26
  617. package/ts/array/Reverse.spec.ts +0 -17
  618. package/ts/array/Some.spec.ts +0 -79
  619. package/ts/array/Tail.spec.ts +0 -32
  620. package/ts/array/UnionOfProps.spec.ts +0 -14
  621. package/ts/array/UnionOfValues.spec.ts +0 -11
  622. package/ts/array/literalArray.spec.ts +0 -7
  623. package/ts/array/reduceWhile.spec.ts +0 -27
  624. package/ts/assertion/assertType.spec.ts +0 -507
  625. package/ts/binary/index.spec.ts +0 -28
  626. package/ts/class/AnyConstructor.spec.ts +0 -13
  627. package/ts/class/isConstructor.spec.ts +0 -35
  628. package/ts/function/AnyFunction.spec.ts +0 -21
  629. package/ts/functional/ChainFn.spec.ts +0 -7
  630. package/ts/functional/Maybe.spec.ts +0 -42
  631. package/ts/functional/compose.spec.ts +0 -32
  632. package/ts/index.spec.ts +0 -7
  633. package/ts/math/Abs.spec.ts +0 -14
  634. package/ts/math/Add.spec.ts +0 -82
  635. package/ts/math/Digit.spec.ts +0 -184
  636. package/ts/math/GreaterThan.spec.ts +0 -43
  637. package/ts/math/IsPositive.spec.ts +0 -15
  638. package/ts/math/IsWhole.spec.ts +0 -19
  639. package/ts/math/Max.spec.ts +0 -35
  640. package/ts/math/Subtract.spec.ts +0 -40
  641. package/ts/nodejs/isNodeError.spec.ts +0 -11
  642. package/ts/nominal-types/Brand.spec.ts +0 -43
  643. package/ts/nominal-types/Flavor.spec.ts +0 -51
  644. package/ts/nominal-types/nominalMatch.spec.ts +0 -54
  645. package/ts/object/ANotB.spec.ts +0 -78
  646. package/ts/object/ExcludePropType.spec.ts +0 -13
  647. package/ts/object/IsDisjoint.spec.ts +0 -25
  648. package/ts/object/IsRecord.spec.ts +0 -22
  649. package/ts/object/KeyTypes.spec.ts +0 -9
  650. package/ts/object/KeyofOptional.spec.ts +0 -8
  651. package/ts/object/KeysWithDiffType.spec.ts +0 -21
  652. package/ts/object/KnownKeys.spec.ts +0 -39
  653. package/ts/object/OptionalKeys.spec.ts +0 -23
  654. package/ts/object/Partial.spec.ts +0 -49
  655. package/ts/object/RecursiveIntersect.spec.ts +0 -39
  656. package/ts/object/RecursiveRequired.spec.ts +0 -57
  657. package/ts/object/Required.spec.ts +0 -29
  658. package/ts/object/RequiredKeys.spec.ts +0 -24
  659. package/ts/object/SpreadRecord.spec.ts +0 -14
  660. package/ts/object/ValueOf.spec.ts +0 -36
  661. package/ts/object/everyKey.spec.ts +0 -11
  662. package/ts/object/facade.spec.ts +0 -22
  663. package/ts/object/filterKey.spec.ts +0 -8
  664. package/ts/object/findKey.spec.ts +0 -8
  665. package/ts/object/forEachKey.spec.ts +0 -9
  666. package/ts/object/getField.spec.ts +0 -21
  667. package/ts/object/hasKey.spec.ts +0 -29
  668. package/ts/object/hasProperty.spec.ts +0 -15
  669. package/ts/object/mapKey.spec.ts +0 -8
  670. package/ts/object/mapProperties.spec.ts +0 -27
  671. package/ts/object/omit.spec.ts +0 -104
  672. package/ts/object/pick.spec.ts +0 -66
  673. package/ts/object/record.spec.ts +0 -54
  674. package/ts/object/reduceKey.spec.ts +0 -18
  675. package/ts/object/replaceProperty.spec.ts +0 -16
  676. package/ts/object/run.ts +0 -0
  677. package/ts/object/someKey.spec.ts +0 -6
  678. package/ts/object/split.spec.ts +0 -119
  679. package/ts/object/typeOverrideIncompatible.spec.ts +0 -24
  680. package/ts/predicates/CanAssign.spec.ts +0 -57
  681. package/ts/predicates/Equal.spec.ts +0 -71
  682. package/ts/predicates/If.spec.ts +0 -14
  683. package/ts/predicates/IsEmptyObject.spec.ts +0 -15
  684. package/ts/predicates/index.spec.ts +0 -73
  685. package/ts/predicates/isType.spec.ts +0 -106
  686. package/ts/predicates/logical.spec.ts +0 -59
  687. package/ts/promise/PromiseValue.spec.ts +0 -6
  688. package/ts/promise/PromiseValueMerge.spec.ts +0 -7
  689. package/ts/promise/isPromise.spec.ts +0 -26
  690. package/ts/promise/mapSeries.spec.ts +0 -12
  691. package/ts/testing/stub.spec.ts +0 -58
  692. package/ts/type-checker/.eslintrc.json +0 -5
  693. package/ts/type-checker/AnyType.ts +0 -13
  694. package/ts/type-checker/Boolean.ts +0 -34
  695. package/ts/type-checker/Tuple.spec.ts +0 -15
  696. package/ts/type-checker/Tuple.ts +0 -14
  697. package/ts/type-checker/buildTypes.spec.ts +0 -28
  698. package/ts/type-checker/index.ts +0 -0
  699. package/ts/type-checker/typeChecker.spec.ts +0 -14
  700. package/ts/type-checker/typeChecker.ts +0 -52
  701. package/ts/type-checker/types.ts +0 -19
  702. package/ts/types/.eslintrc.json +0 -5
  703. package/ts/types/AllType.ts +0 -31
  704. package/ts/types/Any.ts +0 -7
  705. package/ts/types/Array.ts +0 -43
  706. package/ts/types/BigInt.ts +0 -36
  707. package/ts/types/Boolean.ts +0 -36
  708. package/ts/types/Generate.ts +0 -48
  709. package/ts/types/Null.ts +0 -14
  710. package/ts/types/Number.ts +0 -56
  711. package/ts/types/Object.ts +0 -53
  712. package/ts/types/Record.ts +0 -25
  713. package/ts/types/String.ts +0 -56
  714. package/ts/types/Symbol.ts +0 -19
  715. package/ts/types/Tuple.ts +0 -50
  716. package/ts/types/Undefined.ts +0 -8
  717. package/ts/types/Union.ts +0 -46
  718. package/ts/types/Unknown.ts +0 -9
  719. package/ts/types/analyze.spec.ts +0 -979
  720. package/ts/types/analyze.ts +0 -170
  721. package/ts/types/check.spec.ts +0 -12
  722. package/ts/types/check.ts +0 -26
  723. package/ts/types/conform.spec.ts +0 -7
  724. package/ts/types/conform.ts +0 -27
  725. package/ts/types/getPlainAnalysisReport.spec.ts +0 -354
  726. package/ts/types/getPlainAnalysisReport.ts +0 -115
  727. package/ts/types/index.ts +0 -28
  728. package/ts/types/optional.ts +0 -30
  729. package/ts/types/required.ts +0 -30
  730. package/ts/types/satisfy.accept.ts +0 -39
  731. package/ts/types/satisfy.spec.ts +0 -600
  732. package/ts/types/satisfy.ts +0 -27
  733. package/ts/types/types.ts +0 -10
  734. package/ts/utils/as.spec.ts +0 -45
@@ -1,105 +1,105 @@
1
- import { tersify } from 'tersify'
2
- import { AnyConstructor, isConstructor } from '../class'
3
- import { AnyFunction } from '../function'
4
-
5
- /**
6
- * assert the subject satisfies the specified type T
7
- * @type T the type to check against.
8
- */
9
- export function assertType<T>(subject: T): asserts subject is T
10
- export function assertType<T>(subject: unknown, validator: (s: T) => boolean): asserts subject is T
11
- export function assertType<T extends new (...args: any) => any>(subject: unknown, constructor: T): asserts subject is InstanceType<T>
12
- export function assertType(subject: unknown, validator?: (s: any) => boolean) {
13
- if (validator) {
14
- if ((isConstructor(validator) && !(subject instanceof validator)) || !validator(subject))
15
- throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
16
- }
17
- return
18
- }
19
-
20
- assertType.isUndefined = function (subject: undefined): asserts subject is undefined {
21
- if (typeof subject !== 'undefined') throw TypeError(`subject is not undefined`)
22
- }
23
- assertType.noUndefined = function <S>(subject: Exclude<S, undefined>): void {
24
- if (typeof subject === 'undefined') throw TypeError(`subject is undefined`)
25
- }
26
-
27
- assertType.isNull = function (subject: null): asserts subject is null {
28
- if (subject !== null) throw TypeError(`subject is not null`)
29
- }
30
- assertType.noNull = function <S>(subject: Exclude<S, null>): void {
31
- if (subject === null) throw TypeError(`subject is null`)
32
- }
33
-
34
- assertType.isNumber = function (subject: number): asserts subject is number {
35
- if (typeof subject !== 'number') throw TypeError(`subject is not number`)
36
- }
37
- assertType.noNumber = function <S>(subject: Exclude<S, number>): void {
38
- if (typeof subject === 'number') throw TypeError(`subject is number`)
39
- }
40
-
41
- assertType.isBoolean = function (subject: boolean): asserts subject is boolean {
42
- if (typeof subject !== 'boolean') throw TypeError(`subject is not boolean`)
43
- }
44
- assertType.noBoolean = function <S>(subject: Exclude<S, boolean>): void {
45
- if (typeof subject === 'boolean') throw TypeError(`subject is boolean`)
46
- }
47
-
48
- assertType.isTrue = function (subject: true): asserts subject is true {
49
- if (subject !== true) throw TypeError(`subject is not true`)
50
- }
51
- assertType.noTrue = function <S>(subject: Exclude<S, true>): void {
52
- // @ts-ignore
53
- if (subject === true) throw TypeError(`subject is true`)
54
- }
55
-
56
- assertType.isFalse = function (subject: false): asserts subject is false {
57
- if (subject !== false) throw TypeError(`subject is not false`)
58
- }
59
- assertType.noFalse = function <S>(subject: Exclude<S, false>): void {
60
- // @ts-ignore
61
- if (subject === false) throw TypeError(`subject is false`)
62
- }
63
-
64
- assertType.isString = function (subject: string): asserts subject is string {
65
- if (typeof subject !== 'string') throw TypeError(`subject is not string`)
66
- }
67
- assertType.noString = function <S>(subject: Exclude<S, string>): void {
68
- if (typeof subject === 'string') throw TypeError(`subject is string`)
69
- }
70
-
71
- assertType.isFunction = function (subject: AnyFunction): asserts subject is AnyFunction {
72
- if (typeof subject !== 'function') throw TypeError(`subject is not function`)
73
- }
74
- assertType.noFunction = function <S>(subject: Exclude<S, AnyFunction>): void {
75
- if (typeof subject === 'function') throw TypeError(`subject is function`)
76
- }
77
-
78
- assertType.isConstructor = function (subject: AnyConstructor): asserts subject is AnyConstructor {
79
- if (!isConstructor(subject)) throw TypeError(`subject is not a constructor`)
80
- }
81
-
82
- assertType.isError = function (subject: Error): asserts subject is Error {
83
- if (!(subject instanceof Error)) throw TypeError(`subject is not an Error`)
84
- }
85
- assertType.noError = function <S>(subject: Exclude<S, Error>): void {
86
- if (subject instanceof Error) throw TypeError(`subject is an Error`)
87
- }
88
-
89
- assertType.isNever = function (subject: never): asserts subject is never {
90
- }
91
-
92
- /**
93
- * creates a custom assertion function with standard TypeError.
94
- * Currently this requires explicity type annotation,
95
- * thus making it hard to use:
96
- * https://github.com/microsoft/TypeScript/issues/41047
97
- */
98
- assertType.custom = function <T>(
99
- validator: (s: T) => boolean
100
- ): (subject: unknown) => asserts subject is T {
101
- return function (subject) {
102
- if (!validator(subject as any)) throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
103
- return
104
- }
105
- }
1
+ import { tersify } from 'tersify'
2
+ import { AnyConstructor, isConstructor } from '../class/index.js'
3
+ import type { AnyFunction } from '../function/index.js'
4
+
5
+ /**
6
+ * assert the subject satisfies the specified type T
7
+ * @type T the type to check against.
8
+ */
9
+ export function assertType<T>(subject: T): asserts subject is T
10
+ export function assertType<T>(subject: unknown, validator: (s: T) => boolean): asserts subject is T
11
+ export function assertType<T extends new (...args: any) => any>(subject: unknown, constructor: T): asserts subject is InstanceType<T>
12
+ export function assertType(subject: unknown, validator?: (s: any) => boolean) {
13
+ if (validator) {
14
+ if ((isConstructor(validator) && !(subject instanceof validator)) || !validator(subject))
15
+ throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
16
+ }
17
+ return
18
+ }
19
+
20
+ assertType.isUndefined = function (subject: undefined): asserts subject is undefined {
21
+ if (typeof subject !== 'undefined') throw TypeError(`subject is not undefined`)
22
+ }
23
+ assertType.noUndefined = function <S>(subject: Exclude<S, undefined>): void {
24
+ if (typeof subject === 'undefined') throw TypeError(`subject is undefined`)
25
+ }
26
+
27
+ assertType.isNull = function (subject: null): asserts subject is null {
28
+ if (subject !== null) throw TypeError(`subject is not null`)
29
+ }
30
+ assertType.noNull = function <S>(subject: Exclude<S, null>): void {
31
+ if (subject === null) throw TypeError(`subject is null`)
32
+ }
33
+
34
+ assertType.isNumber = function (subject: number): asserts subject is number {
35
+ if (typeof subject !== 'number') throw TypeError(`subject is not number`)
36
+ }
37
+ assertType.noNumber = function <S>(subject: Exclude<S, number>): void {
38
+ if (typeof subject === 'number') throw TypeError(`subject is number`)
39
+ }
40
+
41
+ assertType.isBoolean = function (subject: boolean): asserts subject is boolean {
42
+ if (typeof subject !== 'boolean') throw TypeError(`subject is not boolean`)
43
+ }
44
+ assertType.noBoolean = function <S>(subject: Exclude<S, boolean>): void {
45
+ if (typeof subject === 'boolean') throw TypeError(`subject is boolean`)
46
+ }
47
+
48
+ assertType.isTrue = function (subject: true): asserts subject is true {
49
+ if (subject !== true) throw TypeError(`subject is not true`)
50
+ }
51
+ assertType.noTrue = function <S>(subject: Exclude<S, true>): void {
52
+ // @ts-ignore
53
+ if (subject === true) throw TypeError(`subject is true`)
54
+ }
55
+
56
+ assertType.isFalse = function (subject: false): asserts subject is false {
57
+ if (subject !== false) throw TypeError(`subject is not false`)
58
+ }
59
+ assertType.noFalse = function <S>(subject: Exclude<S, false>): void {
60
+ // @ts-ignore
61
+ if (subject === false) throw TypeError(`subject is false`)
62
+ }
63
+
64
+ assertType.isString = function (subject: string): asserts subject is string {
65
+ if (typeof subject !== 'string') throw TypeError(`subject is not string`)
66
+ }
67
+ assertType.noString = function <S>(subject: Exclude<S, string>): void {
68
+ if (typeof subject === 'string') throw TypeError(`subject is string`)
69
+ }
70
+
71
+ assertType.isFunction = function (subject: AnyFunction): asserts subject is AnyFunction {
72
+ if (typeof subject !== 'function') throw TypeError(`subject is not function`)
73
+ }
74
+ assertType.noFunction = function <S>(subject: Exclude<S, AnyFunction>): void {
75
+ if (typeof subject === 'function') throw TypeError(`subject is function`)
76
+ }
77
+
78
+ assertType.isConstructor = function (subject: AnyConstructor): asserts subject is AnyConstructor {
79
+ if (!isConstructor(subject)) throw TypeError(`subject is not a constructor`)
80
+ }
81
+
82
+ assertType.isError = function (subject: Error): asserts subject is Error {
83
+ if (!(subject instanceof Error)) throw TypeError(`subject is not an Error`)
84
+ }
85
+ assertType.noError = function <S>(subject: Exclude<S, Error>): void {
86
+ if (subject instanceof Error) throw TypeError(`subject is an Error`)
87
+ }
88
+
89
+ assertType.isNever = function (subject: never): asserts subject is never {
90
+ }
91
+
92
+ /**
93
+ * creates a custom assertion function with standard TypeError.
94
+ * Currently this requires explicity type annotation,
95
+ * thus making it hard to use:
96
+ * https://github.com/microsoft/TypeScript/issues/41047
97
+ */
98
+ assertType.custom = function <T>(
99
+ validator: (s: T) => boolean
100
+ ): (subject: unknown) => asserts subject is T {
101
+ return function (subject) {
102
+ if (!validator(subject as any)) throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
103
+ return
104
+ }
105
+ }
@@ -1 +1 @@
1
- export * from './assertType'
1
+ export * from './assertType.js'
@@ -1 +1 @@
1
- export type { Bit, BitAnd, BitNot, BitOr, BitXor } from './Bit'
1
+ export type { Bit, BitAnd, BitNot, BitOr, BitXor } from './Bit.js'
@@ -1,2 +1,2 @@
1
- export * as B from './_binary'
2
- export * as Bit from './_binary'
1
+ export * as B from './_binary.js'
2
+ export * as Bit from './_binary.js'
package/ts/class/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export type { AnyConstructor } from './AnyConstructor'
2
- export * from './isConstructor'
1
+ export type { AnyConstructor } from './AnyConstructor.js'
2
+ export * from './isConstructor.js'
@@ -1,4 +1,4 @@
1
- import { AnyConstructor } from './AnyConstructor'
1
+ import type { AnyConstructor } from './AnyConstructor.js'
2
2
 
3
3
  export function isConstructor(subject: unknown): subject is AnyConstructor {
4
4
  try {
@@ -1 +1 @@
1
- export type { AnyFunction } from './AnyFunction'
1
+ export type { AnyFunction } from './AnyFunction.js'
@@ -1,19 +1,19 @@
1
- import { Brand } from '../nominal-types'
2
- import { Equal } from '../predicates'
3
- import { Widen } from '../utils'
4
-
5
- export type Maybe<T> = Just<T> | None<T>
6
- export type Just<T> = Brand<'maybe', T> & { unwrap(): T }
7
- export type None<T> = Brand<'maybe', void> & { unwrap(): T }
8
-
9
- export function just<T>(value: T):
10
- Equal<T, undefined | null> extends true ?
11
- None<T> :
12
- Just<Widen<NonNullable<T>>> {
13
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
14
- return { unwrap() { return value } } as any
15
- }
16
-
17
- export function none<T>(): None<T> {
18
- return { unwrap() { } } as None<T>
19
- }
1
+ import type { Brand } from '../nominal-types/index.js'
2
+ import type { Equal } from '../predicates/index.js'
3
+ import type { Widen } from '../utils/index.js'
4
+
5
+ export type Maybe<T> = Just<T> | None<T>
6
+ export type Just<T> = Brand<'maybe', T> & { unwrap(): T }
7
+ export type None<T> = Brand<'maybe', void> & { unwrap(): T }
8
+
9
+ export function just<T>(value: T):
10
+ Equal<T, undefined | null> extends true ?
11
+ None<T> :
12
+ Just<Widen<NonNullable<T>>> {
13
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
14
+ return { unwrap() { return value } } as any
15
+ }
16
+
17
+ export function none<T>(): None<T> {
18
+ return { unwrap() { } } as None<T>
19
+ }
@@ -1,9 +1,10 @@
1
- import { Head, Last } from '../array'
2
- import { AnyFunction } from '../function/AnyFunction'
1
+ import type { Head, Last } from '../array/index.js'
2
+ import type { AnyFunction } from '../function/AnyFunction.js'
3
3
 
4
4
  /**
5
5
  * compose functions
6
6
  */
7
7
  export function compose<FS extends AnyFunction[]>(...fns: FS): (...args: Parameters<Head<FS>>) => ReturnType<Last<FS>> {
8
- return (...args: any[]) => fns.reduce((args, fn) => [fn(...args)], args)[0] as any
8
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
9
+ return (...args: any[]) => fns.reduce((args, fn) => [fn(...args)], args)[0]
9
10
  }
@@ -1,3 +1,3 @@
1
- // export * from './Maybe'
2
- export type { ChainFn, EndoFn } from './ChainFn'
3
- export * from './compose'
1
+ // export * from './Maybe.js'
2
+ export type { ChainFn, EndoFn } from './ChainFn.js'
3
+ export * from './compose.js'
package/ts/index.ts CHANGED
@@ -1,22 +1,22 @@
1
- // import * as types from './types'
1
+ // import * as types from './types/index.js'
2
2
  export { required, requiredDeep } from 'unpartial'
3
- export * from './array'
4
- export * from './assertion'
5
- export * from './class'
6
- export type { ComposableTypes, NonComposableTypes } from './ComposableTypes'
7
- export * from './function'
8
- export * from './functional'
9
- export * from './JSONTypes'
10
- export * from './math'
11
- export * from './nodejs'
12
- export * from './nominal-types'
13
- export * from './object'
14
- export * from './predicates'
15
- export type { PrimitiveTypes } from './PrimitiveTypes'
16
- export * from './promise'
17
- export * from './testing'
18
- // export * from './types/optional'
3
+ export * from './array/index.js'
4
+ export * from './assertion/index.js'
5
+ export * from './class/index.js'
6
+ export type { ComposableTypes, NonComposableTypes } from './ComposableTypes.js'
7
+ export * from './function/index.js'
8
+ export * from './functional/index.js'
9
+ export * from './JSONTypes.js'
10
+ export * from './math/index.js'
11
+ export * from './nodejs/index.js'
12
+ export * from './nominal-types/index.js'
13
+ export * from './object/index.js'
14
+ export * from './predicates/index.js'
15
+ export type { PrimitiveTypes } from './PrimitiveTypes.js'
16
+ export * from './promise/index.js'
17
+ export * from './testing/index.js'
18
+ // export * from './types/optional.js'
19
19
  // export * from './types/required'
20
- export type { UnionKeys } from './UnionKeys'
21
- export * from './utils'
20
+ export type { UnionKeys } from './UnionKeys.js'
21
+ export * from './utils/index.js'
22
22
  // export { types, types as T }
package/ts/math/Abs.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DigitArray } from './Digit'
1
+ import type { DigitArray } from './Digit.js'
2
2
 
3
3
  export type Abs<N extends number, Fail = never> = number extends N ? Fail :
4
4
  `${N}` extends `-${infer P}` ? DigitArray.ToNumber<DigitArray.FromString<P>> : N
package/ts/math/Add.ts CHANGED
@@ -1,10 +1,10 @@
1
- import type { PadLeft } from '../array'
2
- import type { And } from '../predicates'
1
+ import type { PadLeft } from '../array/index.js'
2
+ import type { And } from '../predicates/index.js'
3
3
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
- import type { Digit, DigitArray } from './Digit'
5
- import type { IsPositive } from './IsPositive'
6
- import type { IsWhole } from './IsWhole'
7
- import type { Max } from './Max'
4
+ import type { Digit, DigitArray } from './Digit.js'
5
+ import type { IsPositive } from './IsPositive.js'
6
+ import type { IsWhole } from './IsWhole.js'
7
+ import type { Max } from './Max.js'
8
8
 
9
9
  /**
10
10
  * Add two number literals.
package/ts/math/Digit.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Tail } from '../array'
2
- import { And } from '../predicates'
3
- import { IsPositive } from './IsPositive'
4
- import { IsWhole } from './IsWhole'
1
+ import type { Tail } from '../array/index.js'
2
+ import type { And } from '../predicates/index.js'
3
+ import type { IsPositive } from './IsPositive.js'
4
+ import type { IsWhole } from './IsWhole.js'
5
5
 
6
6
  export namespace Digit {
7
7
  export type ToTuple<T = 1> = {
@@ -66,6 +66,8 @@ export namespace DigitArray {
66
66
 
67
67
 
68
68
  export type FromNumber<N extends number> = FromString<NumberToString<N>>
69
+ export type FromNumberAbs<N extends number> = FromString<TrimMinusSign<`${N}`>>
70
+ export type TrimMinusSign<N extends string> = N extends `-${infer rest}` ? rest : N
69
71
 
70
72
  export type NumberToString<N extends number> = (And<IsPositive<N>, IsWhole<N>>) extends true ? `${N}` : never
71
73
 
@@ -1,28 +1,27 @@
1
- import type { Head, PadLeft, Tail } from '../array'
2
- import type { And, Equal } from '../predicates'
3
- import type { Digit, DigitArray } from './Digit'
4
- import type { IsPositive } from './IsPositive'
5
- import type { IsWhole } from './IsWhole'
6
- import type { Max } from './Max'
1
+ import type { Head, PadLeft, Tail } from '../array/index.js'
2
+ import type { And, Equal, Or, Xor } from '../predicates/index.js'
3
+ import type { Digit, DigitArray } from './Digit.js'
4
+ import type { IsPositive } from './IsPositive.js'
5
+ import type { IsWhole } from './IsWhole.js'
6
+ import type { Max } from './Max.js'
7
7
 
8
8
  export type GreaterThan<A extends number, B extends number, Fail = never> =
9
- And<
10
- And<IsPositive<A>, IsWhole<A>>,
11
- And<IsPositive<B>, IsWhole<B>>
12
- > extends false ? Fail :
9
+ And<IsWhole<A>, IsWhole<B>> extends false ? Fail :
13
10
  number extends A ? Fail :
14
11
  number extends B ? Fail :
15
12
  Equal<A, B> extends true ? false :
16
- GreaterThan.OnPositiveWhole<A, B>
13
+ Xor<IsPositive<A>, IsPositive<B>> extends true ? IsPositive<A> :
14
+ Or<IsPositive<A>, IsPositive<B>> extends false ? GreaterThan.ForWholeNumber<B, A> :
15
+ GreaterThan.ForWholeNumber<A, B>
17
16
 
18
17
  export namespace GreaterThan {
19
- export type OnPositiveWhole<A extends number, B extends number> = (
20
- DigitArray.FromNumber<A> extends infer DA ? DA extends number[] ?
21
- DigitArray.FromNumber<B> extends infer DB ? DB extends number[] ?
18
+ export type ForWholeNumber<A extends number, B extends number> = (
19
+ DigitArray.FromNumberAbs<A> extends infer DA ? DA extends number[] ?
20
+ DigitArray.FromNumberAbs<B> extends infer DB ? DB extends number[] ?
22
21
  Max<DA['length'], DB['length']> extends infer M ? M extends number ?
23
22
  PadLeft<DA, M, 0> extends infer PDA ? PDA extends number[] ?
24
23
  PadLeft<DB, M, 0> extends infer PDB ? PDB extends number[] ?
25
- OnDigitArray<PDA, PDB>
24
+ ForDigitArray<PDA, PDB>
26
25
  : never : never
27
26
  : never : never
28
27
  : never : never
@@ -30,9 +29,9 @@ export namespace GreaterThan {
30
29
  : never : never
31
30
  )
32
31
 
33
- export type OnDigitArray<DA extends number[], DB extends number[]> = (
32
+ export type ForDigitArray<DA extends number[], DB extends number[]> = (
34
33
  Equal<Head<DA>, Head<DB>> extends true
35
- ? OnDigitArray<Tail<DA>, Tail<DB>>
34
+ ? ForDigitArray<Tail<DA>, Tail<DB>>
36
35
  : Digit.GreaterThan<Head<DA>, Head<DB>>
37
36
  )
38
37
  }
package/ts/math/Max.ts CHANGED
@@ -1,32 +1,8 @@
1
- import type { Head, Tail } from '../array'
2
- import type { And, Equal } from '../predicates'
3
- import type { Digit, DigitArray } from './Digit'
4
- import type { IsPositive } from './IsPositive'
5
- import type { IsWhole } from './IsWhole'
1
+ import type { Equal } from '../predicates/index.js'
2
+ import { GreaterThan } from './GreaterThan.js'
6
3
 
7
4
  export type Max<A extends number, B extends number, Fail = never> =
8
- And<IsPositive<A>, IsWhole<A>> extends false ? Fail :
9
- And<IsPositive<B>, IsWhole<B>> extends false ? Fail :
10
- number extends A ? Fail :
11
- number extends B ? Fail :
12
- Equal<A, B> extends true ? A :
13
- Max.OnPositiveWhole<A, B>
14
-
15
- export namespace Max {
16
- export type OnPositiveWhole<A extends number, B extends number> = (
17
- DigitArray.FromNumber<A> extends infer DA ? DA extends number[] ?
18
- DigitArray.FromNumber<B> extends infer DB ? DB extends number[] ?
19
- OnDigitArray<DA, DB> extends DA ? A : B
20
- : never : never
21
- : never : never
22
- )
23
-
24
- export type OnDigitArray<DA extends number[], DB extends number[]> =
25
- Equal<DA['length'], DB['length']> extends true
26
- ? (Equal<Head<DA>, Head<DB>> extends true
27
- ? (Tail<DA> extends infer TDA ? TDA extends number[] ?
28
- OnDigitArray<TDA, Tail<DB>> extends TDA ? DA : DB
29
- : never : never)
30
- : Digit.GreaterThan<Head<DA>, Head<DB>> extends true ? DA : DB)
31
- : OnPositiveWhole<DA['length'], DB['length']> extends DA['length'] ? DA : DB
32
- }
5
+ GreaterThan<A, B> extends infer Result ?
6
+ Equal<Result, never> extends true ? Fail :
7
+ Result extends true ? A : B
8
+ : never
@@ -1,10 +1,10 @@
1
- import type { PadLeft, Some, Tail } from '../array'
2
- import type { And } from '../predicates'
1
+ import type { PadLeft, Some, Tail } from '../array/index.js'
2
+ import type { And } from '../predicates/index.js'
3
3
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
- import type { Digit, DigitArray } from './Digit'
5
- import type { IsPositive } from './IsPositive'
6
- import type { IsWhole } from './IsWhole'
7
- import type { Max } from './Max'
4
+ import type { Digit, DigitArray } from './Digit.js'
5
+ import type { IsPositive } from './IsPositive.js'
6
+ import type { IsWhole } from './IsWhole.js'
7
+ import type { Max } from './Max.js'
8
8
 
9
9
  export type Subtract<A extends number, B extends number, Fail = never> =
10
10
  And<
package/ts/math/index.ts CHANGED
@@ -1,8 +1,8 @@
1
- export type { Abs } from './Abs'
2
- export type { Add, Increment } from './Add'
3
- export type { Digit, DigitArray } from './Digit'
4
- export type { GreaterThan } from './GreaterThan'
5
- export type { IsPositive } from './IsPositive'
6
- export type { IsWhole } from './IsWhole'
7
- export type { Max } from './Max'
8
- export type { Decrement, Subtract } from './Subtract'
1
+ export type { Abs } from './Abs.js'
2
+ export type { Add, Increment } from './Add.js'
3
+ export type { Digit, DigitArray } from './Digit.js'
4
+ export type { GreaterThan } from './GreaterThan.js'
5
+ export type { IsPositive } from './IsPositive.js'
6
+ export type { IsWhole } from './IsWhole.js'
7
+ export type { Max } from './Max.js'
8
+ export type { Decrement, Subtract } from './Subtract.js'
@@ -1 +1 @@
1
- export * from './isNodeError'
1
+ export * from './isNodeError.js'
@@ -1,8 +1,8 @@
1
1
  // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
2
  // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
3
 
4
- import { Widen } from '../utils'
5
- import { typeSym, valueSym } from './types'
4
+ import { Widen } from '../utils/index.js'
5
+ import { typeSym, valueSym } from './types.js'
6
6
 
7
7
  /**
8
8
  * Create a "branded" version of a type.
@@ -1,32 +1,32 @@
1
- // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
- // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
-
4
- import { Widen } from '../utils'
5
- import { typeSym } from './types'
6
-
7
- /**
8
- * Create a "flavored" version of a type.
9
- * TypeScript will disallow mixing flavors,
10
- * but will allow unflavored values of that type to be passed in where a flavored version is expected.
11
- * This is a less restrictive form of branding.
12
- */
13
- export type Flavor<F extends string, T> = T & {
14
- [typeSym]?: F
15
- }
16
-
17
- /**
18
- * Creates a brand creator with the specified type.
19
- */
20
- export function flavor<F extends string>(type: F): <T>(subject: T) => Flavor<F, Widen<T>>
21
- /**
22
- * Creates a branded value of specified type.
23
- */
24
- export function flavor<F extends string, T>(type: F, subject: T): Flavor<F, Widen<T>>
25
- export function flavor(type: string, subject?: unknown) {
26
- if (subject === undefined) return function <T>(subject: T) { return flavor(type, subject) }
27
- if (typeof subject === 'object' && subject !== null) {
28
- // if subject is not an object, the branding will exist only in type-level.
29
- (subject as { [typeSym]: string })[typeSym] = type
30
- }
31
- return subject
32
- }
1
+ // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
+ // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
+
4
+ import type { Widen } from '../utils/index.js'
5
+ import { typeSym } from './types.js'
6
+
7
+ /**
8
+ * Create a "flavored" version of a type.
9
+ * TypeScript will disallow mixing flavors,
10
+ * but will allow unflavored values of that type to be passed in where a flavored version is expected.
11
+ * This is a less restrictive form of branding.
12
+ */
13
+ export type Flavor<F extends string, T> = T & {
14
+ [typeSym]?: F
15
+ }
16
+
17
+ /**
18
+ * Creates a brand creator with the specified type.
19
+ */
20
+ export function flavor<F extends string>(type: F): <T>(subject: T) => Flavor<F, Widen<T>>
21
+ /**
22
+ * Creates a branded value of specified type.
23
+ */
24
+ export function flavor<F extends string, T>(type: F, subject: T): Flavor<F, Widen<T>>
25
+ export function flavor(type: string, subject?: unknown) {
26
+ if (subject === undefined) return function <T>(subject: T) { return flavor(type, subject) }
27
+ if (typeof subject === 'object' && subject !== null) {
28
+ // if subject is not an object, the branding will exist only in type-level.
29
+ (subject as { [typeSym]: string })[typeSym] = type
30
+ }
31
+ return subject
32
+ }
@@ -1,3 +1,3 @@
1
- export * from './Brand'
2
- export * from './Flavor'
3
- export * from './nominalMatch'
1
+ export * from './Brand.js'
2
+ export * from './Flavor.js'
3
+ export * from './nominalMatch.js'
@@ -1,6 +1,6 @@
1
- import { Brand } from './Brand'
2
- import { Flavor } from './Flavor'
3
- import { typeSym } from './types'
1
+ import type { Brand } from './Brand.js'
2
+ import type { Flavor } from './Flavor.js'
3
+ import { typeSym } from './types.js'
4
4
 
5
5
  export function nominalMatch<A extends string, B extends A>(a: Brand<A, unknown>, b: Brand<B, unknown>): boolean
6
6
  export function nominalMatch<A extends string, B extends A>(a: Flavor<A, unknown>, b: Flavor<B, unknown>): boolean