std-react-bindings 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +146 -0
  3. package/lib/bc/bc.d.ts +7 -0
  4. package/lib/bc/bc.d.ts.map +1 -0
  5. package/lib/bc/exports.d.ts +2 -0
  6. package/lib/bc/exports.d.ts.map +1 -0
  7. package/lib/binding/exports.d.ts +4 -0
  8. package/lib/binding/exports.d.ts.map +1 -0
  9. package/lib/binding/internal/DoubleLinkedList/index.d.ts +25 -0
  10. package/lib/binding/internal/DoubleLinkedList/index.d.ts.map +1 -0
  11. package/lib/binding/internal/binding-impl.d.ts +60 -0
  12. package/lib/binding/internal/binding-impl.d.ts.map +1 -0
  13. package/lib/binding/internal/consts.d.ts +3 -0
  14. package/lib/binding/internal/consts.d.ts.map +1 -0
  15. package/lib/binding/make-binding.d.ts +7 -0
  16. package/lib/binding/make-binding.d.ts.map +1 -0
  17. package/lib/binding/types/binding-args.d.ts +44 -0
  18. package/lib/binding/types/binding-args.d.ts.map +1 -0
  19. package/lib/binding/types/binding-dependencies.d.ts +5 -0
  20. package/lib/binding/types/binding-dependencies.d.ts.map +1 -0
  21. package/lib/binding/types/binding-initializer.d.ts +3 -0
  22. package/lib/binding/types/binding-initializer.d.ts.map +1 -0
  23. package/lib/binding/types/binding.d.ts +22 -0
  24. package/lib/binding/types/binding.d.ts.map +1 -0
  25. package/lib/binding/types/change-listener.d.ts +5 -0
  26. package/lib/binding/types/change-listener.d.ts.map +1 -0
  27. package/lib/binding/types/exports.d.ts +12 -0
  28. package/lib/binding/types/exports.d.ts.map +1 -0
  29. package/lib/binding/types/infer-binding-value-types.d.ts +8 -0
  30. package/lib/binding/types/infer-binding-value-types.d.ts.map +1 -0
  31. package/lib/binding/types/infer-bindings-array-value-types.d.ts +8 -0
  32. package/lib/binding/types/infer-bindings-array-value-types.d.ts.map +1 -0
  33. package/lib/binding/types/infer-named-binding-value-types.d.ts +8 -0
  34. package/lib/binding/types/infer-named-binding-value-types.d.ts.map +1 -0
  35. package/lib/binding/types/inference.d.ts +4 -0
  36. package/lib/binding/types/inference.d.ts.map +1 -0
  37. package/lib/binding/types/readonly-binding.d.ts +35 -0
  38. package/lib/binding/types/readonly-binding.d.ts.map +1 -0
  39. package/lib/binding/types/set-value-transformer.d.ts +11 -0
  40. package/lib/binding/types/set-value-transformer.d.ts.map +1 -0
  41. package/lib/binding/use-binding.d.ts +7 -0
  42. package/lib/binding/use-binding.d.ts.map +1 -0
  43. package/lib/binding-utils/exports.d.ts +4 -0
  44. package/lib/binding-utils/exports.d.ts.map +1 -0
  45. package/lib/binding-utils/internal/make-value-then-do.d.ts +6 -0
  46. package/lib/binding-utils/internal/make-value-then-do.d.ts.map +1 -0
  47. package/lib/binding-utils/lock-utils.d.ts +27 -0
  48. package/lib/binding-utils/lock-utils.d.ts.map +1 -0
  49. package/lib/binding-utils/modified-utils.d.ts +18 -0
  50. package/lib/binding-utils/modified-utils.d.ts.map +1 -0
  51. package/lib/binding-utils/type-utils.d.ts +6 -0
  52. package/lib/binding-utils/type-utils.d.ts.map +1 -0
  53. package/lib/cjs/bc/bc.js +13 -0
  54. package/lib/cjs/bc/bc.js.map +1 -0
  55. package/lib/cjs/bc/exports.js +18 -0
  56. package/lib/cjs/bc/exports.js.map +1 -0
  57. package/lib/cjs/binding/exports.js +20 -0
  58. package/lib/cjs/binding/exports.js.map +1 -0
  59. package/lib/cjs/binding/internal/DoubleLinkedList/index.js +110 -0
  60. package/lib/cjs/binding/internal/DoubleLinkedList/index.js.map +1 -0
  61. package/lib/cjs/binding/internal/binding-impl.js +181 -0
  62. package/lib/cjs/binding/internal/binding-impl.js.map +1 -0
  63. package/lib/cjs/binding/internal/consts.js +6 -0
  64. package/lib/cjs/binding/internal/consts.js.map +1 -0
  65. package/lib/cjs/binding/make-binding.js +22 -0
  66. package/lib/cjs/binding/make-binding.js.map +1 -0
  67. package/lib/cjs/binding/types/binding-args.js +3 -0
  68. package/lib/cjs/binding/types/binding-args.js.map +1 -0
  69. package/lib/cjs/binding/types/binding-dependencies.js +3 -0
  70. package/lib/cjs/binding/types/binding-dependencies.js.map +1 -0
  71. package/lib/cjs/binding/types/binding-initializer.js +3 -0
  72. package/lib/cjs/binding/types/binding-initializer.js.map +1 -0
  73. package/lib/cjs/binding/types/binding.js +3 -0
  74. package/lib/cjs/binding/types/binding.js.map +1 -0
  75. package/lib/cjs/binding/types/change-listener.js +3 -0
  76. package/lib/cjs/binding/types/change-listener.js.map +1 -0
  77. package/lib/cjs/binding/types/exports.js +28 -0
  78. package/lib/cjs/binding/types/exports.js.map +1 -0
  79. package/lib/cjs/binding/types/infer-binding-value-types.js +3 -0
  80. package/lib/cjs/binding/types/infer-binding-value-types.js.map +1 -0
  81. package/lib/cjs/binding/types/infer-bindings-array-value-types.js +3 -0
  82. package/lib/cjs/binding/types/infer-bindings-array-value-types.js.map +1 -0
  83. package/lib/cjs/binding/types/infer-named-binding-value-types.js +3 -0
  84. package/lib/cjs/binding/types/infer-named-binding-value-types.js.map +1 -0
  85. package/lib/cjs/binding/types/inference.js +3 -0
  86. package/lib/cjs/binding/types/inference.js.map +1 -0
  87. package/lib/cjs/binding/types/readonly-binding.js +3 -0
  88. package/lib/cjs/binding/types/readonly-binding.js.map +1 -0
  89. package/lib/cjs/binding/types/set-value-transformer.js +3 -0
  90. package/lib/cjs/binding/types/set-value-transformer.js.map +1 -0
  91. package/lib/cjs/binding/use-binding.js +10 -0
  92. package/lib/cjs/binding/use-binding.js.map +1 -0
  93. package/lib/cjs/binding-utils/exports.js +20 -0
  94. package/lib/cjs/binding-utils/exports.js.map +1 -0
  95. package/lib/cjs/binding-utils/internal/make-value-then-do.js +55 -0
  96. package/lib/cjs/binding-utils/internal/make-value-then-do.js.map +1 -0
  97. package/lib/cjs/binding-utils/lock-utils.js +51 -0
  98. package/lib/cjs/binding-utils/lock-utils.js.map +1 -0
  99. package/lib/cjs/binding-utils/modified-utils.js +33 -0
  100. package/lib/cjs/binding-utils/modified-utils.js.map +1 -0
  101. package/lib/cjs/binding-utils/type-utils.js +12 -0
  102. package/lib/cjs/binding-utils/type-utils.js.map +1 -0
  103. package/lib/cjs/components/BindingsConsumer/index.js +75 -0
  104. package/lib/cjs/components/BindingsConsumer/index.js.map +1 -0
  105. package/lib/cjs/components/BindingsConsumer/internal/Refreshable.js +48 -0
  106. package/lib/cjs/components/BindingsConsumer/internal/Refreshable.js.map +1 -0
  107. package/lib/cjs/components/BindingsConsumer/types/exports.js +19 -0
  108. package/lib/cjs/components/BindingsConsumer/types/exports.js.map +1 -0
  109. package/lib/cjs/components/BindingsConsumer/types/props.js +3 -0
  110. package/lib/cjs/components/BindingsConsumer/types/props.js.map +1 -0
  111. package/lib/cjs/components/BindingsConsumer/types/render-callback.js +3 -0
  112. package/lib/cjs/components/BindingsConsumer/types/render-callback.js.map +1 -0
  113. package/lib/cjs/components/exports.js +18 -0
  114. package/lib/cjs/components/exports.js.map +1 -0
  115. package/lib/cjs/config/are-equal.js +21 -0
  116. package/lib/cjs/config/are-equal.js.map +1 -0
  117. package/lib/cjs/config/exports.js +21 -0
  118. package/lib/cjs/config/exports.js.map +1 -0
  119. package/lib/cjs/config/logging.js +23 -0
  120. package/lib/cjs/config/logging.js.map +1 -0
  121. package/lib/cjs/config/stats-handler.js +14 -0
  122. package/lib/cjs/config/stats-handler.js.map +1 -0
  123. package/lib/cjs/default-queue/default-queue-context.js +63 -0
  124. package/lib/cjs/default-queue/default-queue-context.js.map +1 -0
  125. package/lib/cjs/default-queue/exports.js +18 -0
  126. package/lib/cjs/default-queue/exports.js.map +1 -0
  127. package/lib/cjs/index.js +31 -0
  128. package/lib/cjs/index.js.map +1 -0
  129. package/lib/cjs/internal-hooks/use-is-mounted-ref.js +17 -0
  130. package/lib/cjs/internal-hooks/use-is-mounted-ref.js.map +1 -0
  131. package/lib/cjs/internal-utils/array-like.js +32 -0
  132. package/lib/cjs/internal-utils/array-like.js.map +1 -0
  133. package/lib/cjs/internal-utils/extract-binding-dependency-values.js +34 -0
  134. package/lib/cjs/internal-utils/extract-binding-dependency-values.js.map +1 -0
  135. package/lib/cjs/internal-utils/get-typed-keys.js +11 -0
  136. package/lib/cjs/internal-utils/get-typed-keys.js.map +1 -0
  137. package/lib/cjs/internal-utils/uid.js +8 -0
  138. package/lib/cjs/internal-utils/uid.js.map +1 -0
  139. package/lib/cjs/limiter/exports.js +21 -0
  140. package/lib/cjs/limiter/exports.js.map +1 -0
  141. package/lib/cjs/limiter/internal/LimiterImpl.js +49 -0
  142. package/lib/cjs/limiter/internal/LimiterImpl.js.map +1 -0
  143. package/lib/cjs/limiter/make-limiter.js +8 -0
  144. package/lib/cjs/limiter/make-limiter.js.map +1 -0
  145. package/lib/cjs/limiter/pick-limiter-options.js +12 -0
  146. package/lib/cjs/limiter/pick-limiter-options.js.map +1 -0
  147. package/lib/cjs/limiter/types/LimitMode.js +3 -0
  148. package/lib/cjs/limiter/types/LimitMode.js.map +1 -0
  149. package/lib/cjs/limiter/types/LimitType.js +3 -0
  150. package/lib/cjs/limiter/types/LimitType.js.map +1 -0
  151. package/lib/cjs/limiter/types/Limiter.js +3 -0
  152. package/lib/cjs/limiter/types/Limiter.js.map +1 -0
  153. package/lib/cjs/limiter/types/LimiterOptions.js +3 -0
  154. package/lib/cjs/limiter/types/LimiterOptions.js.map +1 -0
  155. package/lib/cjs/limiter/types/exports.js +21 -0
  156. package/lib/cjs/limiter/types/exports.js.map +1 -0
  157. package/lib/cjs/limiter/use-limiter.js +26 -0
  158. package/lib/cjs/limiter/use-limiter.js.map +1 -0
  159. package/lib/cjs/make-bindable-component/exports.js +19 -0
  160. package/lib/cjs/make-bindable-component/exports.js.map +1 -0
  161. package/lib/cjs/make-bindable-component/make-bindable-component.js +43 -0
  162. package/lib/cjs/make-bindable-component/make-bindable-component.js.map +1 -0
  163. package/lib/cjs/make-bindable-component/types/exports.js +19 -0
  164. package/lib/cjs/make-bindable-component/types/exports.js.map +1 -0
  165. package/lib/cjs/make-bindable-component/types/make-bindable-component-options.js +3 -0
  166. package/lib/cjs/make-bindable-component/types/make-bindable-component-options.js.map +1 -0
  167. package/lib/cjs/make-bindable-component/types/upgrade-to-binding-props.js +3 -0
  168. package/lib/cjs/make-bindable-component/types/upgrade-to-binding-props.js.map +1 -0
  169. package/lib/cjs/resolveable/exports.js +19 -0
  170. package/lib/cjs/resolveable/exports.js.map +1 -0
  171. package/lib/cjs/resolveable/types.js +3 -0
  172. package/lib/cjs/resolveable/types.js.map +1 -0
  173. package/lib/cjs/resolveable/utils.js +17 -0
  174. package/lib/cjs/resolveable/utils.js.map +1 -0
  175. package/lib/cjs/specialized-bindings/const-binding.js +16 -0
  176. package/lib/cjs/specialized-bindings/const-binding.js.map +1 -0
  177. package/lib/cjs/specialized-bindings/derived-binding/exports.js +19 -0
  178. package/lib/cjs/specialized-bindings/derived-binding/exports.js.map +1 -0
  179. package/lib/cjs/specialized-bindings/derived-binding/options.js +3 -0
  180. package/lib/cjs/specialized-bindings/derived-binding/options.js.map +1 -0
  181. package/lib/cjs/specialized-bindings/derived-binding/use-derived-binding.js +44 -0
  182. package/lib/cjs/specialized-bindings/derived-binding/use-derived-binding.js.map +1 -0
  183. package/lib/cjs/specialized-bindings/exports.js +21 -0
  184. package/lib/cjs/specialized-bindings/exports.js.map +1 -0
  185. package/lib/cjs/specialized-bindings/flattened-binding.js +59 -0
  186. package/lib/cjs/specialized-bindings/flattened-binding.js.map +1 -0
  187. package/lib/cjs/specialized-bindings/transient-derived-binding/exports.js +20 -0
  188. package/lib/cjs/specialized-bindings/transient-derived-binding/exports.js.map +1 -0
  189. package/lib/cjs/specialized-bindings/transient-derived-binding/make-transient-derived-binding.js +53 -0
  190. package/lib/cjs/specialized-bindings/transient-derived-binding/make-transient-derived-binding.js.map +1 -0
  191. package/lib/cjs/specialized-bindings/transient-derived-binding/types/exports.js +18 -0
  192. package/lib/cjs/specialized-bindings/transient-derived-binding/types/exports.js.map +1 -0
  193. package/lib/cjs/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.js +3 -0
  194. package/lib/cjs/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.js.map +1 -0
  195. package/lib/cjs/specialized-bindings/transient-derived-binding/use-transient-derived-binding.js +18 -0
  196. package/lib/cjs/specialized-bindings/transient-derived-binding/use-transient-derived-binding.js.map +1 -0
  197. package/lib/cjs/synchronization/exports.js +20 -0
  198. package/lib/cjs/synchronization/exports.js.map +1 -0
  199. package/lib/cjs/synchronization/types/exports.js +18 -0
  200. package/lib/cjs/synchronization/types/exports.js.map +1 -0
  201. package/lib/cjs/synchronization/types/options.js +3 -0
  202. package/lib/cjs/synchronization/types/options.js.map +1 -0
  203. package/lib/cjs/synchronization/use-bi-dir-binding-sync.js +16 -0
  204. package/lib/cjs/synchronization/use-bi-dir-binding-sync.js.map +1 -0
  205. package/lib/cjs/synchronization/use-uni-dir-binding-sync.js +10 -0
  206. package/lib/cjs/synchronization/use-uni-dir-binding-sync.js.map +1 -0
  207. package/lib/cjs/types/array-like.js +3 -0
  208. package/lib/cjs/types/array-like.js.map +1 -0
  209. package/lib/cjs/types/empty.js +3 -0
  210. package/lib/cjs/types/empty.js.map +1 -0
  211. package/lib/cjs/types/exports.js +19 -0
  212. package/lib/cjs/types/exports.js.map +1 -0
  213. package/lib/cjs/use-binding-effect/exports.js +19 -0
  214. package/lib/cjs/use-binding-effect/exports.js.map +1 -0
  215. package/lib/cjs/use-binding-effect/types/exports.js +18 -0
  216. package/lib/cjs/use-binding-effect/types/exports.js.map +1 -0
  217. package/lib/cjs/use-binding-effect/types/options.js +3 -0
  218. package/lib/cjs/use-binding-effect/types/options.js.map +1 -0
  219. package/lib/cjs/use-binding-effect/use-binding-effect.js +145 -0
  220. package/lib/cjs/use-binding-effect/use-binding-effect.js.map +1 -0
  221. package/lib/cjs/utility-hooks/exports.js +19 -0
  222. package/lib/cjs/utility-hooks/exports.js.map +1 -0
  223. package/lib/cjs/utility-hooks/use-callback-ref.js +38 -0
  224. package/lib/cjs/utility-hooks/use-callback-ref.js.map +1 -0
  225. package/lib/cjs/utility-hooks/use-stable-value.js +18 -0
  226. package/lib/cjs/utility-hooks/use-stable-value.js.map +1 -0
  227. package/lib/components/BindingsConsumer/index.d.ts +27 -0
  228. package/lib/components/BindingsConsumer/index.d.ts.map +1 -0
  229. package/lib/components/BindingsConsumer/internal/Refreshable.d.ts +16 -0
  230. package/lib/components/BindingsConsumer/internal/Refreshable.d.ts.map +1 -0
  231. package/lib/components/BindingsConsumer/types/exports.d.ts +3 -0
  232. package/lib/components/BindingsConsumer/types/exports.d.ts.map +1 -0
  233. package/lib/components/BindingsConsumer/types/props.d.ts +29 -0
  234. package/lib/components/BindingsConsumer/types/props.d.ts.map +1 -0
  235. package/lib/components/BindingsConsumer/types/render-callback.d.ts +11 -0
  236. package/lib/components/BindingsConsumer/types/render-callback.d.ts.map +1 -0
  237. package/lib/components/exports.d.ts +2 -0
  238. package/lib/components/exports.d.ts.map +1 -0
  239. package/lib/config/are-equal.d.ts +7 -0
  240. package/lib/config/are-equal.d.ts.map +1 -0
  241. package/lib/config/exports.d.ts +4 -0
  242. package/lib/config/exports.d.ts.map +1 -0
  243. package/lib/config/logging.d.ts +17 -0
  244. package/lib/config/logging.d.ts.map +1 -0
  245. package/lib/config/stats-handler.d.ts +26 -0
  246. package/lib/config/stats-handler.d.ts.map +1 -0
  247. package/lib/default-queue/default-queue-context.d.ts +19 -0
  248. package/lib/default-queue/default-queue-context.d.ts.map +1 -0
  249. package/lib/default-queue/exports.d.ts +2 -0
  250. package/lib/default-queue/exports.d.ts.map +1 -0
  251. package/lib/index.d.ts +15 -0
  252. package/lib/index.d.ts.map +1 -0
  253. package/lib/internal-hooks/use-is-mounted-ref.d.ts +4 -0
  254. package/lib/internal-hooks/use-is-mounted-ref.d.ts.map +1 -0
  255. package/lib/internal-utils/array-like.d.ts +11 -0
  256. package/lib/internal-utils/array-like.d.ts.map +1 -0
  257. package/lib/internal-utils/extract-binding-dependency-values.d.ts +7 -0
  258. package/lib/internal-utils/extract-binding-dependency-values.d.ts.map +1 -0
  259. package/lib/internal-utils/get-typed-keys.d.ts +7 -0
  260. package/lib/internal-utils/get-typed-keys.d.ts.map +1 -0
  261. package/lib/internal-utils/uid.d.ts +3 -0
  262. package/lib/internal-utils/uid.d.ts.map +1 -0
  263. package/lib/limiter/exports.d.ts +5 -0
  264. package/lib/limiter/exports.d.ts.map +1 -0
  265. package/lib/limiter/internal/LimiterImpl.d.ts +15 -0
  266. package/lib/limiter/internal/LimiterImpl.d.ts.map +1 -0
  267. package/lib/limiter/make-limiter.d.ts +9 -0
  268. package/lib/limiter/make-limiter.d.ts.map +1 -0
  269. package/lib/limiter/pick-limiter-options.d.ts +3 -0
  270. package/lib/limiter/pick-limiter-options.d.ts.map +1 -0
  271. package/lib/limiter/types/LimitMode.d.ts +7 -0
  272. package/lib/limiter/types/LimitMode.d.ts.map +1 -0
  273. package/lib/limiter/types/LimitType.d.ts +32 -0
  274. package/lib/limiter/types/LimitType.d.ts.map +1 -0
  275. package/lib/limiter/types/Limiter.d.ts +9 -0
  276. package/lib/limiter/types/Limiter.d.ts.map +1 -0
  277. package/lib/limiter/types/LimiterOptions.d.ts +36 -0
  278. package/lib/limiter/types/LimiterOptions.d.ts.map +1 -0
  279. package/lib/limiter/types/exports.d.ts +5 -0
  280. package/lib/limiter/types/exports.d.ts.map +1 -0
  281. package/lib/limiter/use-limiter.d.ts +14 -0
  282. package/lib/limiter/use-limiter.d.ts.map +1 -0
  283. package/lib/make-bindable-component/exports.d.ts +3 -0
  284. package/lib/make-bindable-component/exports.d.ts.map +1 -0
  285. package/lib/make-bindable-component/make-bindable-component.d.ts +16 -0
  286. package/lib/make-bindable-component/make-bindable-component.d.ts.map +1 -0
  287. package/lib/make-bindable-component/types/exports.d.ts +3 -0
  288. package/lib/make-bindable-component/types/exports.d.ts.map +1 -0
  289. package/lib/make-bindable-component/types/make-bindable-component-options.d.ts +6 -0
  290. package/lib/make-bindable-component/types/make-bindable-component-options.d.ts.map +1 -0
  291. package/lib/make-bindable-component/types/upgrade-to-binding-props.d.ts +5 -0
  292. package/lib/make-bindable-component/types/upgrade-to-binding-props.d.ts.map +1 -0
  293. package/lib/mjs/bc/bc.js +6 -0
  294. package/lib/mjs/bc/bc.js.map +1 -0
  295. package/lib/mjs/bc/exports.js +2 -0
  296. package/lib/mjs/bc/exports.js.map +1 -0
  297. package/lib/mjs/binding/exports.js +4 -0
  298. package/lib/mjs/binding/exports.js.map +1 -0
  299. package/lib/mjs/binding/internal/DoubleLinkedList/index.js +105 -0
  300. package/lib/mjs/binding/internal/DoubleLinkedList/index.js.map +1 -0
  301. package/lib/mjs/binding/internal/binding-impl.js +177 -0
  302. package/lib/mjs/binding/internal/binding-impl.js.map +1 -0
  303. package/lib/mjs/binding/internal/consts.js +3 -0
  304. package/lib/mjs/binding/internal/consts.js.map +1 -0
  305. package/lib/mjs/binding/make-binding.js +18 -0
  306. package/lib/mjs/binding/make-binding.js.map +1 -0
  307. package/lib/mjs/binding/types/binding-args.js +2 -0
  308. package/lib/mjs/binding/types/binding-args.js.map +1 -0
  309. package/lib/mjs/binding/types/binding-dependencies.js +2 -0
  310. package/lib/mjs/binding/types/binding-dependencies.js.map +1 -0
  311. package/lib/mjs/binding/types/binding-initializer.js +2 -0
  312. package/lib/mjs/binding/types/binding-initializer.js.map +1 -0
  313. package/lib/mjs/binding/types/binding.js +2 -0
  314. package/lib/mjs/binding/types/binding.js.map +1 -0
  315. package/lib/mjs/binding/types/change-listener.js +2 -0
  316. package/lib/mjs/binding/types/change-listener.js.map +1 -0
  317. package/lib/mjs/binding/types/exports.js +12 -0
  318. package/lib/mjs/binding/types/exports.js.map +1 -0
  319. package/lib/mjs/binding/types/infer-binding-value-types.js +2 -0
  320. package/lib/mjs/binding/types/infer-binding-value-types.js.map +1 -0
  321. package/lib/mjs/binding/types/infer-bindings-array-value-types.js +2 -0
  322. package/lib/mjs/binding/types/infer-bindings-array-value-types.js.map +1 -0
  323. package/lib/mjs/binding/types/infer-named-binding-value-types.js +2 -0
  324. package/lib/mjs/binding/types/infer-named-binding-value-types.js.map +1 -0
  325. package/lib/mjs/binding/types/inference.js +2 -0
  326. package/lib/mjs/binding/types/inference.js.map +1 -0
  327. package/lib/mjs/binding/types/readonly-binding.js +2 -0
  328. package/lib/mjs/binding/types/readonly-binding.js.map +1 -0
  329. package/lib/mjs/binding/types/set-value-transformer.js +2 -0
  330. package/lib/mjs/binding/types/set-value-transformer.js.map +1 -0
  331. package/lib/mjs/binding/use-binding.js +6 -0
  332. package/lib/mjs/binding/use-binding.js.map +1 -0
  333. package/lib/mjs/binding-utils/exports.js +4 -0
  334. package/lib/mjs/binding-utils/exports.js.map +1 -0
  335. package/lib/mjs/binding-utils/internal/make-value-then-do.js +48 -0
  336. package/lib/mjs/binding-utils/internal/make-value-then-do.js.map +1 -0
  337. package/lib/mjs/binding-utils/lock-utils.js +45 -0
  338. package/lib/mjs/binding-utils/lock-utils.js.map +1 -0
  339. package/lib/mjs/binding-utils/modified-utils.js +28 -0
  340. package/lib/mjs/binding-utils/modified-utils.js.map +1 -0
  341. package/lib/mjs/binding-utils/type-utils.js +7 -0
  342. package/lib/mjs/binding-utils/type-utils.js.map +1 -0
  343. package/lib/mjs/components/BindingsConsumer/index.js +45 -0
  344. package/lib/mjs/components/BindingsConsumer/index.js.map +1 -0
  345. package/lib/mjs/components/BindingsConsumer/internal/Refreshable.js +18 -0
  346. package/lib/mjs/components/BindingsConsumer/internal/Refreshable.js.map +1 -0
  347. package/lib/mjs/components/BindingsConsumer/types/exports.js +3 -0
  348. package/lib/mjs/components/BindingsConsumer/types/exports.js.map +1 -0
  349. package/lib/mjs/components/BindingsConsumer/types/props.js +2 -0
  350. package/lib/mjs/components/BindingsConsumer/types/props.js.map +1 -0
  351. package/lib/mjs/components/BindingsConsumer/types/render-callback.js +2 -0
  352. package/lib/mjs/components/BindingsConsumer/types/render-callback.js.map +1 -0
  353. package/lib/mjs/components/exports.js +2 -0
  354. package/lib/mjs/components/exports.js.map +1 -0
  355. package/lib/mjs/config/are-equal.js +12 -0
  356. package/lib/mjs/config/are-equal.js.map +1 -0
  357. package/lib/mjs/config/exports.js +5 -0
  358. package/lib/mjs/config/exports.js.map +1 -0
  359. package/lib/mjs/config/logging.js +16 -0
  360. package/lib/mjs/config/logging.js.map +1 -0
  361. package/lib/mjs/config/stats-handler.js +9 -0
  362. package/lib/mjs/config/stats-handler.js.map +1 -0
  363. package/lib/mjs/default-queue/default-queue-context.js +35 -0
  364. package/lib/mjs/default-queue/default-queue-context.js.map +1 -0
  365. package/lib/mjs/default-queue/exports.js +2 -0
  366. package/lib/mjs/default-queue/exports.js.map +1 -0
  367. package/lib/mjs/index.js +15 -0
  368. package/lib/mjs/index.js.map +1 -0
  369. package/lib/mjs/internal-hooks/use-is-mounted-ref.js +13 -0
  370. package/lib/mjs/internal-hooks/use-is-mounted-ref.js.map +1 -0
  371. package/lib/mjs/internal-utils/array-like.js +26 -0
  372. package/lib/mjs/internal-utils/array-like.js.map +1 -0
  373. package/lib/mjs/internal-utils/extract-binding-dependency-values.js +30 -0
  374. package/lib/mjs/internal-utils/extract-binding-dependency-values.js.map +1 -0
  375. package/lib/mjs/internal-utils/get-typed-keys.js +7 -0
  376. package/lib/mjs/internal-utils/get-typed-keys.js.map +1 -0
  377. package/lib/mjs/internal-utils/uid.js +4 -0
  378. package/lib/mjs/internal-utils/uid.js.map +1 -0
  379. package/lib/mjs/limiter/exports.js +5 -0
  380. package/lib/mjs/limiter/exports.js.map +1 -0
  381. package/lib/mjs/limiter/internal/LimiterImpl.js +42 -0
  382. package/lib/mjs/limiter/internal/LimiterImpl.js.map +1 -0
  383. package/lib/mjs/limiter/make-limiter.js +4 -0
  384. package/lib/mjs/limiter/make-limiter.js.map +1 -0
  385. package/lib/mjs/limiter/pick-limiter-options.js +8 -0
  386. package/lib/mjs/limiter/pick-limiter-options.js.map +1 -0
  387. package/lib/mjs/limiter/types/LimitMode.js +2 -0
  388. package/lib/mjs/limiter/types/LimitMode.js.map +1 -0
  389. package/lib/mjs/limiter/types/LimitType.js +2 -0
  390. package/lib/mjs/limiter/types/LimitType.js.map +1 -0
  391. package/lib/mjs/limiter/types/Limiter.js +2 -0
  392. package/lib/mjs/limiter/types/Limiter.js.map +1 -0
  393. package/lib/mjs/limiter/types/LimiterOptions.js +2 -0
  394. package/lib/mjs/limiter/types/LimiterOptions.js.map +1 -0
  395. package/lib/mjs/limiter/types/exports.js +5 -0
  396. package/lib/mjs/limiter/types/exports.js.map +1 -0
  397. package/lib/mjs/limiter/use-limiter.js +22 -0
  398. package/lib/mjs/limiter/use-limiter.js.map +1 -0
  399. package/lib/mjs/make-bindable-component/exports.js +3 -0
  400. package/lib/mjs/make-bindable-component/exports.js.map +1 -0
  401. package/lib/mjs/make-bindable-component/make-bindable-component.js +36 -0
  402. package/lib/mjs/make-bindable-component/make-bindable-component.js.map +1 -0
  403. package/lib/mjs/make-bindable-component/types/exports.js +3 -0
  404. package/lib/mjs/make-bindable-component/types/exports.js.map +1 -0
  405. package/lib/mjs/make-bindable-component/types/make-bindable-component-options.js +2 -0
  406. package/lib/mjs/make-bindable-component/types/make-bindable-component-options.js.map +1 -0
  407. package/lib/mjs/make-bindable-component/types/upgrade-to-binding-props.js +2 -0
  408. package/lib/mjs/make-bindable-component/types/upgrade-to-binding-props.js.map +1 -0
  409. package/lib/mjs/resolveable/exports.js +3 -0
  410. package/lib/mjs/resolveable/exports.js.map +1 -0
  411. package/lib/mjs/resolveable/types.js +2 -0
  412. package/lib/mjs/resolveable/types.js.map +1 -0
  413. package/lib/mjs/resolveable/utils.js +10 -0
  414. package/lib/mjs/resolveable/utils.js.map +1 -0
  415. package/lib/mjs/specialized-bindings/const-binding.js +11 -0
  416. package/lib/mjs/specialized-bindings/const-binding.js.map +1 -0
  417. package/lib/mjs/specialized-bindings/derived-binding/exports.js +3 -0
  418. package/lib/mjs/specialized-bindings/derived-binding/exports.js.map +1 -0
  419. package/lib/mjs/specialized-bindings/derived-binding/options.js +2 -0
  420. package/lib/mjs/specialized-bindings/derived-binding/options.js.map +1 -0
  421. package/lib/mjs/specialized-bindings/derived-binding/use-derived-binding.js +40 -0
  422. package/lib/mjs/specialized-bindings/derived-binding/use-derived-binding.js.map +1 -0
  423. package/lib/mjs/specialized-bindings/exports.js +5 -0
  424. package/lib/mjs/specialized-bindings/exports.js.map +1 -0
  425. package/lib/mjs/specialized-bindings/flattened-binding.js +55 -0
  426. package/lib/mjs/specialized-bindings/flattened-binding.js.map +1 -0
  427. package/lib/mjs/specialized-bindings/transient-derived-binding/exports.js +4 -0
  428. package/lib/mjs/specialized-bindings/transient-derived-binding/exports.js.map +1 -0
  429. package/lib/mjs/specialized-bindings/transient-derived-binding/make-transient-derived-binding.js +49 -0
  430. package/lib/mjs/specialized-bindings/transient-derived-binding/make-transient-derived-binding.js.map +1 -0
  431. package/lib/mjs/specialized-bindings/transient-derived-binding/types/exports.js +2 -0
  432. package/lib/mjs/specialized-bindings/transient-derived-binding/types/exports.js.map +1 -0
  433. package/lib/mjs/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.js +2 -0
  434. package/lib/mjs/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.js.map +1 -0
  435. package/lib/mjs/specialized-bindings/transient-derived-binding/use-transient-derived-binding.js +14 -0
  436. package/lib/mjs/specialized-bindings/transient-derived-binding/use-transient-derived-binding.js.map +1 -0
  437. package/lib/mjs/synchronization/exports.js +4 -0
  438. package/lib/mjs/synchronization/exports.js.map +1 -0
  439. package/lib/mjs/synchronization/types/exports.js +2 -0
  440. package/lib/mjs/synchronization/types/exports.js.map +1 -0
  441. package/lib/mjs/synchronization/types/options.js +2 -0
  442. package/lib/mjs/synchronization/types/options.js.map +1 -0
  443. package/lib/mjs/synchronization/use-bi-dir-binding-sync.js +12 -0
  444. package/lib/mjs/synchronization/use-bi-dir-binding-sync.js.map +1 -0
  445. package/lib/mjs/synchronization/use-uni-dir-binding-sync.js +6 -0
  446. package/lib/mjs/synchronization/use-uni-dir-binding-sync.js.map +1 -0
  447. package/lib/mjs/types/array-like.js +2 -0
  448. package/lib/mjs/types/array-like.js.map +1 -0
  449. package/lib/mjs/types/empty.js +2 -0
  450. package/lib/mjs/types/empty.js.map +1 -0
  451. package/lib/mjs/types/exports.js +3 -0
  452. package/lib/mjs/types/exports.js.map +1 -0
  453. package/lib/mjs/use-binding-effect/exports.js +3 -0
  454. package/lib/mjs/use-binding-effect/exports.js.map +1 -0
  455. package/lib/mjs/use-binding-effect/types/exports.js +2 -0
  456. package/lib/mjs/use-binding-effect/types/exports.js.map +1 -0
  457. package/lib/mjs/use-binding-effect/types/options.js +2 -0
  458. package/lib/mjs/use-binding-effect/types/options.js.map +1 -0
  459. package/lib/mjs/use-binding-effect/use-binding-effect.js +141 -0
  460. package/lib/mjs/use-binding-effect/use-binding-effect.js.map +1 -0
  461. package/lib/mjs/utility-hooks/exports.js +3 -0
  462. package/lib/mjs/utility-hooks/exports.js.map +1 -0
  463. package/lib/mjs/utility-hooks/use-callback-ref.js +11 -0
  464. package/lib/mjs/utility-hooks/use-callback-ref.js.map +1 -0
  465. package/lib/mjs/utility-hooks/use-stable-value.js +14 -0
  466. package/lib/mjs/utility-hooks/use-stable-value.js.map +1 -0
  467. package/lib/resolveable/exports.d.ts +3 -0
  468. package/lib/resolveable/exports.d.ts.map +1 -0
  469. package/lib/resolveable/types.d.ts +10 -0
  470. package/lib/resolveable/types.d.ts.map +1 -0
  471. package/lib/resolveable/utils.d.ts +10 -0
  472. package/lib/resolveable/utils.d.ts.map +1 -0
  473. package/lib/specialized-bindings/const-binding.d.ts +10 -0
  474. package/lib/specialized-bindings/const-binding.d.ts.map +1 -0
  475. package/lib/specialized-bindings/derived-binding/exports.d.ts +3 -0
  476. package/lib/specialized-bindings/derived-binding/exports.d.ts.map +1 -0
  477. package/lib/specialized-bindings/derived-binding/options.d.ts +52 -0
  478. package/lib/specialized-bindings/derived-binding/options.d.ts.map +1 -0
  479. package/lib/specialized-bindings/derived-binding/use-derived-binding.d.ts +16 -0
  480. package/lib/specialized-bindings/derived-binding/use-derived-binding.d.ts.map +1 -0
  481. package/lib/specialized-bindings/exports.d.ts +5 -0
  482. package/lib/specialized-bindings/exports.d.ts.map +1 -0
  483. package/lib/specialized-bindings/flattened-binding.d.ts +16 -0
  484. package/lib/specialized-bindings/flattened-binding.d.ts.map +1 -0
  485. package/lib/specialized-bindings/transient-derived-binding/exports.d.ts +4 -0
  486. package/lib/specialized-bindings/transient-derived-binding/exports.d.ts.map +1 -0
  487. package/lib/specialized-bindings/transient-derived-binding/make-transient-derived-binding.d.ts +12 -0
  488. package/lib/specialized-bindings/transient-derived-binding/make-transient-derived-binding.d.ts.map +1 -0
  489. package/lib/specialized-bindings/transient-derived-binding/types/exports.d.ts +2 -0
  490. package/lib/specialized-bindings/transient-derived-binding/types/exports.d.ts.map +1 -0
  491. package/lib/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.d.ts +10 -0
  492. package/lib/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.d.ts.map +1 -0
  493. package/lib/specialized-bindings/transient-derived-binding/use-transient-derived-binding.d.ts +13 -0
  494. package/lib/specialized-bindings/transient-derived-binding/use-transient-derived-binding.d.ts.map +1 -0
  495. package/lib/synchronization/exports.d.ts +4 -0
  496. package/lib/synchronization/exports.d.ts.map +1 -0
  497. package/lib/synchronization/types/exports.d.ts +2 -0
  498. package/lib/synchronization/types/exports.d.ts.map +1 -0
  499. package/lib/synchronization/types/options.d.ts +13 -0
  500. package/lib/synchronization/types/options.d.ts.map +1 -0
  501. package/lib/synchronization/use-bi-dir-binding-sync.d.ts +10 -0
  502. package/lib/synchronization/use-bi-dir-binding-sync.d.ts.map +1 -0
  503. package/lib/synchronization/use-uni-dir-binding-sync.d.ts +6 -0
  504. package/lib/synchronization/use-uni-dir-binding-sync.d.ts.map +1 -0
  505. package/lib/types/array-like.d.ts +3 -0
  506. package/lib/types/array-like.d.ts.map +1 -0
  507. package/lib/types/empty.d.ts +3 -0
  508. package/lib/types/empty.d.ts.map +1 -0
  509. package/lib/types/exports.d.ts +3 -0
  510. package/lib/types/exports.d.ts.map +1 -0
  511. package/lib/use-binding-effect/exports.d.ts +3 -0
  512. package/lib/use-binding-effect/exports.d.ts.map +1 -0
  513. package/lib/use-binding-effect/types/exports.d.ts +2 -0
  514. package/lib/use-binding-effect/types/exports.d.ts.map +1 -0
  515. package/lib/use-binding-effect/types/options.d.ts +46 -0
  516. package/lib/use-binding-effect/types/options.d.ts.map +1 -0
  517. package/lib/use-binding-effect/use-binding-effect.d.ts +21 -0
  518. package/lib/use-binding-effect/use-binding-effect.d.ts.map +1 -0
  519. package/lib/utility-hooks/exports.d.ts +3 -0
  520. package/lib/utility-hooks/exports.d.ts.map +1 -0
  521. package/lib/utility-hooks/use-callback-ref.d.ts +3 -0
  522. package/lib/utility-hooks/use-callback-ref.d.ts.map +1 -0
  523. package/lib/utility-hooks/use-stable-value.d.ts +6 -0
  524. package/lib/utility-hooks/use-stable-value.d.ts.map +1 -0
  525. package/package.json +70 -0
  526. package/src/__test_dependency__/index.ts +4 -0
  527. package/src/__test_dependency__/run-in-dom.tsx +46 -0
  528. package/src/__test_dependency__/sleep.ts +3 -0
  529. package/src/bc/bc.tsx +12 -0
  530. package/src/bc/exports.ts +1 -0
  531. package/src/binding/__tests__/make-binding.test.ts +25 -0
  532. package/src/binding/__tests__/use-binding.test.tsx +54 -0
  533. package/src/binding/exports.ts +3 -0
  534. package/src/binding/internal/DoubleLinkedList/__tests__/double-linked-list.test.ts +134 -0
  535. package/src/binding/internal/DoubleLinkedList/index.ts +128 -0
  536. package/src/binding/internal/__tests__/custom-value-comparison.test.ts +31 -0
  537. package/src/binding/internal/__tests__/default-settings.test.ts +92 -0
  538. package/src/binding/internal/__tests__/default-value-comparison.test.ts +55 -0
  539. package/src/binding/internal/__tests__/locking.test.ts +111 -0
  540. package/src/binding/internal/__tests__/transformed.test.ts +48 -0
  541. package/src/binding/internal/binding-impl.ts +253 -0
  542. package/src/binding/internal/consts.ts +2 -0
  543. package/src/binding/make-binding.ts +26 -0
  544. package/src/binding/types/binding-args.ts +49 -0
  545. package/src/binding/types/binding-dependencies.ts +7 -0
  546. package/src/binding/types/binding-initializer.ts +2 -0
  547. package/src/binding/types/binding.ts +25 -0
  548. package/src/binding/types/change-listener.ts +5 -0
  549. package/src/binding/types/exports.ts +11 -0
  550. package/src/binding/types/infer-binding-value-types.ts +14 -0
  551. package/src/binding/types/infer-bindings-array-value-types.ts +12 -0
  552. package/src/binding/types/infer-named-binding-value-types.ts +12 -0
  553. package/src/binding/types/inference.ts +4 -0
  554. package/src/binding/types/readonly-binding.ts +39 -0
  555. package/src/binding/types/set-value-transformer.ts +11 -0
  556. package/src/binding/use-binding.ts +17 -0
  557. package/src/binding-utils/__tests__/are-all-bindings-locked.test.ts +40 -0
  558. package/src/binding-utils/__tests__/are-any-bindings-modified.test.ts +35 -0
  559. package/src/binding-utils/__tests__/lock-all-bindings.test.ts +36 -0
  560. package/src/binding-utils/__tests__/lock-bindings-and-do.test.ts +52 -0
  561. package/src/binding-utils/__tests__/set-all-bindings-modified.test.ts +22 -0
  562. package/src/binding-utils/exports.ts +3 -0
  563. package/src/binding-utils/internal/__tests__/make-value-then-do.test.ts +52 -0
  564. package/src/binding-utils/internal/make-value-then-do.ts +37 -0
  565. package/src/binding-utils/lock-utils.ts +50 -0
  566. package/src/binding-utils/modified-utils.ts +31 -0
  567. package/src/binding-utils/type-utils.ts +9 -0
  568. package/src/components/BindingsConsumer/__tests__/basic-rendering.test.tsx +75 -0
  569. package/src/components/BindingsConsumer/__tests__/debounced-rendering.test.tsx +93 -0
  570. package/src/components/BindingsConsumer/__tests__/multiple-bindings.test.tsx +94 -0
  571. package/src/components/BindingsConsumer/__tests__/nested-rendering.test.tsx +144 -0
  572. package/src/components/BindingsConsumer/__tests__/value-comparison.test.tsx +97 -0
  573. package/src/components/BindingsConsumer/__tests__/value-extraction.test.tsx +56 -0
  574. package/src/components/BindingsConsumer/index.tsx +77 -0
  575. package/src/components/BindingsConsumer/internal/Refreshable.tsx +38 -0
  576. package/src/components/BindingsConsumer/types/exports.ts +2 -0
  577. package/src/components/BindingsConsumer/types/props.ts +30 -0
  578. package/src/components/BindingsConsumer/types/render-callback.ts +15 -0
  579. package/src/components/exports.ts +1 -0
  580. package/src/config/are-equal.ts +16 -0
  581. package/src/config/exports.ts +5 -0
  582. package/src/config/logging.ts +31 -0
  583. package/src/config/stats-handler.ts +21 -0
  584. package/src/default-queue/__tests__/default-queue.test.tsx +32 -0
  585. package/src/default-queue/default-queue-context.tsx +48 -0
  586. package/src/default-queue/exports.ts +1 -0
  587. package/src/index.ts +14 -0
  588. package/src/internal-hooks/__tests__/use-is-mounted.test.ts +18 -0
  589. package/src/internal-hooks/use-is-mounted-ref.ts +16 -0
  590. package/src/internal-utils/__tests__/concat-arrays.test.ts +25 -0
  591. package/src/internal-utils/__tests__/extract-binding-dependency-values.test.ts +73 -0
  592. package/src/internal-utils/__tests__/normalize-as-array.test.ts +17 -0
  593. package/src/internal-utils/__tests__/normalize-as-optonal-array.test.ts +17 -0
  594. package/src/internal-utils/array-like.ts +26 -0
  595. package/src/internal-utils/extract-binding-dependency-values.ts +36 -0
  596. package/src/internal-utils/get-typed-keys.ts +6 -0
  597. package/src/internal-utils/uid.ts +4 -0
  598. package/src/limiter/__tests__/use-limiter.test.ts +227 -0
  599. package/src/limiter/exports.ts +4 -0
  600. package/src/limiter/internal/LimiterImpl.ts +73 -0
  601. package/src/limiter/make-limiter.ts +20 -0
  602. package/src/limiter/pick-limiter-options.ts +9 -0
  603. package/src/limiter/types/LimitMode.ts +6 -0
  604. package/src/limiter/types/LimitType.ts +31 -0
  605. package/src/limiter/types/Limiter.ts +10 -0
  606. package/src/limiter/types/LimiterOptions.ts +38 -0
  607. package/src/limiter/types/exports.ts +4 -0
  608. package/src/limiter/use-limiter.ts +52 -0
  609. package/src/make-bindable-component/__tests__/make-bindable-component.test.tsx +30 -0
  610. package/src/make-bindable-component/exports.ts +2 -0
  611. package/src/make-bindable-component/make-bindable-component.tsx +78 -0
  612. package/src/make-bindable-component/types/exports.ts +2 -0
  613. package/src/make-bindable-component/types/make-bindable-component-options.ts +6 -0
  614. package/src/make-bindable-component/types/upgrade-to-binding-props.tsx +11 -0
  615. package/src/resolveable/__tests__/resolve-type-or-binding-type.test.ts +22 -0
  616. package/src/resolveable/__tests__/resolve-type-or-deferred-type-or-binding-type.test.ts +26 -0
  617. package/src/resolveable/__tests__/resolve-type-or-deferred-type-with-args.test.ts +19 -0
  618. package/src/resolveable/__tests__/resolve-type-or-deferred-type.test.ts +19 -0
  619. package/src/resolveable/exports.ts +2 -0
  620. package/src/resolveable/types.ts +13 -0
  621. package/src/resolveable/utils.ts +17 -0
  622. package/src/specialized-bindings/__tests__/const-binding.test.tsx +43 -0
  623. package/src/specialized-bindings/__tests__/flattened-binding.test.ts +45 -0
  624. package/src/specialized-bindings/const-binding.ts +19 -0
  625. package/src/specialized-bindings/derived-binding/__tests__/basic.test.ts +94 -0
  626. package/src/specialized-bindings/derived-binding/__tests__/derivations-of-derivations.test.ts +71 -0
  627. package/src/specialized-bindings/derived-binding/__tests__/multiple-dependencies.test.ts +60 -0
  628. package/src/specialized-bindings/derived-binding/exports.ts +2 -0
  629. package/src/specialized-bindings/derived-binding/options.ts +56 -0
  630. package/src/specialized-bindings/derived-binding/use-derived-binding.ts +77 -0
  631. package/src/specialized-bindings/exports.ts +4 -0
  632. package/src/specialized-bindings/flattened-binding.ts +104 -0
  633. package/src/specialized-bindings/transient-derived-binding/__tests__/basic.test.ts +75 -0
  634. package/src/specialized-bindings/transient-derived-binding/__tests__/derivations-of-derivations.test.ts +69 -0
  635. package/src/specialized-bindings/transient-derived-binding/__tests__/multiple-dependencies.test.ts +52 -0
  636. package/src/specialized-bindings/transient-derived-binding/exports.ts +3 -0
  637. package/src/specialized-bindings/transient-derived-binding/make-transient-derived-binding.ts +63 -0
  638. package/src/specialized-bindings/transient-derived-binding/types/exports.ts +1 -0
  639. package/src/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.ts +11 -0
  640. package/src/specialized-bindings/transient-derived-binding/use-transient-derived-binding.ts +25 -0
  641. package/src/synchronization/__tests__/use-bi-dir-binding-sync.test.ts +27 -0
  642. package/src/synchronization/__tests__/use-uni-dir-binding-sync.test.ts +23 -0
  643. package/src/synchronization/exports.ts +3 -0
  644. package/src/synchronization/types/exports.ts +1 -0
  645. package/src/synchronization/types/options.ts +15 -0
  646. package/src/synchronization/use-bi-dir-binding-sync.ts +14 -0
  647. package/src/synchronization/use-uni-dir-binding-sync.ts +9 -0
  648. package/src/types/array-like.ts +2 -0
  649. package/src/types/empty.ts +2 -0
  650. package/src/types/exports.ts +2 -0
  651. package/src/use-binding-effect/__tests__/basic.test.ts +70 -0
  652. package/src/use-binding-effect/__tests__/throttled.test.ts +106 -0
  653. package/src/use-binding-effect/__tests__/trigger-on-mount.test.tsx +125 -0
  654. package/src/use-binding-effect/__tests__/value-comparison.test.ts +71 -0
  655. package/src/use-binding-effect/exports.ts +2 -0
  656. package/src/use-binding-effect/types/exports.ts +1 -0
  657. package/src/use-binding-effect/types/options.ts +50 -0
  658. package/src/use-binding-effect/use-binding-effect.ts +204 -0
  659. package/src/utility-hooks/__tests__/use-callback-ref.test.tsx +59 -0
  660. package/src/utility-hooks/__tests__/use-stable-value.test.tsx +49 -0
  661. package/src/utility-hooks/exports.ts +2 -0
  662. package/src/utility-hooks/use-callback-ref.ts +15 -0
  663. package/src/utility-hooks/use-stable-value.ts +17 -0
