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
package/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ MIT License
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # std-react-bindings
2
+
3
+ Data Bindings for React
4
+
5
+ A binding is a wrapper type that can be used to read, write, and observe changes in a source of truth.
6
+
7
+ This package provides an implementation of bindings that works well with React and React Native. It also provides a few convenient tools for working with these bindings.
8
+
9
+ ## Basic Example
10
+
11
+ In the following example, we demonstrate creating, reading, and updating a binding as well as observing it for changes in two ways:
12
+
13
+ - using `useBindingEffect`, which triggers a callback whenever the associated bindings change
14
+ - using `BindingsConsumer`, which runs a render function whenever the associated bindings change
15
+
16
+ ```typescript
17
+ import React from 'react';
18
+ import { BindingsConsumer, useBinding, useBindingEffect } from 'std-react-bindings';
19
+
20
+ export const MyComponent = () => {
21
+ // Creating a binding, initialized with 0
22
+ const myBinding = useBinding(() => 0, { id: 'myBinding' });
23
+
24
+ // Getting and logging the value of the binding
25
+ console.log('myBinding', myBinding.get()); // myBinding 0
26
+
27
+ // Setting the value of the binding
28
+ myBinding.set(1);
29
+
30
+ console.log('myBinding', myBinding.get()); // myBinding 1
31
+
32
+ // Registering a callback that will be triggered anytime the binding changes, while this component is mounted.
33
+ // By default, these calls are debounced.
34
+ useBindingEffect({ myBinding }, ({ myBinding }) => {
35
+ console.log('myBinding', myBinding);
36
+ });
37
+
38
+ const onIncClick = () => myBinding.set(myBinding.get() + 1);
39
+
40
+ // The rendered component includes a portion that will be automatically rerendered whenever the binding changes.
41
+ // By default, these rerenders are debounced.
42
+ return (
43
+ <div>
44
+ myBinding:&nbsp;
45
+ <BindingsConsumer bindings={{ myBinding }}>{({ myBinding }) => myBinding}</BindingsConsumer>
46
+ &nbsp;
47
+ <button onClick={onIncClick}>Increment</button>
48
+ </div>
49
+ );
50
+ };
51
+ ```
52
+
53
+ Things become a lot more interesting when you start passing bindings around, including them in React contexts, and dealing with asynchronous updates.
54
+
55
+ Bindings provide some additional functionality by default, such as locking, and they're also extensible, as we'll see more later. But, be sure to check out the API docs for more complete details.
56
+
57
+ For cases where you want to observe but not modify, you can use the `ReadonlyBinding` interface. This package also provides three specialized forms of readonly binding:
58
+
59
+ - derived bindings - bindings derived from zero or more other bindings
60
+ - const bindings - good for forcing non-binding wrapped data into a binding, for interfaces that expect such
61
+ - flattened bindings - bindings derived from bindings that point to other bindings
62
+
63
+ ## Another Example
64
+
65
+ In the following example, we make a component that is updated with a new random number every second. It displays the number as well as whether or not the number is even.
66
+
67
+ ```typescript
68
+ import React, { useEffect } from 'react';
69
+ import { Binding, BindingsConsumer, useBinding, useDerivedBinding } from 'std-react-bindings';
70
+
71
+ const streamRandomNumbers = (binding: Binding<number>) => {
72
+ const next = () => {
73
+ binding.set(Math.floor(Math.random() * 100));
74
+ timeout = setTimeout(next, 1000);
75
+ };
76
+
77
+ let timeout = setTimeout(next, 1000);
78
+ next();
79
+
80
+ return () => {
81
+ clearTimeout(timeout);
82
+ };
83
+ };
84
+
85
+ export const MyComponent = () => {
86
+ // Creating a binding initialized with 0
87
+ const myBinding = useBinding(() => 0, { id: 'myBinding', detectChanges: true });
88
+ // Creating a derived binding based on the evenness of myBinding's value
89
+ // These values are propagated in a debounced way by default
90
+ const isEven = useDerivedBinding({ myBinding }, ({ myBinding }) => myBinding % 2 === 0, { id: 'isEven' });
91
+
92
+ // Connecting to a function that will stream in a new random number every second, as long as this component is mounted
93
+ useEffect(() => {
94
+ const stop = streamRandomNumbers(myBinding);
95
+
96
+ return stop;
97
+ });
98
+
99
+ // The rendered component has two dynamically rendered portions, which will automatically be rerendered whenever their associated bindings
100
+ // change.
101
+ return (
102
+ <div>
103
+ <BindingsConsumer bindings={{ myBinding }}>{({ myBinding }) => myBinding}</BindingsConsumer>
104
+ &nbsp;is even:&nbsp;
105
+ <BindingsConsumer bindings={{ isEven }}>{({ isEven }) => (isEven ? 'true' : 'false')}</BindingsConsumer>
106
+ </div>
107
+ );
108
+ };
109
+ ```
110
+
111
+ In the above example, we could have also chosen to set `limitType: 'none'` on the `isEven` derived binding, which would change the limiter from the default, which is `'debounce'`, so that propagation of changes from `myBinding` to `isEven` would happen immediately. However, it's generally better to only do that when it's critical that data be in sync because too many chained updates could lead to reduced frame rates and laggy user interactions.
112
+
113
+ ## Extensibility Example
114
+
115
+ To demonstrate binding extensibility, let's revise the above example so that the `isEven` function is a property of `myBinding` directly, instead of being a derived binding.
116
+
117
+ ```typescript
118
+ export const MyComponent = () => {
119
+ // Creating a binding initialized with 0 with an extra isEven field
120
+ const myBinding = useBinding(() => 0, {
121
+ id: 'myBinding',
122
+ detectChanges: true,
123
+ addFields: (b) => ({
124
+ isEven: () => b.get() % 2 === 0
125
+ })
126
+ });
127
+
128
+ // Connecting to a function that will stream in a new random number every second, as long as this component is mounted
129
+ useEffect(() => streamRandomNumbers(myBinding));
130
+
131
+ // The dynamic renderer use the binding directly instead of extracting the value and we're using the injected isEven function
132
+ return (
133
+ <div>
134
+ <BindingsConsumer bindings={myBinding}>
135
+ {() => (
136
+ <>
137
+ {myBinding.get()}
138
+ &nbsp;is even:&nbsp;
139
+ {myBinding.isEven() ? 'true' : 'false'}
140
+ </>
141
+ )}
142
+ </BindingsConsumer>
143
+ </div>
144
+ );
145
+ };
146
+ ```
package/lib/bc/bc.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { BindingDependencies } from '../binding/types/binding-dependencies';
3
+ import type { BindingsConsumerRenderCallback } from '../components/BindingsConsumer';
4
+ /** Returns a BindingsConsumer JSX Element. This is useful as a shorthand especially when passing BindingsConsumers as props of other
5
+ * components */
6
+ export declare const BC: <DependenciesT extends BindingDependencies>(bindings: DependenciesT, children: BindingsConsumerRenderCallback<DependenciesT>) => React.JSX.Element;
7
+ //# sourceMappingURL=bc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bc.d.ts","sourceRoot":"","sources":["../../src/bc/bc.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAGrF;gBACgB;AAChB,eAAO,MAAM,EAAE,oJAGyD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './bc';
2
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/bc/exports.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './make-binding';
2
+ export * from './types/exports';
3
+ export * from './use-binding';
4
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/binding/exports.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare class DoubleLinkedList<ItemT> {
2
+ /** This is set to `undefined` on any list mutations and rebuilt when `toArray` is called if needed */
3
+ private allValues;
4
+ private firstNode;
5
+ private lastNode;
6
+ private length;
7
+ constructor(...items: ItemT[]);
8
+ readonly getLength: () => number;
9
+ readonly isEmpty: () => boolean;
10
+ readonly append: (item: ItemT) => Readonly<DoubleLinkedListNode<ItemT>>;
11
+ readonly prepend: (item: ItemT) => Readonly<DoubleLinkedListNode<ItemT>>;
12
+ readonly clear: () => void;
13
+ readonly getHead: () => Readonly<DoubleLinkedListNode<ItemT>> | undefined;
14
+ readonly getTail: () => Readonly<DoubleLinkedListNode<ItemT>> | undefined;
15
+ readonly toArray: () => Readonly<ItemT[]>;
16
+ readonly remove: (node: DoubleLinkedListNode<ItemT>) => boolean;
17
+ }
18
+ export declare class DoubleLinkedListNode<ItemT> {
19
+ list: DoubleLinkedList<ItemT> | undefined;
20
+ readonly value: ItemT;
21
+ previousNode?: DoubleLinkedListNode<ItemT> | undefined;
22
+ nextNode?: DoubleLinkedListNode<ItemT> | undefined;
23
+ constructor(list: DoubleLinkedList<ItemT> | undefined, value: ItemT, previousNode?: DoubleLinkedListNode<ItemT> | undefined, nextNode?: DoubleLinkedListNode<ItemT> | undefined);
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/binding/internal/DoubleLinkedList/index.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB,CAAC,KAAK;IACjC,sGAAsG;IACtG,OAAO,CAAC,SAAS,CAAgC;IAEjD,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,MAAM,CAAK;gBAEA,GAAG,KAAK,EAAE,KAAK,EAAE;IAMpC,SAAgB,SAAS,eAAqB;IAC9C,SAAgB,OAAO,gBAAsC;IAE7D,SAAgB,MAAM,SAAU,KAAK,KAAG,SAAS,qBAAqB,KAAK,CAAC,CAAC,CAgB3E;IAEF,SAAgB,OAAO,SAAU,KAAK,KAAG,SAAS,qBAAqB,KAAK,CAAC,CAAC,CAgB5E;IAEF,SAAgB,KAAK,aAInB;IAEF,SAAgB,OAAO,QAAO,SAAS,qBAAqB,KAAK,CAAC,CAAC,GAAG,SAAS,CAAmB;IAClG,SAAgB,OAAO,QAAO,SAAS,qBAAqB,KAAK,CAAC,CAAC,GAAG,SAAS,CAAkB;IAEjG,SAAgB,OAAO,QAAO,SAAS,KAAK,EAAE,CAAC,CAe7C;IAEF,SAAgB,MAAM,SAAU,qBAAqB,KAAK,CAAC,aAsCzD;CACH;AAED,qBAAa,oBAAoB,CAAC,KAAK;IAE5B,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS;aAChC,KAAK,EAAE,KAAK;IACrB,YAAY,CAAC;IACb,QAAQ,CAAC;gBAHT,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS,EAChC,KAAK,EAAE,KAAK,EACrB,YAAY,CAAC,yCAA6B,EAC1C,QAAQ,CAAC,yCAA6B;CAEhD"}
@@ -0,0 +1,60 @@
1
+ import type { Binding } from '../types/binding';
2
+ import type { BindingConstructorArgs } from '../types/binding-args';
3
+ import type { BindingInitializer } from '../types/binding-initializer';
4
+ import type { ChangeListener } from '../types/change-listener';
5
+ import type { SetValueTransformer } from '../types/set-value-transformer';
6
+ /** The standard implementation of a read-write binding */
7
+ export declare class BindingImpl<GetType = any> implements Binding<GetType> {
8
+ readonly isBinding = true;
9
+ readonly id: string;
10
+ readonly uid: string;
11
+ readonly setValueTransformer: SetValueTransformer<GetType> | undefined;
12
+ /** The stored value of the binding */
13
+ private value_;
14
+ /** An ID updated every time the value is changed. This value is unique to this runtime. */
15
+ private changeUid_;
16
+ /** Registered change listeners */
17
+ private onChangeListeners_?;
18
+ /**
19
+ * A flag indicating whether or not this binding was modified. This is initially `false` when the binding is created and set to `true`
20
+ * when `set` is called (even if the underlying value doesn't actually change).
21
+ *
22
+ * This can also be set manually using `setIsModified`.
23
+ */
24
+ private isModified_;
25
+ /** This binding is considered to be locked if `> 0` */
26
+ private lockedCount_;
27
+ /**
28
+ * We keep track of the most-recent mutating call made while this binding is locked. When it becomes unlocked, we apply the requested
29
+ * change.
30
+ */
31
+ private pending_;
32
+ /**
33
+ * In addition to tracking the most-recent mutating call made while this binding is locked, we also track if any of those mutating calls
34
+ * were resets. If they were, when this binding becomes unlocked, we first reset and then apply the pending update.
35
+ */
36
+ private hasPendingReset_;
37
+ /** The value equality checker function */
38
+ private areEqual_?;
39
+ /** If `true`, `areEqual_` (or the default) is used to determine if the value has changed */
40
+ private detectChanges_;
41
+ /** The initializer function, which can be used to reset the binding */
42
+ private initializer_;
43
+ /**
44
+ * @param initializer - A function called to initialize this binding's value, which can also be called to reset its value.
45
+ * @param args - Additional arguments for configuring this binding.
46
+ */
47
+ constructor(initializer: BindingInitializer<GetType>, args: BindingConstructorArgs<GetType>);
48
+ readonly get: () => GetType;
49
+ readonly getChangeUid: () => string;
50
+ readonly reset: () => void;
51
+ readonly setRaw: (newValue: GetType) => void;
52
+ readonly set: (newValue: GetType) => void;
53
+ readonly isModified: () => boolean;
54
+ readonly setIsModified: (newIsModified: boolean) => void;
55
+ readonly isLocked: () => boolean;
56
+ readonly lock: () => () => void;
57
+ readonly addChangeListener: (listener: ChangeListener) => () => void;
58
+ readonly triggerChangeListeners: () => number;
59
+ }
60
+ //# sourceMappingURL=binding-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-impl.d.ts","sourceRoot":"","sources":["../../../src/binding/internal/binding-impl.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAW1E,0DAA0D;AAC1D,qBAAa,WAAW,CAAC,OAAO,GAAG,GAAG,CAAE,YAAW,OAAO,CAAC,OAAO,CAAC;IAGjE,SAAgB,SAAS,QAAQ;IACjC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,GAAG,SAAa;IAEhC,SAAgB,mBAAmB,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAI9E,sCAAsC;IACtC,OAAO,CAAC,MAAM,CAAU;IAExB,4FAA4F;IAC5F,OAAO,CAAC,UAAU,CAAY;IAC9B,kCAAkC;IAClC,OAAO,CAAC,kBAAkB,CAAC,CAAmC;IAE9D;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAS;IAE5B,uDAAuD;IACvD,OAAO,CAAC,YAAY,CAAK;IACzB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAiD;IACjE;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAsC;IACxD,4FAA4F;IAC5F,OAAO,CAAC,cAAc,CAAU;IAEhC,uEAAuE;IACvE,OAAO,CAAC,YAAY,CAA8B;IAElD;;;OAGG;gBACS,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,CAAC,OAAO,CAAC;IAgB3F,SAAgB,GAAG,gBAAqB;IAExC,SAAgB,YAAY,eAAyB;IAIrD,SAAgB,KAAK,aAanB;IAEF,SAAgB,MAAM,aAAc,OAAO,UA4BzC;IAEF,SAAgB,GAAG,aAAc,OAAO,UAWtC;IAIF,SAAgB,UAAU,gBAA0B;IAEpD,SAAgB,aAAa,kBAAmB,OAAO,UAErD;IAIF,SAAgB,QAAQ,gBAA+B;IAEvD,SAAgB,IAAI,mBAmDlB;IAIF,SAAgB,iBAAiB,aAAc,cAAc,gBAmB3D;IAEF,SAAgB,sBAAsB,eAWpC;CACH"}
@@ -0,0 +1,3 @@
1
+ /** The duration after which a warning will be logged if a lock hasn't been released */
2
+ export declare const LOCK_DURATION_WARNING_INTERVAL_MSEC: number;
3
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/binding/internal/consts.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,mCAAmC,QAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { EmptyObject } from '../types/empty';
2
+ import type { Binding } from './types/binding';
3
+ import type { MakeBindingArgs } from './types/binding-args';
4
+ import type { BindingInitializer } from './types/binding-initializer';
5
+ /** Makes a binding without using any React contexts. */
6
+ export declare const makeBinding: <GetType = any, ExtraFieldsT extends object = EmptyObject>(initialValue: BindingInitializer<GetType>, args: MakeBindingArgs<GetType, ExtraFieldsT>) => Binding<GetType> & ExtraFieldsT;
7
+ //# sourceMappingURL=make-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-binding.d.ts","sourceRoot":"","sources":["../../src/binding/make-binding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,WAAW,wLAgBvB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { DependencyList } from 'react';
2
+ import type { EmptyObject } from '../../types/empty';
3
+ import type { Binding } from './binding';
4
+ import type { SetValueTransformer } from './set-value-transformer';
5
+ /** Post-initializer arguments used to configure bindings */
6
+ export interface BindingConstructorArgs<GetType = any> {
7
+ /** A technical, but human-readable ID, which isn't guaranteed to be unique */
8
+ id: string;
9
+ /**
10
+ * A transformer function called prior to storing the value when using the `set` method
11
+ *
12
+ * @param newValue - The proposed new value
13
+ * @param thisBinding - The binding being updated
14
+ *
15
+ * @returns The transformed value to set the binding to
16
+ */
17
+ setValueTransformer?: SetValueTransformer<GetType>;
18
+ /**
19
+ * If specified, overrides the function used to compare values
20
+ *
21
+ * @defaultValue `_.isEqual`, which can be globally overridden using `setAreEqual`
22
+ */
23
+ areEqual?: (a: GetType, b: GetType) => boolean;
24
+ /**
25
+ * - If `true` – `areEqual` is used to compare the old and new values when `set`/`setRaw` are called. If the values are equal, the
26
+ * binding value won't be changed. If they're unequal, the binding value will be changed and listeners will be notified.
27
+ * - If `false` – old and new values aren't compared when `set`/`setRaw` are called. The binding will always be changed and listeners
28
+ * will always be notified.
29
+ *
30
+ * @defaultValue `false`
31
+ */
32
+ detectChanges?: boolean;
33
+ }
34
+ /** The post-initializer arguments that are passed to `makeBinding` */
35
+ export interface MakeBindingArgs<GetType = any, ExtraFieldsT extends object = EmptyObject> extends BindingConstructorArgs<GetType> {
36
+ /** Use to support injecting additional fields into bindings */
37
+ addFields?: (thisBinding: Binding<GetType>) => ExtraFieldsT;
38
+ }
39
+ /** The post-initializer arguments that are passed to `useBinding` */
40
+ export interface UseBindingArgs<GetType = any, ExtraFieldsT extends object = EmptyObject> extends MakeBindingArgs<GetType, ExtraFieldsT> {
41
+ /** Hook dependencies */
42
+ deps?: DependencyList;
43
+ }
44
+ //# sourceMappingURL=binding-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-args.d.ts","sourceRoot":"","sources":["../../../src/binding/types/binding-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB,CAAC,OAAO,GAAG,GAAG;IACnD,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEnD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC/C;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe,CAAC,OAAO,GAAG,GAAG,EAAE,YAAY,SAAS,MAAM,GAAG,WAAW,CAAE,SAAQ,sBAAsB,CAAC,OAAO,CAAC;IAChI,+DAA+D;IAC/D,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC;CAC7D;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,GAAG,EAAE,YAAY,SAAS,MAAM,GAAG,WAAW,CAAE,SAAQ,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC;IACtI,wBAAwB;IACxB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB"}
@@ -0,0 +1,5 @@
1
+ import type { ReadonlyBinding } from './readonly-binding';
2
+ export type BindingArrayDependencies = Array<ReadonlyBinding | undefined>;
3
+ export type NamedBindingDependencies = Record<string, ReadonlyBinding | undefined>;
4
+ export type BindingDependencies = ReadonlyBinding | BindingArrayDependencies | NamedBindingDependencies | undefined;
5
+ //# sourceMappingURL=binding-dependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-dependencies.d.ts","sourceRoot":"","sources":["../../../src/binding/types/binding-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC;AAEnF,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,wBAAwB,GAAG,wBAAwB,GAAG,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** A function called to initialize a binding's value, which can also be called to reset its value. */
2
+ export type BindingInitializer<GetType> = (isReset: boolean) => GetType;
3
+ //# sourceMappingURL=binding-initializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-initializer.d.ts","sourceRoot":"","sources":["../../../src/binding/types/binding-initializer.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ReadonlyBinding } from './readonly-binding';
2
+ import type { SetValueTransformer } from './set-value-transformer';
3
+ /**
4
+ * A binding is a stored piece of data that notifies registered listeners when changed.
5
+ *
6
+ * @see `useBinding`
7
+ */
8
+ export interface Binding<GetType = any> extends ReadonlyBinding<GetType> {
9
+ /** Resets the binding back to its initial value and marks the binding as non-modified. */
10
+ readonly reset: () => void;
11
+ /** Sets the value, using the result of `setValueTransformer` if set, and then marks the binding as modified. */
12
+ readonly set: (newValue: GetType) => void;
13
+ /** Sets the internal value without transforming or marking as changed. Don't normally use this! */
14
+ readonly setRaw: (newValue: GetType) => void;
15
+ /** Sets the binding as having been modified or not */
16
+ readonly setIsModified: (isModified: boolean) => void;
17
+ /** If set, a function to transform the value before it's stored */
18
+ readonly setValueTransformer?: SetValueTransformer<GetType>;
19
+ /** Forcibly triggers the change listeners. Don't normally use this! */
20
+ readonly triggerChangeListeners: () => void;
21
+ }
22
+ //# sourceMappingURL=binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../../src/binding/types/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,OAAO,CAAC,OAAO,GAAG,GAAG,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IACtE,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,gHAAgH;IAChH,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,oGAAoG;IACpG,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C,sDAAsD;IACtD,QAAQ,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtD,mEAAmE;IACnE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE5D,wEAAwE;IACxE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,IAAI,CAAC;CAC7C"}
@@ -0,0 +1,5 @@
1
+ /** Called when a change is made */
2
+ export type ChangeListener = () => void;
3
+ /** Call to remove a change listener */
4
+ export type ChangeListenerRemover = () => void;
5
+ //# sourceMappingURL=change-listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-listener.d.ts","sourceRoot":"","sources":["../../../src/binding/types/change-listener.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,uCAAuC;AACvC,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from './binding';
2
+ export * from './binding-args';
3
+ export * from './binding-dependencies';
4
+ export * from './binding-initializer';
5
+ export * from './change-listener';
6
+ export * from './infer-binding-value-types';
7
+ export * from './infer-bindings-array-value-types';
8
+ export * from './infer-named-binding-value-types';
9
+ export * from './inference';
10
+ export * from './readonly-binding';
11
+ export * from './set-value-transformer';
12
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/binding/types/exports.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BindingArrayDependencies, BindingDependencies, NamedBindingDependencies } from './binding-dependencies';
2
+ import type { InferBindingsArrayValueTypes } from './infer-bindings-array-value-types';
3
+ import type { InferNamedBindingsValueTypes } from './infer-named-binding-value-types';
4
+ import type { InferBindingGetType } from './inference';
5
+ import type { ReadonlyBinding } from './readonly-binding';
6
+ /** Infers the values of either a single binding, bindings in an array or tuple, or a record with binding values */
7
+ export type InferBindingValueTypes<DependenciesT extends BindingDependencies> = DependenciesT extends ReadonlyBinding ? InferBindingGetType<DependenciesT> : DependenciesT extends NamedBindingDependencies ? InferNamedBindingsValueTypes<DependenciesT> : DependenciesT extends BindingArrayDependencies ? InferBindingsArrayValueTypes<DependenciesT> : Record<string, never>;
8
+ //# sourceMappingURL=infer-binding-value-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-binding-value-types.d.ts","sourceRoot":"","sources":["../../../src/binding/types/infer-binding-value-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,mHAAmH;AACnH,MAAM,MAAM,sBAAsB,CAAC,aAAa,SAAS,mBAAmB,IAAI,aAAa,SAAS,eAAe,GACjH,mBAAmB,CAAC,aAAa,CAAC,GAClC,aAAa,SAAS,wBAAwB,GAC9C,4BAA4B,CAAC,aAAa,CAAC,GAC3C,aAAa,SAAS,wBAAwB,GAC9C,4BAA4B,CAAC,aAAa,CAAC,GAC3C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BindingArrayDependencies } from './binding-dependencies';
2
+ import type { InferBindingGetType } from './inference';
3
+ import type { ReadonlyBinding } from './readonly-binding';
4
+ /** Infers the value types from bindings arrays */
5
+ export type InferBindingsArrayValueTypes<BindingsArrayT extends BindingArrayDependencies> = {
6
+ [KeyT in keyof BindingsArrayT]: BindingsArrayT[KeyT] extends ReadonlyBinding ? InferBindingGetType<BindingsArrayT[KeyT]> : BindingsArrayT[KeyT] extends ReadonlyBinding | undefined ? InferBindingGetType<BindingsArrayT[KeyT]> | undefined : BindingsArrayT[KeyT];
7
+ };
8
+ //# sourceMappingURL=infer-bindings-array-value-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-bindings-array-value-types.d.ts","sourceRoot":"","sources":["../../../src/binding/types/infer-bindings-array-value-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,kDAAkD;AAClD,MAAM,MAAM,4BAA4B,CAAC,cAAc,SAAS,wBAAwB,IAAI;KACzF,IAAI,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,eAAe,GACxE,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GACzC,cAAc,CAAC,IAAI,CAAC,SAAS,eAAe,GAAG,SAAS,GACxD,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GACrD,cAAc,CAAC,IAAI,CAAC;CACzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { NamedBindingDependencies } from './binding-dependencies';
2
+ import type { InferBindingGetType } from './inference';
3
+ import type { ReadonlyBinding } from './readonly-binding';
4
+ /** Infers the value types from named bindings */
5
+ export type InferNamedBindingsValueTypes<NamedBindingsT extends NamedBindingDependencies> = {
6
+ [KeyT in keyof NamedBindingsT]: NamedBindingsT[KeyT] extends ReadonlyBinding ? InferBindingGetType<NamedBindingsT[KeyT]> : NamedBindingsT[KeyT] extends ReadonlyBinding | undefined ? InferBindingGetType<NamedBindingsT[KeyT]> | undefined : NamedBindingsT[KeyT];
7
+ };
8
+ //# sourceMappingURL=infer-named-binding-value-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-named-binding-value-types.d.ts","sourceRoot":"","sources":["../../../src/binding/types/infer-named-binding-value-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,iDAAiD;AACjD,MAAM,MAAM,4BAA4B,CAAC,cAAc,SAAS,wBAAwB,IAAI;KACzF,IAAI,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,eAAe,GACxE,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GACzC,cAAc,CAAC,IAAI,CAAC,SAAS,eAAe,GAAG,SAAS,GACxD,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GACrD,cAAc,CAAC,IAAI,CAAC;CACzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ReadonlyBinding } from './readonly-binding';
2
+ /** Infers the stored value type from a binding type */
3
+ export type InferBindingGetType<BindingT> = BindingT extends ReadonlyBinding<infer GetType> ? GetType : never;
4
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../../src/binding/types/inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI,QAAQ,SAAS,eAAe,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { ChangeListener, ChangeListenerRemover } from './change-listener';
2
+ /** The readonly interface for bindings */
3
+ export interface ReadonlyBinding<GetType = any> {
4
+ /** A marker indicating that this is a binding type */
5
+ readonly isBinding: true;
6
+ /** A technical, but human-readable ID, which isn't guaranteed to be unique */
7
+ readonly id: string;
8
+ /** An ID that's unique to this runtime */
9
+ readonly uid: string;
10
+ /**
11
+ * Adds a listener that will be called when this binding changes.
12
+ *
13
+ * @see `useBindingEffect` and `BindingsConsumer`
14
+ *
15
+ * @returns a function that may be used to remove the added listener.
16
+ */
17
+ readonly addChangeListener: (listener: ChangeListener) => ChangeListenerRemover;
18
+ /** @returns the value */
19
+ readonly get: () => GetType;
20
+ /** Every time the value is changed, the change uid is updated */
21
+ readonly getChangeUid: () => string;
22
+ /** @returns `true` if this binding has been marked as being modified */
23
+ readonly isModified: () => boolean;
24
+ /** @returns `true` if the binding is locked */
25
+ readonly isLocked: () => boolean;
26
+ /**
27
+ * Increments the lock count and returns a method to decrement it. A binding is locked if its lock
28
+ * count is `> 0`. When a binding is locked, mutating calls (`reset`/`set`/`setRaw`) won't have an immediate effect. However, if a
29
+ * mutating call is made on a locked binding, the change will be applied once the binding becomes unlocked.
30
+ *
31
+ * @returns a function for decrementing this binding's lock count.
32
+ */
33
+ readonly lock: () => () => void;
34
+ }
35
+ //# sourceMappingURL=readonly-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readonly-binding.d.ts","sourceRoot":"","sources":["../../../src/binding/types/readonly-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,0CAA0C;AAC1C,MAAM,WAAW,eAAe,CAAC,OAAO,GAAG,GAAG;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAEzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,qBAAqB,CAAC;IAEhF,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IAEnC,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,IAAI,CAAC;CACjC"}
@@ -0,0 +1,11 @@
1
+ import type { ReadonlyBinding } from './readonly-binding';
2
+ /**
3
+ * A transformer function called prior to storing the value when using the `set` method
4
+ *
5
+ * @param newValue - The proposed new value
6
+ * @param thisBinding - The binding being updated
7
+ *
8
+ * @returns The transformed value to set the binding to
9
+ */
10
+ export type SetValueTransformer<GetType> = (newValue: GetType, thisBinding: ReadonlyBinding<GetType>) => GetType;
11
+ //# sourceMappingURL=set-value-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-value-transformer.d.ts","sourceRoot":"","sources":["../../../src/binding/types/set-value-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { EmptyObject } from '../types/empty';
2
+ import type { Binding } from './types/binding';
3
+ import type { UseBindingArgs } from './types/binding-args';
4
+ import type { BindingInitializer } from './types/binding-initializer';
5
+ /** Makes a binding memo'd using the specified dependencies */
6
+ export declare const useBinding: <GetType = any, ExtraFieldsT extends object = EmptyObject>(initialValue: BindingInitializer<GetType>, args: UseBindingArgs<GetType, ExtraFieldsT>) => Binding<GetType> & ExtraFieldsT;
7
+ //# sourceMappingURL=use-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-binding.d.ts","sourceRoot":"","sources":["../../src/binding/use-binding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAItE,8DAA8D;AAC9D,eAAO,MAAM,UAAU,uLAIyG,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './lock-utils';
2
+ export * from './modified-utils';
3
+ export * from './type-utils';
4
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/binding-utils/exports.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Runs a function to make a value and then runs a subsequent function. The subsequent function is run even if an exception is thrown while
3
+ * making the value. This efficiently handles value generation functions that return promises and that don't.
4
+ */
5
+ export declare const makeValueThenDo: <T>(makeValue: () => T | Promise<T>, thenDo: (value?: T | undefined) => void) => T | Promise<T>;
6
+ //# sourceMappingURL=make-value-then-do.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-value-then-do.d.ts","sourceRoot":"","sources":["../../../src/binding-utils/internal/make-value-then-do.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,eAAe,0EAA+D,IAAI,mBA8B9F,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ReadonlyBinding } from '../binding/types/readonly-binding';
2
+ /**
3
+ * Checks if any of the specified bindings have been locked.
4
+ *
5
+ * @param bindings - The bindings to check
6
+ *
7
+ * @returns `true` if any of the specified bindings are locked, `false` otherwise.
8
+ */
9
+ export declare const areAnyBindingsLocked: (bindings: Array<ReadonlyBinding | undefined>) => boolean;
10
+ /**
11
+ * Locks all the specified bindings and returns a function for unlocking them in reverse order.
12
+ *
13
+ * @param bindings - The bindings to be locked
14
+ *
15
+ * @returns a function to unlock all of the specified bindings, in reverse order
16
+ */
17
+ export declare const lockAllBindings: (bindings: Array<ReadonlyBinding | undefined>) => () => void;
18
+ /**
19
+ * Locks the specified bindings until the functions result is resolved or rejected
20
+ *
21
+ * @param bindings - The bindings to be locked
22
+ * @param func - The function to run while the bindings are locked
23
+ *
24
+ * @returns The result of the specified function
25
+ */
26
+ export declare const lockBindingsAndDo: <T>(bindings: Array<ReadonlyBinding | undefined>, func: () => T | Promise<T>) => T | Promise<T>;
27
+ //# sourceMappingURL=lock-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-utils.d.ts","sourceRoot":"","sources":["../../src/binding-utils/lock-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aAAc,MAAM,eAAe,GAAG,SAAS,CAAC,YAQhF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,aAAc,MAAM,eAAe,GAAG,SAAS,CAAC,eAQ3E,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,eAAe,GAAG,SAAS,CAAC,+CAIhF,CAAC"}