@@ -0,0 +1,11 @@
1
+ import React, { useRef } from 'react';
2
+ const noDeps = Object.freeze([]);
3
+ /** Creates a wrapper function that can be updated on each render without updating the resulting function */
4
+ export const useCallbackRef = (func) => {
5
+ const latest = useRef(func);
6
+ latest.current = func;
7
+ // eslint-disable-next-line react-hooks/exhaustive-deps
8
+ const caller = React.useCallback((...args) => latest.current(...args), noDeps);
9
+ return caller;
10
+ };
11
+ //# sourceMappingURL=use-callback-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-callback-ref.js","sourceRoot":"","sources":["../../../src/utility-hooks/use-callback-ref.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEjD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,cAAc,GAAG,CAA+B,IAAiC,EAAE,EAAE;IAChG,MAAM,MAAM,GAAG,MAAM,CAA8B,IAAI,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAEtB,uDAAuD;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,IAAW,EAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAE/F,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { useRef } from 'react';
2
+ import { areEqual } from '../config/are-equal';
3
+ /**
4
+ * Remembers the specified value across renders and compares it against a stored value, which is returned. The stored value is only updated
5
+ * if the specified value really changes, using `areEqual` to compare.
6
+ */
7
+ export const useStableValue = (instableValue) => {
8
+ const stableValue = useRef(instableValue);
9
+ if (!areEqual(instableValue, stableValue.current)) {
10
+ stableValue.current = instableValue;
11
+ }
12
+ return stableValue.current;
13
+ };
14
+ //# sourceMappingURL=use-stable-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stable-value.js","sourceRoot":"","sources":["../../../src/utility-hooks/use-stable-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAI,aAAgB,EAAE,EAAE;IACpD,MAAM,WAAW,GAAG,MAAM,CAAI,aAAa,CAAC,CAAC;IAE7C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;QACjD,WAAW,CAAC,OAAO,GAAG,aAAa,CAAC;KACrC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './utils';
3
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/resolveable/exports.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ReadonlyBinding } from '../binding/types/readonly-binding';
2
+ /** Either an immediate value or a value that can be retrieved by calling a function */
3
+ export type TypeOrDeferredType<T> = T | (() => T);
4
+ /** Either an immediate value or a value that can be retrieved by calling a function with args */
5
+ export type TypeOrDeferredTypeWithArgs<T, ArgsT extends any[]> = T | ((...args: ArgsT) => T);
6
+ /** Either an immediate value or a binding that stores a value */
7
+ export type TypeOrBindingType<T> = T | ReadonlyBinding<T>;
8
+ /** Either an immediate value or a value that can be retrieved by calling a function or a binding that stores a value */
9
+ export type TypeOrDeferredTypeOrBindingType<T> = T | (() => T) | ReadonlyBinding<T>;
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolveable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAElD,iGAAiG;AACjG,MAAM,MAAM,0BAA0B,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC;AAE7F,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAE1D,wHAAwH;AACxH,MAAM,MAAM,+BAA+B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { TypeOrBindingType, TypeOrDeferredType, TypeOrDeferredTypeOrBindingType, TypeOrDeferredTypeWithArgs } from './types';
2
+ /** Resolves the value out of a TypeOrBindingType */
3
+ export declare const resolveTypeOrBindingType: <T>(value: TypeOrBindingType<T>) => T;
4
+ /** Resolves the value out of a TypeOrDeferredType */
5
+ export declare const resolveTypeOrDeferredType: <T>(value: TypeOrDeferredType<T>) => T;
6
+ /** Resolves the value out of a TypeOrDeferredTypeOrBindingType */
7
+ export declare const resolveTypeOrDeferredTypeOrBindingType: <T>(value: TypeOrDeferredTypeOrBindingType<T>) => T;
8
+ /** Resolves the value out of a TypeOrDeferredType */
9
+ export declare const resolveTypeOrDeferredTypeWithArgs: <T, ArgsT extends any[]>(value: TypeOrDeferredTypeWithArgs<T, ArgsT>, args: ArgsT) => T;
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/resolveable/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAElI,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,uCAA+E,CAAC;AAErH,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,wCAC6B,CAAC;AAEpE,kEAAkE;AAClE,eAAO,MAAM,sCAAsC,qDACiD,CAAC;AAErG,qDAAqD;AACrD,eAAO,MAAM,iCAAiC,yFAC0C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ReadonlyBinding } from '../binding/types/readonly-binding';
2
+ export interface ConstBindingArgs {
3
+ /** A technical, but human-readable ID, which isn't guaranteed to be unique */
4
+ id: string;
5
+ }
6
+ /** Makes a const binding without using any React contexts. */
7
+ export declare const makeConstBinding: <GetT>(value: GetT, { id }: ConstBindingArgs) => ReadonlyBinding<GetT>;
8
+ /** Use for cases where a binding is required in an interface but the underlying value is constant with respect to a single render */
9
+ export declare const useConstBinding: <GetT>(value: GetT, { id }: ConstBindingArgs) => ReadonlyBinding<GetT>;
10
+ //# sourceMappingURL=const-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const-binding.d.ts","sourceRoot":"","sources":["../../src/specialized-bindings/const-binding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,8BAA+B,gBAAgB,0BAA4D,CAAC;AAEzI,qIAAqI;AACrI,eAAO,MAAM,eAAe,8BAA+B,gBAAgB,0BAK1E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './options';
2
+ export * from './use-derived-binding';
3
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/specialized-bindings/derived-binding/exports.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { DependencyList } from 'react';
2
+ import type { LimiterOptions } from '../../limiter/types/LimiterOptions';
3
+ export interface DerivedBindingOptions<GetT> extends LimiterOptions {
4
+ /** A technical, but human-readable ID, which isn't guaranteed to be unique */
5
+ id: string;
6
+ /**
7
+ * On a rerender, deps changes are treated like bindings changes. That is, if they change between renders, the input change detection
8
+ * logic is run (using the `areInputValuesEqual`, `detectInputChanges`, and `makeComparableInputValue` values) using the limiter (see
9
+ * `LimiterOptions`).
10
+ */
11
+ deps?: DependencyList;
12
+ /**
13
+ * If specified, overrides the function used to compare input values
14
+ *
15
+ * @defaultValue `_.isEqual`, which can be globally overridden using `setAreEqual`
16
+ */
17
+ areInputValuesEqual?: (a: any, b: any) => boolean;
18
+ /**
19
+ * - If `true` – `areInputValuesEqual` is used to compare the old and new results of `makeComparableInputValue` when any of the input
20
+ * bindings or `deps` are changed. If the values are equal, the transformer won't be run. If they're unequal, the transformer will be
21
+ * run.
22
+ * - If `false` – old and new values aren't compared, the transformer will always be run.
23
+ *
24
+ * @defaultValue `true`
25
+ */
26
+ detectInputChanges?: boolean;
27
+ /**
28
+ * By default, when `detectInputChanges` is `true`, the input is compared using all specified bindings. This behavior can be overridden
29
+ * by providing this function to generate a value that can be compared instead. The generated value will be remembered until the next
30
+ * comparison is needed. Comparisons are performed using `areInputValuesEqual`
31
+ *
32
+ * @defaultValue A function that returns the values of all input bindings and the deps
33
+ */
34
+ makeComparableInputValue?: () => any;
35
+ /**
36
+ * If specified, overrides the function used to compare output values
37
+ *
38
+ * @defaultValue `_.isEqual`, which can be globally overridden using `setAreEqual`
39
+ */
40
+ areOutputValuesEqual?: (a: GetT, b: GetT) => boolean;
41
+ /**
42
+ * - If `true` – `areOutputValuesEqual` is used to compare the old and new results of the transformer function, each time it's run. If the
43
+ * values are equal, the derived binding's value won't be changed. If they're unequal, the binding value will be changed and listeners
44
+ * will be notified.
45
+ * - If `false` – old and new results of the transformer function aren't compared. The derived binding's value will always be changed each
46
+ * time the transformer function is run.
47
+ *
48
+ * @defaultValue `true`
49
+ */
50
+ detectOutputChanges?: boolean;
51
+ }
52
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/specialized-bindings/derived-binding/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,qBAAqB,CAAC,IAAI,CAAE,SAAQ,cAAc;IACjE,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;IAClD;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,CAAC;IAErC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC;IACrD;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
@@ -0,0 +1,16 @@
1
+ import type { BindingDependencies } from '../../binding/types/binding-dependencies';
2
+ import type { InferBindingValueTypes } from '../../binding/types/infer-binding-value-types';
3
+ import type { ReadonlyBinding } from '../../binding/types/readonly-binding';
4
+ import type { DerivedBindingOptions } from './options';
5
+ /**
6
+ * Called to compute the derived value on the initial render and anytime the dependencies change.
7
+ *
8
+ * @param bindingValues - The extracted values of the bindings.
9
+ * @param bindings - The original bindings
10
+ *
11
+ * @returns The derived value
12
+ */
13
+ export type UseDerivedBindingTransformer<GetT, DependenciesT extends BindingDependencies> = (bindingValues: InferBindingValueTypes<DependenciesT>, bindings: DependenciesT) => GetT;
14
+ /** A derived binding is a binding derived from zero or more other bindings */
15
+ export declare const useDerivedBinding: <GetT, DependenciesT extends BindingDependencies>(bindings: DependenciesT | undefined, transformer: UseDerivedBindingTransformer<GetT, DependenciesT>, options: DerivedBindingOptions<GetT>) => ReadonlyBinding<GetT>;
16
+ //# sourceMappingURL=use-derived-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-derived-binding.d.ts","sourceRoot":"","sources":["../../../src/specialized-bindings/derived-binding/use-derived-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,0CAA0C,CAAC;AAC9G,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAS5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,4BAA4B,CAAC,IAAI,EAAE,aAAa,SAAS,mBAAmB,IAAI,CAC1F,aAAa,EAAE,sBAAsB,CAAC,aAAa,CAAC,EACpD,QAAQ,EAAE,aAAa,KACpB,IAAI,CAAC;AAEV,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,uNAiD7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './const-binding';
2
+ export * from './derived-binding/exports';
3
+ export * from './flattened-binding';
4
+ export * from './transient-derived-binding/exports';
5
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/specialized-bindings/exports.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BindingDependencies } from '../binding/types/binding-dependencies';
2
+ import type { InferBindingValueTypes } from '../binding/types/infer-binding-value-types';
3
+ import type { ReadonlyBinding } from '../binding/types/readonly-binding';
4
+ import type { DerivedBindingOptions } from './derived-binding/options';
5
+ /**
6
+ * Called to extract the second-level binding on the initial render and anytime the dependencies change.
7
+ *
8
+ * @param bindingValues - The extracted values of bindings.
9
+ * @param bindings - The original bindings.
10
+ *
11
+ * @returns The second-level binding (i.e. a binding determined dynamically by executing this function)
12
+ */
13
+ export type UseFlattenedBindingTransformer<GetT, DependenciesT extends BindingDependencies> = (bindingValues: InferBindingValueTypes<DependenciesT>, bindings: DependenciesT) => ReadonlyBinding<GetT>;
14
+ /** Use when a binding contains another binding, to listen to the second-level binding if either the first or second levels change */
15
+ export declare const useFlattenedBinding: <GetT, DependenciesT extends BindingDependencies>(bindings: DependenciesT | undefined, transformer: UseFlattenedBindingTransformer<GetT, DependenciesT>, options: DerivedBindingOptions<GetT>) => ReadonlyBinding<GetT>;
16
+ //# sourceMappingURL=flattened-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattened-binding.d.ts","sourceRoot":"","sources":["../../src/specialized-bindings/flattened-binding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,uCAAuC,CAAC;AAC3G,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AASzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,8BAA8B,CAAC,IAAI,EAAE,aAAa,SAAS,mBAAmB,IAAI,CAC5F,aAAa,EAAE,sBAAsB,CAAC,aAAa,CAAC,EACpD,QAAQ,EAAE,aAAa,KACpB,eAAe,CAAC,IAAI,CAAC,CAAC;AAE3B,qIAAqI;AACrI,eAAO,MAAM,mBAAmB,yNA0E/B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './make-transient-derived-binding';
2
+ export * from './types/exports';
3
+ export * from './use-transient-derived-binding';
4
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/specialized-bindings/transient-derived-binding/exports.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { BindingDependencies } from '../../binding/types/binding-dependencies';
2
+ import type { ReadonlyBinding } from '../../binding/types/readonly-binding';
3
+ import type { UseDerivedBindingTransformer } from '../derived-binding/use-derived-binding';
4
+ import type { MakeTransientDerivedBindingArgs } from './types/transient-derived-binding-args';
5
+ /**
6
+ * Similar to `useDerivedBinding` except that this binding doesn't persist any values internally. The derivative is computed each time the
7
+ * getter is accessed and listeners are immediately triggered any time any of the dependencies change.
8
+ *
9
+ * This is most useful for inline declarations of derivatives that would feel too-heavy to declare elsewhere.
10
+ */
11
+ export declare const makeTransientDerivedBinding: <GetT, DependenciesT extends BindingDependencies>(bindings: DependenciesT | undefined, transformer: UseDerivedBindingTransformer<GetT, DependenciesT>, { id }?: MakeTransientDerivedBindingArgs) => ReadonlyBinding<GetT>;
12
+ //# sourceMappingURL=make-transient-derived-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-transient-derived-binding.d.ts","sourceRoot":"","sources":["../../../src/specialized-bindings/transient-derived-binding/make-transient-derived-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,mBAAmB,EAA4B,MAAM,0CAA0C,CAAC;AACxI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAQ5E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAI9F;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,kKAG9B,+BAA+B,0BAuCxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './transient-derived-binding-args';
2
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../../src/specialized-bindings/transient-derived-binding/types/exports.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { DependencyList } from 'react';
2
+ export interface MakeTransientDerivedBindingArgs {
3
+ /** A technical, but human-readable ID, which isn't guaranteed to be unique */
4
+ id?: string;
5
+ }
6
+ export interface UseTransientDerivedBindingArgs extends MakeTransientDerivedBindingArgs {
7
+ /** Hook dependencies */
8
+ deps?: DependencyList;
9
+ }
10
+ //# sourceMappingURL=transient-derived-binding-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transient-derived-binding-args.d.ts","sourceRoot":"","sources":["../../../../src/specialized-bindings/transient-derived-binding/types/transient-derived-binding-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,+BAA+B;IAC9C,8EAA8E;IAC9E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,8BAA+B,SAAQ,+BAA+B;IACrF,wBAAwB;IACxB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB"}
@@ -0,0 +1,13 @@
1
+ import type { BindingDependencies } from '../../binding/types/binding-dependencies';
2
+ import type { ReadonlyBinding } from '../../binding/types/readonly-binding';
3
+ import type { UseDerivedBindingTransformer } from '../derived-binding/use-derived-binding';
4
+ import type { UseTransientDerivedBindingArgs } from './types/transient-derived-binding-args';
5
+ /**
6
+ * Similar to `useDerivedBinding` except that this binding doesn't persist any values internally. The derivative is computed each time the
7
+ * getter is accessed and listeners are immediately triggered any time any of the dependencies change.
8
+ *
9
+ * This is most useful for cases where bindings need to have up to date values even when unmounted (though this still wont be proactively
10
+ * triggered when unmounted).
11
+ */
12
+ export declare const useTransientDerivedBinding: <GetT, DependenciesT extends BindingDependencies>(bindings: DependenciesT | undefined, transformer: UseDerivedBindingTransformer<GetT, DependenciesT>, args?: UseTransientDerivedBindingArgs) => ReadonlyBinding<GetT>;
13
+ //# sourceMappingURL=use-transient-derived-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-transient-derived-binding.d.ts","sourceRoot":"","sources":["../../../src/specialized-bindings/transient-derived-binding/use-transient-derived-binding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAE3F,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAI7F;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,gKAG/B,8BAA8B,0BAGgF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types/exports';
2
+ export * from './use-bi-dir-binding-sync';
3
+ export * from './use-uni-dir-binding-sync';
4
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/synchronization/exports.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './options';
2
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/synchronization/types/exports.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { DependencyList } from 'react';
2
+ import type { LimiterOptions } from '../../limiter/types/LimiterOptions';
3
+ export interface UseBindingSyncOptions extends LimiterOptions {
4
+ /** A technical but human-readable ID */
5
+ id?: string;
6
+ /**
7
+ * On a rerender, deps changes are treated like bindings changes. That is, if they change between renders, the input change detection
8
+ * logic is run (using the `areInputValuesEqual`, `detectInputChanges`, and `makeComparableInputValue` values) using the limiter (see
9
+ * `LimiterOptions`).
10
+ */
11
+ deps?: DependencyList;
12
+ }
13
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/synchronization/types/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,wCAAwC;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB"}
@@ -0,0 +1,10 @@
1
+ import type { Binding } from '../binding/types/binding';
2
+ import type { UseBindingSyncOptions } from './types/options';
3
+ /**
4
+ * Synchronizes two bindings bidirectionally so that any change in one will also affect the other.
5
+ *
6
+ * It's the responsibility of the bindings themselves to make sure this doesn't result in an infinite update. For example, the bindings
7
+ * could be configured to use `detectChanges: true`, so that trivial changes doesn't result in triggers.
8
+ */
9
+ export declare const useBiDirBindingSync: <T>(a: Binding<T>, b: Binding<T>, options?: UseBindingSyncOptions) => void;
10
+ //# sourceMappingURL=use-bi-dir-binding-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-bi-dir-binding-sync.d.ts","sourceRoot":"","sources":["../../src/synchronization/use-bi-dir-binding-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,8CAA+C,qBAAqB,SAGnG,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Binding } from '../binding/types/binding';
2
+ import type { ReadonlyBinding } from '../binding/types/readonly-binding';
3
+ import type { UseBindingSyncOptions } from './types/options';
4
+ /** Synchronizes a source binding into a destination binding */
5
+ export declare const useUniDirBindingSync: <T>(source: ReadonlyBinding<T>, dest: Binding<T>, options?: UseBindingSyncOptions) => void;
6
+ //# sourceMappingURL=use-uni-dir-binding-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-uni-dir-binding-sync.d.ts","sourceRoot":"","sources":["../../src/synchronization/use-uni-dir-binding-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,8DAA+D,qBAAqB,SAEpH,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** A single instance or an array of instances */
2
+ export type SingleOrArray<T> = T | T[];
3
+ //# sourceMappingURL=array-like.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-like.d.ts","sourceRoot":"","sources":["../../src/types/array-like.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** An empty object */
2
+ export type EmptyObject = Record<string, never>;
3
+ //# sourceMappingURL=empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../src/types/empty.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './array-like';
2
+ export * from './empty';
3
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/types/exports.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types/exports';
2
+ export * from './use-binding-effect';
3
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/use-binding-effect/exports.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './options';
2
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/use-binding-effect/types/exports.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { DependencyList } from 'react';
2
+ import type { LimiterOptions } from '../../limiter/types/LimiterOptions';
3
+ export interface UseBindingEffectOptions extends LimiterOptions {
4
+ /** A technical but human-readable ID */
5
+ id?: string;
6
+ /**
7
+ * On a rerender, deps changes are treated like bindings changes. That is, if they change between renders, the input change detection
8
+ * logic is run (using the `areInputValuesEqual`, `detectInputChanges`, and `makeComparableInputValue` values) using the limiter (see
9
+ * `LimiterOptions`).
10
+ */
11
+ deps?: DependencyList;
12
+ /**
13
+ * If specified, overrides the function used to compare input values
14
+ *
15
+ * @defaultValue `_.isEqual`, which can be globally overridden using `setAreEqual`
16
+ */
17
+ areInputValuesEqual?: (a: any, b: any) => boolean;
18
+ /**
19
+ * - If `true` – `areInputValuesEqual` is used to compare the old and new results of `makeComparableInputValue` when any of the input
20
+ * bindings or `deps` are changed. If the values are equal, the transformer won't be run. If they're unequal, the transformer will be
21
+ * run.
22
+ * - If `false` – old and new values aren't compared, the transformer will always be run.
23
+ *
24
+ * @defaultValue `false`
25
+ */
26
+ detectInputChanges?: boolean;
27
+ /**
28
+ * By default, when `detectInputChanges` is true, the input is compared using all specified bindings. This behavior can be overridden by
29
+ * providing this function to generate a value that can be compared instead. This value will be remembered until the next comparison is
30
+ * needed. Comparisons are performed using `areInputValuesEqual`
31
+ *
32
+ * @defaultValue A function that returns the values of all input bindings (including any additional bindings) and the deps
33
+ */
34
+ makeComparableInputValue?: () => any;
35
+ /**
36
+ * - If `true`, the callback is triggered every time this is mounted in addition to whenever the input bindings change.
37
+ * - If `false`, the callback is only triggered when the input bindings change.
38
+ * - If `'first'`, the callback is triggered on the first mount and whenever the input bindings change
39
+ * - If `'if-input-changed'`, the callback is triggered on mount if the bindings have changed since the last evaluation of the
40
+ * transformer
41
+ *
42
+ * @defaultValue `'if-input-changed'`
43
+ */
44
+ triggerOnMount?: boolean | 'first' | 'if-input-changed';
45
+ }
46
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/use-binding-effect/types/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,wCAAwC;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;IAClD;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,CAAC;IAErC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,kBAAkB,CAAC;CACzD"}
@@ -0,0 +1,21 @@
1
+ import type { BindingDependencies } from '../binding/types/binding-dependencies';
2
+ import type { InferBindingValueTypes } from '../binding/types/infer-binding-value-types';
3
+ import type { UseBindingEffectOptions } from './types/options';
4
+ /**
5
+ * Called when the associated bindings change, depending on the options provided to `useBindingEffect`.
6
+ *
7
+ * @param bindingValues - The extracted values of the associated named bindings. If named bindings aren't used, this will be an empty
8
+ * object.
9
+ * @param bindings - The original named bindings if named bindings are used or an empty object otherwise.
10
+ */
11
+ export type UseBindingEffectCallback<DependenciesT extends BindingDependencies> = (bindingValues: InferBindingValueTypes<DependenciesT>, bindings: DependenciesT) => void;
12
+ /**
13
+ * Calls the specified callback function any time any of the specified bindings are changed.
14
+ *
15
+ * Most of the time you should use this hook rather than addChangeListener.
16
+ *
17
+ * @returns a function that can be called anytime to cancel the most recent limited callback. This is useful, for example, if the the
18
+ * callback would have triggered a re-render that we, by other means, know to be unnecessary.
19
+ */
20
+ export declare const useBindingEffect: <DependenciesT extends BindingDependencies>(bindings: DependenciesT | undefined, callback: UseBindingEffectCallback<DependenciesT>, options?: UseBindingEffectOptions) => (() => void);
21
+ //# sourceMappingURL=use-binding-effect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-binding-effect.d.ts","sourceRoot":"","sources":["../../src/use-binding-effect/use-binding-effect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA4B,mBAAmB,EAA4B,MAAM,uCAAuC,CAAC;AAErI,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAYzF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI/D;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,CAAC,aAAa,SAAS,mBAAmB,IAAI,CAChF,aAAa,EAAE,sBAAsB,CAAC,aAAa,CAAC,EACpD,QAAQ,EAAE,aAAa,KACpB,IAAI,CAAC;AAEV;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,gJAGlB,uBAAuB,KAC/B,CAAC,MAAM,IAAI,CAqJb,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './use-callback-ref';
2
+ export * from './use-stable-value';
3
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/utility-hooks/exports.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Creates a wrapper function that can be updated on each render without updating the resulting function */
2
+ export declare const useCallbackRef: <ArgsT extends any[], ReturnT>(func: (...args: ArgsT) => ReturnT) => (...args: ArgsT) => ReturnT;
3
+ //# sourceMappingURL=use-callback-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-callback-ref.d.ts","sourceRoot":"","sources":["../../src/utility-hooks/use-callback-ref.ts"],"names":[],"mappings":"AAKA,4GAA4G;AAC5G,eAAO,MAAM,cAAc,kGAQ1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Remembers the specified value across renders and compares it against a stored value, which is returned. The stored value is only updated
3
+ * if the specified value really changes, using `areEqual` to compare.
4
+ */
5
+ export declare const useStableValue: <T>(instableValue: T) => T;
6
+ //# sourceMappingURL=use-stable-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stable-value.d.ts","sourceRoot":"","sources":["../../src/utility-hooks/use-stable-value.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,cAAc,4BAQ1B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "std-react-bindings",
3
+ "version": "0.0.1",
4
+ "description": "Data bindings for React",
5
+ "keywords": [
6
+ "bindings",
7
+ "observable",
8
+ "react",
9
+ "react-native",
10
+ "typescript"
11
+ ],
12
+ "main": "lib/cjs/index.js",
13
+ "module": "lib/mjs/index.js",
14
+ "types": "lib/index.d.ts",
15
+ "repository": "",
16
+ "homepage": "",
17
+ "license": "MIT",
18
+ "private": false,
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.cjs.json && tsc -p tsconfig.mjs.json",
21
+ "build:dev": "trash dev-build && yarn build && mkdir dev-build && cp -r lib dev-build && cp package.json dev-build && (cd dev-build && echo 'package' `pwd`)",
22
+ "clean": "trash coverage dev-build docs lib",
23
+ "generate:docs": "npx typedoc src/index.ts --skipErrorChecking",
24
+ "lint": "eslint 'src/**/*.ts?(x)' --max-warnings 0",
25
+ "prepublishOnly": "yarn clean && yarn test && yarn clean && yarn build",
26
+ "test": "yarn test:check-circular-dependencies && yarn test:unit-tests",
27
+ "test:audit": "yarn audit --level moderate; [[ $? -ge 4 ]] && exit 1 || exit 0",
28
+ "test:check-circular-dependencies": "yarn build && npx madge --circular ./lib",
29
+ "test:unit-tests:": "NODE_OPTIONS=--experimental-vm-modules npx jest --runInBand --coverage",
30
+ "test:unit-tests": "yarn test:unit-tests: src"
31
+ },
32
+ "peerDependencies": {
33
+ "react": ">=16.9.0",
34
+ "react-dom": ">=16.9.0"
35
+ },
36
+ "dependencies": {
37
+ "std-client-run-queue": "0.0.1",
38
+ "is-promise": "^4.0.0",
39
+ "lodash": "^4.17.21"
40
+ },
41
+ "devDependencies": {
42
+ "@testing-library/react": "^14.0.0",
43
+ "@types/jest": "^29.5.5",
44
+ "@types/lodash": "4.14.199",
45
+ "@types/react": "18.2.28",
46
+ "@types/react-dom": "18.2.13",
47
+ "@typescript-eslint/eslint-plugin": "^6.7.5",
48
+ "@typescript-eslint/parser": "^6.7.5",
49
+ "eslint": "8.51.0",
50
+ "eslint-config-prettier": "^9.0.0",
51
+ "eslint-import-resolver-typescript": "^3.6.1",
52
+ "eslint-plugin-import": "^2.28.1",
53
+ "eslint-plugin-prefer-arrow": "^1.2.3",
54
+ "eslint-plugin-prettier": "^5.0.0",
55
+ "eslint-plugin-react": "^7.33.2",
56
+ "eslint-plugin-react-hooks": "^4.6.0",
57
+ "eslint-plugin-simple-import-sort": "^10.0.0",
58
+ "eslint-plugin-tsdoc": "^0.2.17",
59
+ "jest": "29.7.0",
60
+ "jest-environment-jsdom": "^29.7.0",
61
+ "madge": "6.1.0",
62
+ "prettier": "3.0.3",
63
+ "react": "18.2.0",
64
+ "react-dom": "18.2.0",
65
+ "trash-cli": "5.0.0",
66
+ "ts-jest": "^29.1.1",
67
+ "typedoc": "^0.25.2",
68
+ "typescript": "5.2.2"
69
+ }
70
+ }
@@ -0,0 +1,4 @@
1
+ /* istanbul ignore file */
2
+
3
+ export * from './run-in-dom';
4
+ export * from './sleep';