zeed 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/AGENTS.md +50 -211
  2. package/README.md +16 -0
  3. package/dist/_experiments/bitcask.cjs +243 -1
  4. package/dist/_experiments/bitcask.cjs.map +1 -1
  5. package/dist/_experiments/bitcask.mjs +230 -1
  6. package/dist/_experiments/bitcask.mjs.map +1 -1
  7. package/dist/bin-BAoS4qtm.mjs +593 -0
  8. package/dist/{bin-SPdenYkw.mjs.map → bin-BAoS4qtm.mjs.map} +1 -1
  9. package/dist/bin-Ddaz2lxM.cjs +862 -0
  10. package/dist/{bin-Ce3i6ABn.cjs.map → bin-Ddaz2lxM.cjs.map} +1 -1
  11. package/dist/browser/base64.cjs +14 -1
  12. package/dist/browser/base64.cjs.map +1 -1
  13. package/dist/browser/base64.mjs +12 -1
  14. package/dist/browser/base64.mjs.map +1 -1
  15. package/dist/browser/gravatar.cjs +186 -1
  16. package/dist/browser/gravatar.cjs.map +1 -1
  17. package/dist/browser/gravatar.mjs +184 -1
  18. package/dist/browser/gravatar.mjs.map +1 -1
  19. package/dist/browser/index.cjs +14 -1
  20. package/dist/browser/index.mjs +8 -1
  21. package/dist/browser/localstorage.cjs +46 -1
  22. package/dist/browser/localstorage.cjs.map +1 -1
  23. package/dist/browser/localstorage.mjs +45 -1
  24. package/dist/browser/localstorage.mjs.map +1 -1
  25. package/dist/browser/log/index.cjs +8 -1
  26. package/dist/browser/log/index.mjs +5 -1
  27. package/dist/browser/log/log-browser-factory.cjs +65 -1
  28. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  29. package/dist/browser/log/log-browser-factory.mjs +64 -1
  30. package/dist/browser/log/log-browser-factory.mjs.map +1 -1
  31. package/dist/browser/log/log-browser.cjs +72 -1
  32. package/dist/browser/log/log-browser.cjs.map +1 -1
  33. package/dist/browser/log/log-browser.mjs +71 -1
  34. package/dist/browser/log/log-browser.mjs.map +1 -1
  35. package/dist/browser/log/log-colors.cjs +11 -1
  36. package/dist/browser/log/log-colors.cjs.map +1 -1
  37. package/dist/browser/log/log-colors.mjs +9 -1
  38. package/dist/browser/log/log-colors.mjs.map +1 -1
  39. package/dist/browser/log/log-context-browser.cjs +25 -1
  40. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  41. package/dist/browser/log/log-context-browser.mjs +23 -1
  42. package/dist/browser/log/log-context-browser.mjs.map +1 -1
  43. package/dist/chunk-DQk6qfdC.mjs +18 -0
  44. package/dist/chunk-uaV2rQ02.cjs +53 -0
  45. package/dist/common/assert.cjs +22 -1
  46. package/dist/common/assert.cjs.map +1 -1
  47. package/dist/common/assert.mjs +19 -1
  48. package/dist/common/assert.mjs.map +1 -1
  49. package/dist/common/bin/index.cjs +106 -1
  50. package/dist/common/bin/index.cjs.map +1 -1
  51. package/dist/common/bin/index.mjs +98 -1
  52. package/dist/common/bin/index.mjs.map +1 -1
  53. package/dist/common/bin/lib0/binary.cjs +146 -1
  54. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  55. package/dist/common/bin/lib0/binary.mjs +80 -1
  56. package/dist/common/bin/lib0/binary.mjs.map +1 -1
  57. package/dist/common/bin/lib0/buffer.cjs +42 -1
  58. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  59. package/dist/common/bin/lib0/buffer.mjs +38 -1
  60. package/dist/common/bin/lib0/buffer.mjs.map +1 -1
  61. package/dist/common/bin/lib0/create.cjs +24 -1
  62. package/dist/common/bin/lib0/create.cjs.map +1 -1
  63. package/dist/common/bin/lib0/create.mjs +21 -1
  64. package/dist/common/bin/lib0/create.mjs.map +1 -1
  65. package/dist/common/bin/lib0/decoding.cjs +325 -1
  66. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  67. package/dist/common/bin/lib0/decoding.mjs +298 -1
  68. package/dist/common/bin/lib0/decoding.mjs.map +1 -1
  69. package/dist/common/bin/lib0/encoding.cjs +404 -1
  70. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  71. package/dist/common/bin/lib0/encoding.mjs +377 -1
  72. package/dist/common/bin/lib0/encoding.mjs.map +1 -1
  73. package/dist/common/bin/lib0/string.cjs +81 -1
  74. package/dist/common/bin/lib0/string.cjs.map +1 -1
  75. package/dist/common/bin/lib0/string.mjs +71 -1
  76. package/dist/common/bin/lib0/string.mjs.map +1 -1
  77. package/dist/common/crypto/aes-sealed.cjs +34 -1
  78. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  79. package/dist/common/crypto/aes-sealed.mjs +32 -1
  80. package/dist/common/crypto/aes-sealed.mjs.map +1 -1
  81. package/dist/common/crypto/crypto.cjs +91 -1
  82. package/dist/common/crypto/crypto.cjs.map +1 -1
  83. package/dist/common/crypto/crypto.mjs +80 -1
  84. package/dist/common/crypto/crypto.mjs.map +1 -1
  85. package/dist/common/crypto/index.cjs +23 -1
  86. package/dist/common/crypto/index.mjs +5 -1
  87. package/dist/common/crypto/xaes.cjs +128 -1
  88. package/dist/common/crypto/xaes.cjs.map +1 -1
  89. package/dist/common/crypto/xaes.mjs +123 -1
  90. package/dist/common/crypto/xaes.mjs.map +1 -1
  91. package/dist/common/csv.cjs +49 -4
  92. package/dist/common/csv.cjs.map +1 -1
  93. package/dist/common/csv.mjs +46 -4
  94. package/dist/common/csv.mjs.map +1 -1
  95. package/dist/common/data/array.cjs +299 -1
  96. package/dist/common/data/array.cjs.map +1 -1
  97. package/dist/common/data/array.mjs +274 -1
  98. package/dist/common/data/array.mjs.map +1 -1
  99. package/dist/common/data/basex-secure.cjs +30 -1
  100. package/dist/common/data/basex-secure.mjs +3 -1
  101. package/dist/common/data/basex.cjs +163 -1
  102. package/dist/common/data/basex.cjs.map +1 -1
  103. package/dist/common/data/basex.mjs +152 -1
  104. package/dist/common/data/basex.mjs.map +1 -1
  105. package/dist/common/data/bin-types.mjs +1 -1
  106. package/dist/common/data/bin.cjs +21 -1
  107. package/dist/common/data/bin.mjs +3 -1
  108. package/dist/common/data/camelcase.cjs +27 -1
  109. package/dist/common/data/camelcase.cjs.map +1 -1
  110. package/dist/common/data/camelcase.mjs +22 -1
  111. package/dist/common/data/camelcase.mjs.map +1 -1
  112. package/dist/common/data/convert.cjs +104 -1
  113. package/dist/common/data/convert.cjs.map +1 -1
  114. package/dist/common/data/convert.mjs +88 -1
  115. package/dist/common/data/convert.mjs.map +1 -1
  116. package/dist/common/data/datauri.cjs +32 -1
  117. package/dist/common/data/datauri.cjs.map +1 -1
  118. package/dist/common/data/datauri.mjs +27 -1
  119. package/dist/common/data/datauri.mjs.map +1 -1
  120. package/dist/common/data/day-legacy.cjs +148 -1
  121. package/dist/common/data/day-legacy.cjs.map +1 -1
  122. package/dist/common/data/day-legacy.mjs +143 -1
  123. package/dist/common/data/day-legacy.mjs.map +1 -1
  124. package/dist/common/data/day.cjs +335 -1
  125. package/dist/common/data/day.cjs.map +1 -1
  126. package/dist/common/data/day.mjs +305 -1
  127. package/dist/common/data/day.mjs.map +1 -1
  128. package/dist/common/data/decimal.cjs +28 -1
  129. package/dist/common/data/decimal.cjs.map +1 -1
  130. package/dist/common/data/decimal.mjs +23 -1
  131. package/dist/common/data/decimal.mjs.map +1 -1
  132. package/dist/common/data/deep.cjs +57 -1
  133. package/dist/common/data/deep.cjs.map +1 -1
  134. package/dist/common/data/deep.mjs +54 -1
  135. package/dist/common/data/deep.mjs.map +1 -1
  136. package/dist/common/data/diff.cjs +62 -1
  137. package/dist/common/data/diff.cjs.map +1 -1
  138. package/dist/common/data/diff.mjs +60 -1
  139. package/dist/common/data/diff.mjs.map +1 -1
  140. package/dist/common/data/distributed.cjs +24 -1
  141. package/dist/common/data/distributed.cjs.map +1 -1
  142. package/dist/common/data/distributed.mjs +22 -1
  143. package/dist/common/data/distributed.mjs.map +1 -1
  144. package/dist/common/data/format.cjs +63 -1
  145. package/dist/common/data/format.cjs.map +1 -1
  146. package/dist/common/data/format.mjs +59 -1
  147. package/dist/common/data/format.mjs.map +1 -1
  148. package/dist/common/data/html.cjs +13 -1
  149. package/dist/common/data/html.cjs.map +1 -1
  150. package/dist/common/data/html.mjs +10 -1
  151. package/dist/common/data/html.mjs.map +1 -1
  152. package/dist/common/data/index.cjs +296 -1
  153. package/dist/common/data/index.mjs +37 -1
  154. package/dist/common/data/is.cjs +106 -1
  155. package/dist/common/data/is.cjs.map +1 -1
  156. package/dist/common/data/is.mjs +85 -1
  157. package/dist/common/data/is.mjs.map +1 -1
  158. package/dist/common/data/json.cjs +70 -1
  159. package/dist/common/data/json.cjs.map +1 -1
  160. package/dist/common/data/json.mjs +65 -1
  161. package/dist/common/data/json.mjs.map +1 -1
  162. package/dist/common/data/list.cjs +32 -1
  163. package/dist/common/data/list.cjs.map +1 -1
  164. package/dist/common/data/list.mjs +27 -1
  165. package/dist/common/data/list.mjs.map +1 -1
  166. package/dist/common/data/lru.mjs +1 -1
  167. package/dist/common/data/math.cjs +79 -1
  168. package/dist/common/data/math.cjs.map +1 -1
  169. package/dist/common/data/math.mjs +65 -1
  170. package/dist/common/data/math.mjs.map +1 -1
  171. package/dist/common/data/message.cjs +30 -1
  172. package/dist/common/data/message.cjs.map +1 -1
  173. package/dist/common/data/message.mjs +28 -1
  174. package/dist/common/data/message.mjs.map +1 -1
  175. package/dist/common/data/object-changes.cjs +66 -1
  176. package/dist/common/data/object-changes.cjs.map +1 -1
  177. package/dist/common/data/object-changes.mjs +63 -1
  178. package/dist/common/data/object-changes.mjs.map +1 -1
  179. package/dist/common/data/object.cjs +112 -1
  180. package/dist/common/data/object.cjs.map +1 -1
  181. package/dist/common/data/object.mjs +104 -1
  182. package/dist/common/data/object.mjs.map +1 -1
  183. package/dist/common/data/orderby.cjs +42 -1
  184. package/dist/common/data/orderby.cjs.map +1 -1
  185. package/dist/common/data/orderby.mjs +37 -1
  186. package/dist/common/data/orderby.mjs.map +1 -1
  187. package/dist/common/data/path.cjs +26 -1
  188. package/dist/common/data/path.cjs.map +1 -1
  189. package/dist/common/data/path.mjs +25 -1
  190. package/dist/common/data/path.mjs.map +1 -1
  191. package/dist/common/data/regexp.cjs +12 -1
  192. package/dist/common/data/regexp.cjs.map +1 -1
  193. package/dist/common/data/regexp.mjs +10 -1
  194. package/dist/common/data/regexp.mjs.map +1 -1
  195. package/dist/common/data/rounding.cjs +107 -1
  196. package/dist/common/data/rounding.cjs.map +1 -1
  197. package/dist/common/data/rounding.mjs +95 -1
  198. package/dist/common/data/rounding.mjs.map +1 -1
  199. package/dist/common/data/signal.cjs +39 -1
  200. package/dist/common/data/signal.cjs.map +1 -1
  201. package/dist/common/data/signal.mjs +38 -1
  202. package/dist/common/data/signal.mjs.map +1 -1
  203. package/dist/common/data/sortable.cjs +35 -1
  204. package/dist/common/data/sortable.cjs.map +1 -1
  205. package/dist/common/data/sortable.mjs +31 -1
  206. package/dist/common/data/sortable.mjs.map +1 -1
  207. package/dist/common/data/sorted.cjs +54 -1
  208. package/dist/common/data/sorted.cjs.map +1 -1
  209. package/dist/common/data/sorted.mjs +53 -1
  210. package/dist/common/data/sorted.mjs.map +1 -1
  211. package/dist/common/data/string-deburr.cjs +240 -1
  212. package/dist/common/data/string-deburr.cjs.map +1 -1
  213. package/dist/common/data/string-deburr.mjs +238 -1
  214. package/dist/common/data/string-deburr.mjs.map +1 -1
  215. package/dist/common/data/string-hash-fnv.cjs +69 -1
  216. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  217. package/dist/common/data/string-hash-fnv.mjs +67 -1
  218. package/dist/common/data/string-hash-fnv.mjs.map +1 -1
  219. package/dist/common/data/string-hash-pool.cjs +28 -1
  220. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  221. package/dist/common/data/string-hash-pool.mjs +27 -1
  222. package/dist/common/data/string-hash-pool.mjs.map +1 -1
  223. package/dist/common/data/url.cjs +98 -2
  224. package/dist/common/data/url.cjs.map +1 -1
  225. package/dist/common/data/url.mjs +91 -2
  226. package/dist/common/data/url.mjs.map +1 -1
  227. package/dist/common/data/utils.cjs +118 -1
  228. package/dist/common/data/utils.cjs.map +1 -1
  229. package/dist/common/data/utils.mjs +107 -1
  230. package/dist/common/data/utils.mjs.map +1 -1
  231. package/dist/common/data/wordlist.cjs +531 -1
  232. package/dist/common/data/wordlist.cjs.map +1 -1
  233. package/dist/common/data/wordlist.mjs +529 -1
  234. package/dist/common/data/wordlist.mjs.map +1 -1
  235. package/dist/common/data/xrx.cjs +96 -1
  236. package/dist/common/data/xrx.cjs.map +1 -1
  237. package/dist/common/data/xrx.mjs +92 -1
  238. package/dist/common/data/xrx.mjs.map +1 -1
  239. package/dist/common/dispose-defer.cjs +133 -1
  240. package/dist/common/dispose-defer.cjs.map +1 -1
  241. package/dist/common/dispose-defer.mjs +130 -1
  242. package/dist/common/dispose-defer.mjs.map +1 -1
  243. package/dist/common/dispose-types.mjs +1 -1
  244. package/dist/common/dispose-utils.cjs +113 -1
  245. package/dist/common/dispose-utils.cjs.map +1 -1
  246. package/dist/common/dispose-utils.mjs +106 -1
  247. package/dist/common/dispose-utils.mjs.map +1 -1
  248. package/dist/common/exec/index.cjs +24 -1
  249. package/dist/common/exec/index.d.cts +1 -1
  250. package/dist/common/exec/index.d.mts +1 -1
  251. package/dist/common/exec/index.mjs +8 -1
  252. package/dist/common/exec/mutex.cjs +44 -1
  253. package/dist/common/exec/mutex.cjs.map +1 -1
  254. package/dist/common/exec/mutex.mjs +42 -1
  255. package/dist/common/exec/mutex.mjs.map +1 -1
  256. package/dist/common/exec/pool.cjs +181 -1
  257. package/dist/common/exec/pool.cjs.map +1 -1
  258. package/dist/common/exec/pool.d.cts +1 -1
  259. package/dist/common/exec/pool.d.mts +1 -1
  260. package/dist/common/exec/pool.mjs +180 -1
  261. package/dist/common/exec/pool.mjs.map +1 -1
  262. package/dist/common/exec/progress.cjs +149 -1
  263. package/dist/common/exec/progress.cjs.map +1 -1
  264. package/dist/common/exec/progress.d.cts +1 -1
  265. package/dist/common/exec/progress.d.mts +1 -1
  266. package/dist/common/exec/progress.mjs +148 -1
  267. package/dist/common/exec/progress.mjs.map +1 -1
  268. package/dist/common/exec/promise.cjs +113 -1
  269. package/dist/common/exec/promise.cjs.map +1 -1
  270. package/dist/common/exec/promise.mjs +103 -1
  271. package/dist/common/exec/promise.mjs.map +1 -1
  272. package/dist/common/exec/queue.cjs +125 -1
  273. package/dist/common/exec/queue.cjs.map +1 -1
  274. package/dist/common/exec/queue.d.cts +1 -1
  275. package/dist/common/exec/queue.d.mts +1 -1
  276. package/dist/common/exec/queue.mjs +124 -1
  277. package/dist/common/exec/queue.mjs.map +1 -1
  278. package/dist/common/exec/throttle-debounce.cjs +114 -1
  279. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  280. package/dist/common/exec/throttle-debounce.mjs +112 -1
  281. package/dist/common/exec/throttle-debounce.mjs.map +1 -1
  282. package/dist/common/global.cjs +22 -1
  283. package/dist/common/global.cjs.map +1 -1
  284. package/dist/common/global.mjs +19 -1
  285. package/dist/common/global.mjs.map +1 -1
  286. package/dist/common/index.cjs +559 -1
  287. package/dist/common/index.d.cts +1 -1
  288. package/dist/common/index.d.mts +1 -1
  289. package/dist/common/index.mjs +89 -1
  290. package/dist/common/localhost.cjs +16 -1
  291. package/dist/common/localhost.cjs.map +1 -1
  292. package/dist/common/localhost.mjs +14 -1
  293. package/dist/common/localhost.mjs.map +1 -1
  294. package/dist/common/log/index.cjs +34 -1
  295. package/dist/common/log/index.mjs +11 -1
  296. package/dist/common/log/log-base.cjs +40 -1
  297. package/dist/common/log/log-base.cjs.map +1 -1
  298. package/dist/common/log/log-base.mjs +31 -1
  299. package/dist/common/log/log-base.mjs.map +1 -1
  300. package/dist/common/log/log-colors.cjs +92 -1
  301. package/dist/common/log/log-colors.cjs.map +1 -1
  302. package/dist/common/log/log-colors.mjs +90 -1
  303. package/dist/common/log/log-colors.mjs.map +1 -1
  304. package/dist/common/log/log-config.cjs +15 -1
  305. package/dist/common/log/log-config.cjs.map +1 -1
  306. package/dist/common/log/log-config.mjs +14 -1
  307. package/dist/common/log/log-config.mjs.map +1 -1
  308. package/dist/common/log/log-console-capture.cjs +33 -1
  309. package/dist/common/log/log-console-capture.cjs.map +1 -1
  310. package/dist/common/log/log-console-capture.mjs +32 -1
  311. package/dist/common/log/log-console-capture.mjs.map +1 -1
  312. package/dist/common/log/log-console-original.cjs +27 -1
  313. package/dist/common/log/log-console-original.cjs.map +1 -1
  314. package/dist/common/log/log-console-original.mjs +26 -1
  315. package/dist/common/log/log-console-original.mjs.map +1 -1
  316. package/dist/common/log/log-console.cjs +39 -1
  317. package/dist/common/log/log-console.cjs.map +1 -1
  318. package/dist/common/log/log-console.mjs +38 -1
  319. package/dist/common/log/log-console.mjs.map +1 -1
  320. package/dist/common/log/log-context.cjs +109 -1
  321. package/dist/common/log/log-context.cjs.map +1 -1
  322. package/dist/common/log/log-context.mjs +108 -1
  323. package/dist/common/log/log-context.mjs.map +1 -1
  324. package/dist/common/log/log-filter.cjs +80 -1
  325. package/dist/common/log/log-filter.cjs.map +1 -1
  326. package/dist/common/log/log-filter.mjs +75 -1
  327. package/dist/common/log/log-filter.mjs.map +1 -1
  328. package/dist/common/log/log-memory.cjs +45 -1
  329. package/dist/common/log/log-memory.cjs.map +1 -1
  330. package/dist/common/log/log-memory.mjs +43 -1
  331. package/dist/common/log/log-memory.mjs.map +1 -1
  332. package/dist/common/log/log-noop.cjs +17 -1
  333. package/dist/common/log/log-noop.cjs.map +1 -1
  334. package/dist/common/log/log-noop.mjs +15 -1
  335. package/dist/common/log/log-noop.mjs.map +1 -1
  336. package/dist/common/log/log.cjs +46 -1
  337. package/dist/common/log/log.cjs.map +1 -1
  338. package/dist/common/log/log.mjs +43 -1
  339. package/dist/common/log/log.mjs.map +1 -1
  340. package/dist/common/msg/channel-debug.cjs +17 -1
  341. package/dist/common/msg/channel-debug.cjs.map +1 -1
  342. package/dist/common/msg/channel-debug.d.cts +1 -1
  343. package/dist/common/msg/channel-debug.d.mts +1 -1
  344. package/dist/common/msg/channel-debug.mjs +16 -1
  345. package/dist/common/msg/channel-debug.mjs.map +1 -1
  346. package/dist/common/msg/channel-local.cjs +28 -1
  347. package/dist/common/msg/channel-local.cjs.map +1 -1
  348. package/dist/common/msg/channel-local.d.cts +1 -1
  349. package/dist/common/msg/channel-local.d.mts +1 -1
  350. package/dist/common/msg/channel-local.mjs +26 -1
  351. package/dist/common/msg/channel-local.mjs.map +1 -1
  352. package/dist/common/msg/channel-resilient.cjs +63 -1
  353. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  354. package/dist/common/msg/channel-resilient.d.cts +1 -1
  355. package/dist/common/msg/channel-resilient.d.mts +1 -1
  356. package/dist/common/msg/channel-resilient.mjs +62 -1
  357. package/dist/common/msg/channel-resilient.mjs.map +1 -1
  358. package/dist/common/msg/channel-wkwebview.cjs +35 -1
  359. package/dist/common/msg/channel-wkwebview.cjs.map +1 -1
  360. package/dist/common/msg/channel-wkwebview.d.cts +2 -1
  361. package/dist/common/msg/channel-wkwebview.d.mts +2 -1
  362. package/dist/common/msg/channel-wkwebview.mjs +34 -1
  363. package/dist/common/msg/channel-wkwebview.mjs.map +1 -1
  364. package/dist/common/msg/channel.cjs +23 -1
  365. package/dist/common/msg/channel.cjs.map +1 -1
  366. package/dist/common/msg/channel.d.cts +1 -1
  367. package/dist/common/msg/channel.d.mts +1 -1
  368. package/dist/common/msg/channel.mjs +22 -1
  369. package/dist/common/msg/channel.mjs.map +1 -1
  370. package/dist/common/msg/emitter.cjs +141 -1
  371. package/dist/common/msg/emitter.cjs.map +1 -1
  372. package/dist/common/msg/emitter.d.cts +1 -1
  373. package/dist/common/msg/emitter.d.mts +1 -1
  374. package/dist/common/msg/emitter.mjs +139 -1
  375. package/dist/common/msg/emitter.mjs.map +1 -1
  376. package/dist/common/msg/encoder.cjs +38 -1
  377. package/dist/common/msg/encoder.cjs.map +1 -1
  378. package/dist/common/msg/encoder.mjs +35 -1
  379. package/dist/common/msg/encoder.mjs.map +1 -1
  380. package/dist/common/msg/index.cjs +28 -1
  381. package/dist/common/msg/index.d.cts +1 -1
  382. package/dist/common/msg/index.d.mts +1 -1
  383. package/dist/common/msg/index.mjs +11 -1
  384. package/dist/common/msg/messages.cjs +135 -1
  385. package/dist/common/msg/messages.cjs.map +1 -1
  386. package/dist/common/msg/messages.d.cts +1 -1
  387. package/dist/common/msg/messages.d.mts +1 -1
  388. package/dist/common/msg/messages.mjs +133 -1
  389. package/dist/common/msg/messages.mjs.map +1 -1
  390. package/dist/common/msg/pipe.mjs +1 -1
  391. package/dist/common/msg/pubsub.cjs +78 -1
  392. package/dist/common/msg/pubsub.cjs.map +1 -1
  393. package/dist/common/msg/pubsub.d.cts +1 -1
  394. package/dist/common/msg/pubsub.d.mts +1 -1
  395. package/dist/common/msg/pubsub.mjs +76 -1
  396. package/dist/common/msg/pubsub.mjs.map +1 -1
  397. package/dist/common/msg/rpc.cjs +142 -1
  398. package/dist/common/msg/rpc.cjs.map +1 -1
  399. package/dist/common/msg/rpc.mjs +139 -1
  400. package/dist/common/msg/rpc.mjs.map +1 -1
  401. package/dist/common/network.cjs +129 -1
  402. package/dist/common/network.cjs.map +1 -1
  403. package/dist/common/network.mjs +122 -1
  404. package/dist/common/network.mjs.map +1 -1
  405. package/dist/common/platform.cjs +92 -1
  406. package/dist/common/platform.cjs.map +1 -1
  407. package/dist/common/platform.mjs +84 -1
  408. package/dist/common/platform.mjs.map +1 -1
  409. package/dist/common/schema/_sandbox/sandbox-inherit.mjs +1 -1
  410. package/dist/common/schema/_sandbox/sandbox.mjs +1 -1
  411. package/dist/common/schema/_sandbox/sandbox.xspec.mjs +1 -1
  412. package/dist/common/schema/export-json-schema.cjs +54 -1
  413. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  414. package/dist/common/schema/export-json-schema.mjs +52 -1
  415. package/dist/common/schema/export-json-schema.mjs.map +1 -1
  416. package/dist/common/schema/export-swift.cjs +30 -2
  417. package/dist/common/schema/export-swift.cjs.map +1 -1
  418. package/dist/common/schema/export-swift.mjs +29 -2
  419. package/dist/common/schema/export-swift.mjs.map +1 -1
  420. package/dist/common/schema/export-typescript.cjs +20 -2
  421. package/dist/common/schema/export-typescript.cjs.map +1 -1
  422. package/dist/common/schema/export-typescript.mjs +19 -2
  423. package/dist/common/schema/export-typescript.mjs.map +1 -1
  424. package/dist/common/schema/index.cjs +55 -1
  425. package/dist/common/schema/index.mjs +12 -1
  426. package/dist/common/schema/parse-args.cjs +62 -2
  427. package/dist/common/schema/parse-args.cjs.map +1 -1
  428. package/dist/common/schema/parse-args.mjs +60 -2
  429. package/dist/common/schema/parse-args.mjs.map +1 -1
  430. package/dist/common/schema/parse-env.cjs +48 -3
  431. package/dist/common/schema/parse-env.cjs.map +1 -1
  432. package/dist/common/schema/parse-env.mjs +46 -3
  433. package/dist/common/schema/parse-env.mjs.map +1 -1
  434. package/dist/common/schema/parse-object.cjs +122 -1
  435. package/dist/common/schema/parse-object.cjs.map +1 -1
  436. package/dist/common/schema/parse-object.mjs +119 -1
  437. package/dist/common/schema/parse-object.mjs.map +1 -1
  438. package/dist/common/schema/schema-standard.mjs +1 -1
  439. package/dist/common/schema/schema.cjs +423 -1
  440. package/dist/common/schema/schema.cjs.map +1 -1
  441. package/dist/common/schema/schema.mjs +404 -1
  442. package/dist/common/schema/schema.mjs.map +1 -1
  443. package/dist/common/schema/serialize.cjs +109 -1
  444. package/dist/common/schema/serialize.cjs.map +1 -1
  445. package/dist/common/schema/serialize.mjs +107 -1
  446. package/dist/common/schema/serialize.mjs.map +1 -1
  447. package/dist/common/schema/type-test.mjs +1 -1
  448. package/dist/common/schema/utils.cjs +25 -1
  449. package/dist/common/schema/utils.cjs.map +1 -1
  450. package/dist/common/schema/utils.mjs +19 -1
  451. package/dist/common/schema/utils.mjs.map +1 -1
  452. package/dist/common/schema/z-collection.cjs +51 -1
  453. package/dist/common/schema/z-collection.mjs +27 -1
  454. package/dist/common/schema/z.cjs +9 -1
  455. package/dist/common/schema/z.mjs +3 -1
  456. package/dist/common/storage/index.cjs +4 -1
  457. package/dist/common/storage/index.mjs +3 -1
  458. package/dist/common/storage/memstorage.cjs +26 -1
  459. package/dist/common/storage/memstorage.cjs.map +1 -1
  460. package/dist/common/storage/memstorage.mjs +25 -1
  461. package/dist/common/storage/memstorage.mjs.map +1 -1
  462. package/dist/common/test.cjs +14 -1
  463. package/dist/common/test.cjs.map +1 -1
  464. package/dist/common/test.mjs +13 -1
  465. package/dist/common/test.mjs.map +1 -1
  466. package/dist/common/time.cjs +220 -1
  467. package/dist/common/time.cjs.map +1 -1
  468. package/dist/common/time.mjs +194 -1
  469. package/dist/common/time.mjs.map +1 -1
  470. package/dist/common/timeout.cjs +27 -1
  471. package/dist/common/timeout.cjs.map +1 -1
  472. package/dist/common/timeout.mjs +25 -1
  473. package/dist/common/timeout.mjs.map +1 -1
  474. package/dist/common/types.mjs +1 -1
  475. package/dist/common/utils.cjs +7 -1
  476. package/dist/common/utils.cjs.map +1 -1
  477. package/dist/common/utils.mjs +5 -1
  478. package/dist/common/utils.mjs.map +1 -1
  479. package/dist/common/uuid.cjs +307 -1
  480. package/dist/common/uuid.cjs.map +1 -1
  481. package/dist/common/uuid.mjs +284 -1
  482. package/dist/common/uuid.mjs.map +1 -1
  483. package/dist/{index-DHXVOH8h.d.cts → index-CFkMqHvX.d.cts} +1 -2
  484. package/dist/{index-DMaPyx9O.d.mts → index-C_3Y_s6f.d.mts} +1 -2
  485. package/dist/index.all.cjs +641 -1
  486. package/dist/index.all.d.cts +1 -1
  487. package/dist/index.all.d.mts +1 -1
  488. package/dist/index.all.mjs +113 -1
  489. package/dist/index.browser.cjs +576 -1
  490. package/dist/index.browser.d.cts +1 -1
  491. package/dist/index.browser.d.mts +1 -1
  492. package/dist/index.browser.mjs +98 -1
  493. package/dist/index.jsr.cjs +57 -1
  494. package/dist/index.jsr.mjs +6 -1
  495. package/dist/index.node.cjs +628 -1
  496. package/dist/index.node.d.cts +1 -1
  497. package/dist/index.node.d.mts +1 -1
  498. package/dist/index.node.mjs +106 -1
  499. package/dist/node/args.cjs +56 -1
  500. package/dist/node/args.cjs.map +1 -1
  501. package/dist/node/args.mjs +53 -1
  502. package/dist/node/args.mjs.map +1 -1
  503. package/dist/node/clipboard.cjs +18 -1
  504. package/dist/node/clipboard.cjs.map +1 -1
  505. package/dist/node/clipboard.mjs +16 -1
  506. package/dist/node/clipboard.mjs.map +1 -1
  507. package/dist/node/crypto.cjs +28 -1
  508. package/dist/node/crypto.cjs.map +1 -1
  509. package/dist/node/crypto.mjs +24 -1
  510. package/dist/node/crypto.mjs.map +1 -1
  511. package/dist/node/env.cjs +100 -4
  512. package/dist/node/env.cjs.map +1 -1
  513. package/dist/node/env.mjs +90 -4
  514. package/dist/node/env.mjs.map +1 -1
  515. package/dist/node/files-async.cjs +66 -1
  516. package/dist/node/files-async.cjs.map +1 -1
  517. package/dist/node/files-async.mjs +60 -1
  518. package/dist/node/files-async.mjs.map +1 -1
  519. package/dist/node/files.cjs +52 -1
  520. package/dist/node/files.cjs.map +1 -1
  521. package/dist/node/files.mjs +46 -1
  522. package/dist/node/files.mjs.map +1 -1
  523. package/dist/node/filestorage.cjs +100 -1
  524. package/dist/node/filestorage.cjs.map +1 -1
  525. package/dist/node/filestorage.mjs +97 -1
  526. package/dist/node/filestorage.mjs.map +1 -1
  527. package/dist/node/fs.cjs +119 -1
  528. package/dist/node/fs.cjs.map +1 -1
  529. package/dist/node/fs.mjs +101 -1
  530. package/dist/node/fs.mjs.map +1 -1
  531. package/dist/node/glob.cjs +75 -1
  532. package/dist/node/glob.cjs.map +1 -1
  533. package/dist/node/glob.mjs +73 -1
  534. package/dist/node/glob.mjs.map +1 -1
  535. package/dist/node/index.cjs +66 -1
  536. package/dist/node/index.mjs +16 -1
  537. package/dist/node/log/index.cjs +20 -1
  538. package/dist/node/log/index.mjs +7 -1
  539. package/dist/node/log/log-context-node.cjs +39 -1
  540. package/dist/node/log/log-context-node.cjs.map +1 -1
  541. package/dist/node/log/log-context-node.mjs +35 -1
  542. package/dist/node/log/log-context-node.mjs.map +1 -1
  543. package/dist/node/log/log-file-rotation.cjs +71 -1
  544. package/dist/node/log/log-file-rotation.cjs.map +1 -1
  545. package/dist/node/log/log-file-rotation.mjs +68 -1
  546. package/dist/node/log/log-file-rotation.mjs.map +1 -1
  547. package/dist/node/log/log-file.cjs +57 -1
  548. package/dist/node/log/log-file.cjs.map +1 -1
  549. package/dist/node/log/log-file.mjs +54 -1
  550. package/dist/node/log/log-file.mjs.map +1 -1
  551. package/dist/node/log/log-node.cjs +162 -1
  552. package/dist/node/log/log-node.cjs.map +1 -1
  553. package/dist/node/log/log-node.mjs +155 -1
  554. package/dist/node/log/log-node.mjs.map +1 -1
  555. package/dist/node/log/log-rotation.cjs +543 -3
  556. package/dist/node/log/log-rotation.cjs.map +1 -1
  557. package/dist/node/log/log-rotation.mjs +538 -3
  558. package/dist/node/log/log-rotation.mjs.map +1 -1
  559. package/dist/node/log/log-util.cjs +69 -3
  560. package/dist/node/log/log-util.cjs.map +1 -1
  561. package/dist/node/log/log-util.mjs +63 -3
  562. package/dist/node/log/log-util.mjs.map +1 -1
  563. package/dist/node/open-browser.cjs +20 -1
  564. package/dist/node/open-browser.cjs.map +1 -1
  565. package/dist/node/open-browser.mjs +18 -1
  566. package/dist/node/open-browser.mjs.map +1 -1
  567. package/package.json +15 -15
  568. package/src/common/schema/README.md +247 -66
  569. package/src/eslint-defaults.js +4 -0
  570. package/src/index.spec.ts +6 -6
  571. package/dist/bin-Ce3i6ABn.cjs +0 -3
  572. package/dist/bin-SPdenYkw.mjs +0 -3
  573. package/dist/chunk-0Lt9GpW0.mjs +0 -1
  574. package/dist/chunk-D-qHiVGv.cjs +0 -1
  575. package/src/common/schema/README-SCHEMA.md +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"message.cjs","names":["Uint8ArrayToHexDump","ensureUint8Array","objectPlain","isArray"],"sources":["../../../src/common/data/message.ts"],"sourcesContent":["import { ensureUint8Array, Uint8ArrayToHexDump } from './bin'\nimport { isArray } from './is'\nimport { objectPlain } from './object'\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"],"mappings":"6JASA,SAAgB,EACd,EACA,EAA6B,EAAE,CACxB,CACP,GAAM,CAAE,QAAQ,GAAM,SAAS,IAAS,EACxC,OAAO,EAAS,IAAK,GAAQ,CAC3B,GAAI,GAAO,OAAO,GAAQ,SAAU,CAClC,GAAI,IAAW,aAAe,YAAc,aAAe,aACzD,MAAO,KAAKA,EAAAA,EAAoBC,EAAAA,EAAiB,aAAe,YAAc,IAAI,WAAW,EAAI,CAAG,EAAI,CAAC,CAAC,IAE5G,GAAI,aAAe,MACjB,MAAO,GAAG,EAAI,KAAK,IAAI,EAAI,WAAa,EAAQ,KAAK,EAAI,QAAU,IAErE,GAAI,OAAO,WAAe,KAAe,aAAe,WACtD,MAAO,GAAG,EAAI,MAAM,MAAQ,aAAa,IAAI,EAAI,MAAM,WAAa,EAAQ,KAAK,EAAI,MAAM,QAAU,IAEvG,GAAI,OAAO,aAAiB,KAAe,aAAe,aACxD,MAAO,GAAG,EAAI,MAAQ,eAAe,IAAI,EAAI,WAAa,EAAQ,KAAK,EAAI,QAAU,IAEvF,GAAI,GAAO,OAAO,GAAQ,UAAY,WAAY,EAChD,MAAO,oBAAoB,EAAI,KAAK,IAAI,EAAI,UAAY,EAAQ,KAAK,EAAI,QAAU,IAGrF,GAAI,CAEF,MADA,GAAMC,EAAAA,YAAY,EAAI,CACf,EAAS,KAAK,UAAU,EAAK,KAAM,EAAE,CAAG,KAAK,UAAU,EAAI,MAExD,GAEd,OAAO,OAAO,EAAI,EAClB,CAGJ,SAAgB,EACd,EACA,EAA6B,EAAE,CACvB,CACR,OAAO,EAAeC,EAAAA,QAAQ,EAAS,CAAI,EAAW,CAAC,EAAS,CAAE,EAAI,CAAC,KAAK,IAAI"}
1
+ {"version":3,"file":"message.cjs","names":["Uint8ArrayToHexDump","ensureUint8Array","objectPlain","isArray"],"sources":["../../../src/common/data/message.ts"],"sourcesContent":["import { ensureUint8Array, Uint8ArrayToHexDump } from './bin'\nimport { isArray } from './is'\nimport { objectPlain } from './object'\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"],"mappings":";;;;;;AASA,SAAgB,eACd,UACA,MAA6B,EAAE,EACxB;CACP,MAAM,EAAE,QAAQ,MAAM,SAAS,SAAS;AACxC,QAAO,SAAS,KAAK,QAAQ;AAC3B,MAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,OAAI,WAAW,eAAe,cAAc,eAAe,aACzD,QAAO,KAAKA,gCAAoBC,6BAAiB,eAAe,cAAc,IAAI,WAAW,IAAI,GAAG,IAAI,CAAC,CAAC;AAE5G,OAAI,eAAe,MACjB,QAAO,GAAG,IAAI,KAAK,IAAI,IAAI,aAAa,QAAQ,KAAK,IAAI,UAAU;AAErE,OAAI,OAAO,eAAe,eAAe,eAAe,WACtD,QAAO,GAAG,IAAI,MAAM,QAAQ,aAAa,IAAI,IAAI,MAAM,aAAa,QAAQ,KAAK,IAAI,MAAM,UAAU;AAEvG,OAAI,OAAO,iBAAiB,eAAe,eAAe,aACxD,QAAO,GAAG,IAAI,QAAQ,eAAe,IAAI,IAAI,aAAa,QAAQ,KAAK,IAAI,UAAU;AAEvF,OAAI,OAAO,OAAO,QAAQ,YAAY,YAAY,IAChD,QAAO,oBAAoB,IAAI,KAAK,IAAI,IAAI,YAAY,QAAQ,KAAK,IAAI,UAAU;AAGrF,OAAI;AACF,UAAMC,uCAAY,IAAI;AACtB,WAAO,SAAS,KAAK,UAAU,KAAK,MAAM,EAAE,GAAG,KAAK,UAAU,IAAI;YAE7D,KAAK;;AAEd,SAAO,OAAO,IAAI;GAClB;;AAGJ,SAAgB,eACd,UACA,MAA6B,EAAE,EACvB;AACR,QAAO,eAAeC,+BAAQ,SAAS,GAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI"}
@@ -1,2 +1,29 @@
1
- import{isArray as e}from"./is.mjs";import{o as t,t as n}from"../../bin-SPdenYkw.mjs";import{objectPlain as r}from"./object.mjs";function i(e,i={}){let{trace:a=!0,pretty:o=!0}=i;return e.map(e=>{if(e&&typeof e==`object`){if(o&&(e instanceof Uint8Array||e instanceof ArrayBuffer))return`\n${n(t(e instanceof ArrayBuffer?new Uint8Array(e):e))}\n`;if(e instanceof Error)return`${e.name}: ${e.message}`+(a?`\n${e.stack}`:``);if(typeof ErrorEvent<`u`&&e instanceof ErrorEvent)return`${e.error.name||`ErrorEvent`}: ${e.error.message}`+(a?`\n${e.error.stack}`:``);if(typeof DOMException<`u`&&e instanceof DOMException)return`${e.name||`DOMException`}: ${e.message}`+(a?`\n${e.stack}`:``);if(e&&typeof e==`object`&&`reason`in e)return`PromiseRejection ${e.type}: ${e.reason}`+(a?`\n${e.stack}`:``);try{return e=r(e),o?JSON.stringify(e,null,2):JSON.stringify(e)}catch{}}return String(e)})}function a(t,n={}){return i(e(t)?t:[t],n).join(` `)}export{i as formatMessages,a as renderMessages};
1
+ import { isArray } from "./is.mjs";
2
+ import { o as ensureUint8Array, t as Uint8ArrayToHexDump } from "../../bin-BAoS4qtm.mjs";
3
+ import { objectPlain } from "./object.mjs";
4
+
5
+ //#region src/common/data/message.ts
6
+ function formatMessages(messages, opt = {}) {
7
+ const { trace = true, pretty = true } = opt;
8
+ return messages.map((obj) => {
9
+ if (obj && typeof obj === "object") {
10
+ if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer)) return `\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\n`;
11
+ if (obj instanceof Error) return `${obj.name}: ${obj.message}` + (trace ? `\n${obj.stack}` : "");
12
+ if (typeof ErrorEvent !== "undefined" && obj instanceof ErrorEvent) return `${obj.error.name || "ErrorEvent"}: ${obj.error.message}` + (trace ? `\n${obj.error.stack}` : "");
13
+ if (typeof DOMException !== "undefined" && obj instanceof DOMException) return `${obj.name || "DOMException"}: ${obj.message}` + (trace ? `\n${obj.stack}` : "");
14
+ if (obj && typeof obj === "object" && "reason" in obj) return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\n${obj.stack}` : "");
15
+ try {
16
+ obj = objectPlain(obj);
17
+ return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj);
18
+ } catch (err) {}
19
+ }
20
+ return String(obj);
21
+ });
22
+ }
23
+ function renderMessages(messages, opt = {}) {
24
+ return formatMessages(isArray(messages) ? messages : [messages], opt).join(" ");
25
+ }
26
+
27
+ //#endregion
28
+ export { formatMessages, renderMessages };
2
29
  //# sourceMappingURL=message.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.mjs","names":[],"sources":["../../../src/common/data/message.ts"],"sourcesContent":["import { ensureUint8Array, Uint8ArrayToHexDump } from './bin'\nimport { isArray } from './is'\nimport { objectPlain } from './object'\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"],"mappings":"gIASA,SAAgB,EACd,EACA,EAA6B,EAAE,CACxB,CACP,GAAM,CAAE,QAAQ,GAAM,SAAS,IAAS,EACxC,OAAO,EAAS,IAAK,GAAQ,CAC3B,GAAI,GAAO,OAAO,GAAQ,SAAU,CAClC,GAAI,IAAW,aAAe,YAAc,aAAe,aACzD,MAAO,KAAK,EAAoB,EAAiB,aAAe,YAAc,IAAI,WAAW,EAAI,CAAG,EAAI,CAAC,CAAC,IAE5G,GAAI,aAAe,MACjB,MAAO,GAAG,EAAI,KAAK,IAAI,EAAI,WAAa,EAAQ,KAAK,EAAI,QAAU,IAErE,GAAI,OAAO,WAAe,KAAe,aAAe,WACtD,MAAO,GAAG,EAAI,MAAM,MAAQ,aAAa,IAAI,EAAI,MAAM,WAAa,EAAQ,KAAK,EAAI,MAAM,QAAU,IAEvG,GAAI,OAAO,aAAiB,KAAe,aAAe,aACxD,MAAO,GAAG,EAAI,MAAQ,eAAe,IAAI,EAAI,WAAa,EAAQ,KAAK,EAAI,QAAU,IAEvF,GAAI,GAAO,OAAO,GAAQ,UAAY,WAAY,EAChD,MAAO,oBAAoB,EAAI,KAAK,IAAI,EAAI,UAAY,EAAQ,KAAK,EAAI,QAAU,IAGrF,GAAI,CAEF,MADA,GAAM,EAAY,EAAI,CACf,EAAS,KAAK,UAAU,EAAK,KAAM,EAAE,CAAG,KAAK,UAAU,EAAI,MAExD,GAEd,OAAO,OAAO,EAAI,EAClB,CAGJ,SAAgB,EACd,EACA,EAA6B,EAAE,CACvB,CACR,OAAO,EAAe,EAAQ,EAAS,CAAI,EAAW,CAAC,EAAS,CAAE,EAAI,CAAC,KAAK,IAAI"}
1
+ {"version":3,"file":"message.mjs","names":[],"sources":["../../../src/common/data/message.ts"],"sourcesContent":["import { ensureUint8Array, Uint8ArrayToHexDump } from './bin'\nimport { isArray } from './is'\nimport { objectPlain } from './object'\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"],"mappings":";;;;;AASA,SAAgB,eACd,UACA,MAA6B,EAAE,EACxB;CACP,MAAM,EAAE,QAAQ,MAAM,SAAS,SAAS;AACxC,QAAO,SAAS,KAAK,QAAQ;AAC3B,MAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,OAAI,WAAW,eAAe,cAAc,eAAe,aACzD,QAAO,KAAK,oBAAoB,iBAAiB,eAAe,cAAc,IAAI,WAAW,IAAI,GAAG,IAAI,CAAC,CAAC;AAE5G,OAAI,eAAe,MACjB,QAAO,GAAG,IAAI,KAAK,IAAI,IAAI,aAAa,QAAQ,KAAK,IAAI,UAAU;AAErE,OAAI,OAAO,eAAe,eAAe,eAAe,WACtD,QAAO,GAAG,IAAI,MAAM,QAAQ,aAAa,IAAI,IAAI,MAAM,aAAa,QAAQ,KAAK,IAAI,MAAM,UAAU;AAEvG,OAAI,OAAO,iBAAiB,eAAe,eAAe,aACxD,QAAO,GAAG,IAAI,QAAQ,eAAe,IAAI,IAAI,aAAa,QAAQ,KAAK,IAAI,UAAU;AAEvF,OAAI,OAAO,OAAO,QAAQ,YAAY,YAAY,IAChD,QAAO,oBAAoB,IAAI,KAAK,IAAI,IAAI,YAAY,QAAQ,KAAK,IAAI,UAAU;AAGrF,OAAI;AACF,UAAM,YAAY,IAAI;AACtB,WAAO,SAAS,KAAK,UAAU,KAAK,MAAM,EAAE,GAAG,KAAK,UAAU,IAAI;YAE7D,KAAK;;AAEd,SAAO,OAAO,IAAI;GAClB;;AAGJ,SAAgB,eACd,UACA,MAA6B,EAAE,EACvB;AACR,QAAO,eAAe,QAAQ,SAAS,GAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI"}
@@ -1,2 +1,67 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils.cjs`),t=require(`./is.cjs`),n=require(`./array.cjs`),r=require(`./deep.cjs`);function i(r,a){if(t.isRecord(r)&&t.isRecord(a)){let o=Object.keys(a);for(let e of n.arrayMinus(Object.keys(r),o))delete r[e];for(let n of o){let o=a[n],s=r[n];t.isRecord(o)?t.isRecord(s)?i(s,o):r[n]=e.cloneObject(o):o!==s&&(r[n]=o)}}return r}function a(e,i){let o={};for(let t of n.arrayMinus(Object.keys(e),Object.keys(i)))o[t]=null;for(let[n,s]of Object.entries(i)){let i=e[n];if(t.isRecord(s)){let e=a(i??{},s);e!=null&&(o[n]=e)}else s==null&&i==null||r.deepEqual(s,i)||(o[n]=s??null)}return Object.keys(o).length>0?o:void 0}function o(n,r){if(t.isRecord(n)&&t.isRecord(r)){let i=Object.keys(r);for(let a of i){let i=r[a],s=n[a];i===null?s!=null&&delete n[a]:t.isRecord(i)?t.isRecord(s)?o(s,i):n[a]=e.cloneObject(i):i!==s&&(n[a]=i)}}return n}exports.objectAssignDeepInPlace=i,exports.objectAssignDescriptionInPlace=o,exports.objectDescribeChange=a;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common_data_utils = require('./utils.cjs');
3
+ const require_common_data_is = require('./is.cjs');
4
+ const require_common_data_array = require('./array.cjs');
5
+ const require_common_data_deep = require('./deep.cjs');
6
+
7
+ //#region src/common/data/object-changes.ts
8
+ /**
9
+ * Selective in place update, as minimal as possible.
10
+ * Ideal for reactive objects lie Vue's `reactive`.
11
+ */
12
+ function objectAssignDeepInPlace(toObject, fromObject) {
13
+ if (require_common_data_is.isRecord(toObject) && require_common_data_is.isRecord(fromObject)) {
14
+ const fromKeys = Object.keys(fromObject);
15
+ for (const key of require_common_data_array.arrayMinus(Object.keys(toObject), fromKeys)) delete toObject[key];
16
+ for (const key of fromKeys) {
17
+ const from = fromObject[key];
18
+ const to = toObject[key];
19
+ if (require_common_data_is.isRecord(from)) if (require_common_data_is.isRecord(to)) objectAssignDeepInPlace(to, from);
20
+ else toObject[key] = require_common_data_utils.cloneObject(from);
21
+ else if (from !== to) toObject[key] = from;
22
+ }
23
+ }
24
+ return toObject;
25
+ }
26
+ /**
27
+ * Create a minimal change set. Results in a new object, with only the
28
+ * new or changed entries. Deleted entries are marked by value `null`.
29
+ */
30
+ function objectDescribeChange(fromObject, toObject) {
31
+ const change = {};
32
+ for (const key of require_common_data_array.arrayMinus(Object.keys(fromObject), Object.keys(toObject))) change[key] = null;
33
+ for (const [key, value] of Object.entries(toObject)) {
34
+ const from = fromObject[key];
35
+ if (require_common_data_is.isRecord(value)) {
36
+ const subChange = objectDescribeChange(from ?? {}, value);
37
+ if (subChange != null) change[key] = subChange;
38
+ } else if (!(value == null && from == null)) {
39
+ if (!require_common_data_deep.deepEqual(value, from)) change[key] = value == null ? null : value;
40
+ }
41
+ }
42
+ return Object.keys(change).length > 0 ? change : void 0;
43
+ }
44
+ /**
45
+ * Apply the description of changes created by `objectDescribeChange` to the object.
46
+ */
47
+ function objectAssignDescriptionInPlace(toObject, fromObject) {
48
+ if (require_common_data_is.isRecord(toObject) && require_common_data_is.isRecord(fromObject)) {
49
+ const fromKeys = Object.keys(fromObject);
50
+ for (const key of fromKeys) {
51
+ const from = fromObject[key];
52
+ const to = toObject[key];
53
+ if (from === null) {
54
+ if (to != null) delete toObject[key];
55
+ } else if (require_common_data_is.isRecord(from)) if (require_common_data_is.isRecord(to)) objectAssignDescriptionInPlace(to, from);
56
+ else toObject[key] = require_common_data_utils.cloneObject(from);
57
+ else if (from !== to) toObject[key] = from;
58
+ }
59
+ }
60
+ return toObject;
61
+ }
62
+
63
+ //#endregion
64
+ exports.objectAssignDeepInPlace = objectAssignDeepInPlace;
65
+ exports.objectAssignDescriptionInPlace = objectAssignDescriptionInPlace;
66
+ exports.objectDescribeChange = objectDescribeChange;
2
67
  //# sourceMappingURL=object-changes.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-changes.cjs","names":["isRecord","arrayMinus","cloneObject","deepEqual"],"sources":["../../../src/common/data/object-changes.ts"],"sourcesContent":["import { arrayMinus } from './array'\nimport { deepEqual } from './deep'\nimport { isRecord } from './is'\nimport { cloneObject } from './utils'\n\n/**\n * Selective in place update, as minimal as possible.\n * Ideal for reactive objects lie Vue's `reactive`.\n */\nexport function objectAssignDeepInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n // Remove not existing ones\n const fromKeys = Object.keys(fromObject)\n for (const key of arrayMinus(Object.keys(toObject), fromKeys))\n delete toObject[key]\n\n // Changes\n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDeepInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n/**\n * Create a minimal change set. Results in a new object, with only the\n * new or changed entries. Deleted entries are marked by value `null`.\n */\nexport function objectDescribeChange(fromObject: any, toObject: any): any {\n const change: any = {}\n\n // Deleted attributes\n for (const key of arrayMinus(Object.keys(fromObject), Object.keys(toObject)))\n change[key] = null\n\n // Changes\n for (const [key, value] of Object.entries(toObject)) {\n const from = fromObject[key]\n if (isRecord(value)) {\n const subChange = objectDescribeChange(from ?? {}, value)\n if (subChange != null)\n change[key] = subChange\n }\n else if (!(value == null && from == null)) {\n if (!deepEqual(value, from))\n change[key] = value == null ? null : value // avoid undefined\n }\n }\n\n return Object.keys(change).length > 0 ? change : undefined\n}\n\n/**\n * Apply the description of changes created by `objectDescribeChange` to the object.\n */\nexport function objectAssignDescriptionInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n const fromKeys = Object.keys(fromObject) \n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (from === null) {\n if (to != null) {\n delete toObject[key]\n }\n }\n else if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDescriptionInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n"],"mappings":"yKASA,SAAgB,EAAwB,EAAe,EAAiB,CACtE,GAAIA,EAAAA,SAAS,EAAS,EAAIA,EAAAA,SAAS,EAAW,CAAE,CAE9C,IAAM,EAAW,OAAO,KAAK,EAAW,CACxC,IAAK,IAAM,KAAOC,EAAAA,WAAW,OAAO,KAAK,EAAS,CAAE,EAAS,CAC3D,OAAO,EAAS,GAGlB,IAAK,IAAM,KAAO,EAAU,CAC1B,IAAM,EAAO,EAAW,GAClB,EAAK,EAAS,GAChBD,EAAAA,SAAS,EAAK,CACZA,EAAAA,SAAS,EAAG,CACd,EAAwB,EAAI,EAAK,CAEjC,EAAS,GAAOE,EAAAA,YAAY,EAAK,CAE5B,IAAS,IAChB,EAAS,GAAO,IAItB,OAAO,EAOT,SAAgB,EAAqB,EAAiB,EAAoB,CACxE,IAAM,EAAc,EAAE,CAGtB,IAAK,IAAM,KAAOD,EAAAA,WAAW,OAAO,KAAK,EAAW,CAAE,OAAO,KAAK,EAAS,CAAC,CAC1E,EAAO,GAAO,KAGhB,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAS,CAAE,CACnD,IAAM,EAAO,EAAW,GACxB,GAAID,EAAAA,SAAS,EAAM,CAAE,CACnB,IAAM,EAAY,EAAqB,GAAQ,EAAE,CAAE,EAAM,CACrD,GAAa,OACf,EAAO,GAAO,QAEP,GAAS,MAAQ,GAAQ,MAC7BG,EAAAA,UAAU,EAAO,EAAK,GACzB,EAAO,GAAO,GAAgB,MAIpC,OAAO,OAAO,KAAK,EAAO,CAAC,OAAS,EAAI,EAAS,IAAA,GAMnD,SAAgB,EAA+B,EAAe,EAAiB,CAC7E,GAAIH,EAAAA,SAAS,EAAS,EAAIA,EAAAA,SAAS,EAAW,CAAE,CAC9C,IAAM,EAAW,OAAO,KAAK,EAAW,CACxC,IAAK,IAAM,KAAO,EAAU,CAC1B,IAAM,EAAO,EAAW,GAClB,EAAK,EAAS,GAChB,IAAS,KACP,GAAM,MACR,OAAO,EAAS,GAGXA,EAAAA,SAAS,EAAK,CACjBA,EAAAA,SAAS,EAAG,CACd,EAA+B,EAAI,EAAK,CAExC,EAAS,GAAOE,EAAAA,YAAY,EAAK,CAE5B,IAAS,IAChB,EAAS,GAAO,IAItB,OAAO"}
1
+ {"version":3,"file":"object-changes.cjs","names":["isRecord","arrayMinus","cloneObject","deepEqual"],"sources":["../../../src/common/data/object-changes.ts"],"sourcesContent":["import { arrayMinus } from './array'\nimport { deepEqual } from './deep'\nimport { isRecord } from './is'\nimport { cloneObject } from './utils'\n\n/**\n * Selective in place update, as minimal as possible.\n * Ideal for reactive objects lie Vue's `reactive`.\n */\nexport function objectAssignDeepInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n // Remove not existing ones\n const fromKeys = Object.keys(fromObject)\n for (const key of arrayMinus(Object.keys(toObject), fromKeys))\n delete toObject[key]\n\n // Changes\n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDeepInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n/**\n * Create a minimal change set. Results in a new object, with only the\n * new or changed entries. Deleted entries are marked by value `null`.\n */\nexport function objectDescribeChange(fromObject: any, toObject: any): any {\n const change: any = {}\n\n // Deleted attributes\n for (const key of arrayMinus(Object.keys(fromObject), Object.keys(toObject)))\n change[key] = null\n\n // Changes\n for (const [key, value] of Object.entries(toObject)) {\n const from = fromObject[key]\n if (isRecord(value)) {\n const subChange = objectDescribeChange(from ?? {}, value)\n if (subChange != null)\n change[key] = subChange\n }\n else if (!(value == null && from == null)) {\n if (!deepEqual(value, from))\n change[key] = value == null ? null : value // avoid undefined\n }\n }\n\n return Object.keys(change).length > 0 ? change : undefined\n}\n\n/**\n * Apply the description of changes created by `objectDescribeChange` to the object.\n */\nexport function objectAssignDescriptionInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n const fromKeys = Object.keys(fromObject) \n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (from === null) {\n if (to != null) {\n delete toObject[key]\n }\n }\n else if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDescriptionInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n"],"mappings":";;;;;;;;;;;AASA,SAAgB,wBAAwB,UAAe,YAAiB;AACtE,KAAIA,gCAAS,SAAS,IAAIA,gCAAS,WAAW,EAAE;EAE9C,MAAM,WAAW,OAAO,KAAK,WAAW;AACxC,OAAK,MAAM,OAAOC,qCAAW,OAAO,KAAK,SAAS,EAAE,SAAS,CAC3D,QAAO,SAAS;AAGlB,OAAK,MAAM,OAAO,UAAU;GAC1B,MAAM,OAAO,WAAW;GACxB,MAAM,KAAK,SAAS;AACpB,OAAID,gCAAS,KAAK,CAChB,KAAIA,gCAAS,GAAG,CACd,yBAAwB,IAAI,KAAK;OAEjC,UAAS,OAAOE,sCAAY,KAAK;YAE5B,SAAS,GAChB,UAAS,OAAO;;;AAItB,QAAO;;;;;;AAOT,SAAgB,qBAAqB,YAAiB,UAAoB;CACxE,MAAM,SAAc,EAAE;AAGtB,MAAK,MAAM,OAAOD,qCAAW,OAAO,KAAK,WAAW,EAAE,OAAO,KAAK,SAAS,CAAC,CAC1E,QAAO,OAAO;AAGhB,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,EAAE;EACnD,MAAM,OAAO,WAAW;AACxB,MAAID,gCAAS,MAAM,EAAE;GACnB,MAAM,YAAY,qBAAqB,QAAQ,EAAE,EAAE,MAAM;AACzD,OAAI,aAAa,KACf,QAAO,OAAO;aAET,EAAE,SAAS,QAAQ,QAAQ,OAClC;OAAI,CAACG,mCAAU,OAAO,KAAK,CACzB,QAAO,OAAO,SAAS,OAAO,OAAO;;;AAI3C,QAAO,OAAO,KAAK,OAAO,CAAC,SAAS,IAAI,SAAS;;;;;AAMnD,SAAgB,+BAA+B,UAAe,YAAiB;AAC7E,KAAIH,gCAAS,SAAS,IAAIA,gCAAS,WAAW,EAAE;EAC9C,MAAM,WAAW,OAAO,KAAK,WAAW;AACxC,OAAK,MAAM,OAAO,UAAU;GAC1B,MAAM,OAAO,WAAW;GACxB,MAAM,KAAK,SAAS;AACpB,OAAI,SAAS,MACX;QAAI,MAAM,KACR,QAAO,SAAS;cAGXA,gCAAS,KAAK,CACrB,KAAIA,gCAAS,GAAG,CACd,gCAA+B,IAAI,KAAK;OAExC,UAAS,OAAOE,sCAAY,KAAK;YAE5B,SAAS,GAChB,UAAS,OAAO;;;AAItB,QAAO"}
@@ -1,2 +1,64 @@
1
- import{cloneObject as e}from"./utils.mjs";import{isRecord as t}from"./is.mjs";import{arrayMinus as n}from"./array.mjs";import{deepEqual as r}from"./deep.mjs";function i(r,a){if(t(r)&&t(a)){let o=Object.keys(a);for(let e of n(Object.keys(r),o))delete r[e];for(let n of o){let o=a[n],s=r[n];t(o)?t(s)?i(s,o):r[n]=e(o):o!==s&&(r[n]=o)}}return r}function a(e,i){let o={};for(let t of n(Object.keys(e),Object.keys(i)))o[t]=null;for(let[n,s]of Object.entries(i)){let i=e[n];if(t(s)){let e=a(i??{},s);e!=null&&(o[n]=e)}else s==null&&i==null||r(s,i)||(o[n]=s??null)}return Object.keys(o).length>0?o:void 0}function o(n,r){if(t(n)&&t(r)){let i=Object.keys(r);for(let a of i){let i=r[a],s=n[a];i===null?s!=null&&delete n[a]:t(i)?t(s)?o(s,i):n[a]=e(i):i!==s&&(n[a]=i)}}return n}export{i as objectAssignDeepInPlace,o as objectAssignDescriptionInPlace,a as objectDescribeChange};
1
+ import { cloneObject } from "./utils.mjs";
2
+ import { isRecord } from "./is.mjs";
3
+ import { arrayMinus } from "./array.mjs";
4
+ import { deepEqual } from "./deep.mjs";
5
+
6
+ //#region src/common/data/object-changes.ts
7
+ /**
8
+ * Selective in place update, as minimal as possible.
9
+ * Ideal for reactive objects lie Vue's `reactive`.
10
+ */
11
+ function objectAssignDeepInPlace(toObject, fromObject) {
12
+ if (isRecord(toObject) && isRecord(fromObject)) {
13
+ const fromKeys = Object.keys(fromObject);
14
+ for (const key of arrayMinus(Object.keys(toObject), fromKeys)) delete toObject[key];
15
+ for (const key of fromKeys) {
16
+ const from = fromObject[key];
17
+ const to = toObject[key];
18
+ if (isRecord(from)) if (isRecord(to)) objectAssignDeepInPlace(to, from);
19
+ else toObject[key] = cloneObject(from);
20
+ else if (from !== to) toObject[key] = from;
21
+ }
22
+ }
23
+ return toObject;
24
+ }
25
+ /**
26
+ * Create a minimal change set. Results in a new object, with only the
27
+ * new or changed entries. Deleted entries are marked by value `null`.
28
+ */
29
+ function objectDescribeChange(fromObject, toObject) {
30
+ const change = {};
31
+ for (const key of arrayMinus(Object.keys(fromObject), Object.keys(toObject))) change[key] = null;
32
+ for (const [key, value] of Object.entries(toObject)) {
33
+ const from = fromObject[key];
34
+ if (isRecord(value)) {
35
+ const subChange = objectDescribeChange(from ?? {}, value);
36
+ if (subChange != null) change[key] = subChange;
37
+ } else if (!(value == null && from == null)) {
38
+ if (!deepEqual(value, from)) change[key] = value == null ? null : value;
39
+ }
40
+ }
41
+ return Object.keys(change).length > 0 ? change : void 0;
42
+ }
43
+ /**
44
+ * Apply the description of changes created by `objectDescribeChange` to the object.
45
+ */
46
+ function objectAssignDescriptionInPlace(toObject, fromObject) {
47
+ if (isRecord(toObject) && isRecord(fromObject)) {
48
+ const fromKeys = Object.keys(fromObject);
49
+ for (const key of fromKeys) {
50
+ const from = fromObject[key];
51
+ const to = toObject[key];
52
+ if (from === null) {
53
+ if (to != null) delete toObject[key];
54
+ } else if (isRecord(from)) if (isRecord(to)) objectAssignDescriptionInPlace(to, from);
55
+ else toObject[key] = cloneObject(from);
56
+ else if (from !== to) toObject[key] = from;
57
+ }
58
+ }
59
+ return toObject;
60
+ }
61
+
62
+ //#endregion
63
+ export { objectAssignDeepInPlace, objectAssignDescriptionInPlace, objectDescribeChange };
2
64
  //# sourceMappingURL=object-changes.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-changes.mjs","names":[],"sources":["../../../src/common/data/object-changes.ts"],"sourcesContent":["import { arrayMinus } from './array'\nimport { deepEqual } from './deep'\nimport { isRecord } from './is'\nimport { cloneObject } from './utils'\n\n/**\n * Selective in place update, as minimal as possible.\n * Ideal for reactive objects lie Vue's `reactive`.\n */\nexport function objectAssignDeepInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n // Remove not existing ones\n const fromKeys = Object.keys(fromObject)\n for (const key of arrayMinus(Object.keys(toObject), fromKeys))\n delete toObject[key]\n\n // Changes\n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDeepInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n/**\n * Create a minimal change set. Results in a new object, with only the\n * new or changed entries. Deleted entries are marked by value `null`.\n */\nexport function objectDescribeChange(fromObject: any, toObject: any): any {\n const change: any = {}\n\n // Deleted attributes\n for (const key of arrayMinus(Object.keys(fromObject), Object.keys(toObject)))\n change[key] = null\n\n // Changes\n for (const [key, value] of Object.entries(toObject)) {\n const from = fromObject[key]\n if (isRecord(value)) {\n const subChange = objectDescribeChange(from ?? {}, value)\n if (subChange != null)\n change[key] = subChange\n }\n else if (!(value == null && from == null)) {\n if (!deepEqual(value, from))\n change[key] = value == null ? null : value // avoid undefined\n }\n }\n\n return Object.keys(change).length > 0 ? change : undefined\n}\n\n/**\n * Apply the description of changes created by `objectDescribeChange` to the object.\n */\nexport function objectAssignDescriptionInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n const fromKeys = Object.keys(fromObject) \n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (from === null) {\n if (to != null) {\n delete toObject[key]\n }\n }\n else if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDescriptionInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n"],"mappings":"8JASA,SAAgB,EAAwB,EAAe,EAAiB,CACtE,GAAI,EAAS,EAAS,EAAI,EAAS,EAAW,CAAE,CAE9C,IAAM,EAAW,OAAO,KAAK,EAAW,CACxC,IAAK,IAAM,KAAO,EAAW,OAAO,KAAK,EAAS,CAAE,EAAS,CAC3D,OAAO,EAAS,GAGlB,IAAK,IAAM,KAAO,EAAU,CAC1B,IAAM,EAAO,EAAW,GAClB,EAAK,EAAS,GAChB,EAAS,EAAK,CACZ,EAAS,EAAG,CACd,EAAwB,EAAI,EAAK,CAEjC,EAAS,GAAO,EAAY,EAAK,CAE5B,IAAS,IAChB,EAAS,GAAO,IAItB,OAAO,EAOT,SAAgB,EAAqB,EAAiB,EAAoB,CACxE,IAAM,EAAc,EAAE,CAGtB,IAAK,IAAM,KAAO,EAAW,OAAO,KAAK,EAAW,CAAE,OAAO,KAAK,EAAS,CAAC,CAC1E,EAAO,GAAO,KAGhB,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAS,CAAE,CACnD,IAAM,EAAO,EAAW,GACxB,GAAI,EAAS,EAAM,CAAE,CACnB,IAAM,EAAY,EAAqB,GAAQ,EAAE,CAAE,EAAM,CACrD,GAAa,OACf,EAAO,GAAO,QAEP,GAAS,MAAQ,GAAQ,MAC7B,EAAU,EAAO,EAAK,GACzB,EAAO,GAAO,GAAgB,MAIpC,OAAO,OAAO,KAAK,EAAO,CAAC,OAAS,EAAI,EAAS,IAAA,GAMnD,SAAgB,EAA+B,EAAe,EAAiB,CAC7E,GAAI,EAAS,EAAS,EAAI,EAAS,EAAW,CAAE,CAC9C,IAAM,EAAW,OAAO,KAAK,EAAW,CACxC,IAAK,IAAM,KAAO,EAAU,CAC1B,IAAM,EAAO,EAAW,GAClB,EAAK,EAAS,GAChB,IAAS,KACP,GAAM,MACR,OAAO,EAAS,GAGX,EAAS,EAAK,CACjB,EAAS,EAAG,CACd,EAA+B,EAAI,EAAK,CAExC,EAAS,GAAO,EAAY,EAAK,CAE5B,IAAS,IAChB,EAAS,GAAO,IAItB,OAAO"}
1
+ {"version":3,"file":"object-changes.mjs","names":[],"sources":["../../../src/common/data/object-changes.ts"],"sourcesContent":["import { arrayMinus } from './array'\nimport { deepEqual } from './deep'\nimport { isRecord } from './is'\nimport { cloneObject } from './utils'\n\n/**\n * Selective in place update, as minimal as possible.\n * Ideal for reactive objects lie Vue's `reactive`.\n */\nexport function objectAssignDeepInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n // Remove not existing ones\n const fromKeys = Object.keys(fromObject)\n for (const key of arrayMinus(Object.keys(toObject), fromKeys))\n delete toObject[key]\n\n // Changes\n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDeepInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n/**\n * Create a minimal change set. Results in a new object, with only the\n * new or changed entries. Deleted entries are marked by value `null`.\n */\nexport function objectDescribeChange(fromObject: any, toObject: any): any {\n const change: any = {}\n\n // Deleted attributes\n for (const key of arrayMinus(Object.keys(fromObject), Object.keys(toObject)))\n change[key] = null\n\n // Changes\n for (const [key, value] of Object.entries(toObject)) {\n const from = fromObject[key]\n if (isRecord(value)) {\n const subChange = objectDescribeChange(from ?? {}, value)\n if (subChange != null)\n change[key] = subChange\n }\n else if (!(value == null && from == null)) {\n if (!deepEqual(value, from))\n change[key] = value == null ? null : value // avoid undefined\n }\n }\n\n return Object.keys(change).length > 0 ? change : undefined\n}\n\n/**\n * Apply the description of changes created by `objectDescribeChange` to the object.\n */\nexport function objectAssignDescriptionInPlace(toObject: any, fromObject: any) {\n if (isRecord(toObject) && isRecord(fromObject)) {\n const fromKeys = Object.keys(fromObject) \n for (const key of fromKeys) {\n const from = fromObject[key]\n const to = toObject[key]\n if (from === null) {\n if (to != null) {\n delete toObject[key]\n }\n }\n else if (isRecord(from)) {\n if (isRecord(to))\n objectAssignDescriptionInPlace(to, from)\n else\n toObject[key] = cloneObject(from)\n }\n else if (from !== to) {\n toObject[key] = from\n }\n }\n }\n return toObject\n}\n\n"],"mappings":";;;;;;;;;;AASA,SAAgB,wBAAwB,UAAe,YAAiB;AACtE,KAAI,SAAS,SAAS,IAAI,SAAS,WAAW,EAAE;EAE9C,MAAM,WAAW,OAAO,KAAK,WAAW;AACxC,OAAK,MAAM,OAAO,WAAW,OAAO,KAAK,SAAS,EAAE,SAAS,CAC3D,QAAO,SAAS;AAGlB,OAAK,MAAM,OAAO,UAAU;GAC1B,MAAM,OAAO,WAAW;GACxB,MAAM,KAAK,SAAS;AACpB,OAAI,SAAS,KAAK,CAChB,KAAI,SAAS,GAAG,CACd,yBAAwB,IAAI,KAAK;OAEjC,UAAS,OAAO,YAAY,KAAK;YAE5B,SAAS,GAChB,UAAS,OAAO;;;AAItB,QAAO;;;;;;AAOT,SAAgB,qBAAqB,YAAiB,UAAoB;CACxE,MAAM,SAAc,EAAE;AAGtB,MAAK,MAAM,OAAO,WAAW,OAAO,KAAK,WAAW,EAAE,OAAO,KAAK,SAAS,CAAC,CAC1E,QAAO,OAAO;AAGhB,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,EAAE;EACnD,MAAM,OAAO,WAAW;AACxB,MAAI,SAAS,MAAM,EAAE;GACnB,MAAM,YAAY,qBAAqB,QAAQ,EAAE,EAAE,MAAM;AACzD,OAAI,aAAa,KACf,QAAO,OAAO;aAET,EAAE,SAAS,QAAQ,QAAQ,OAClC;OAAI,CAAC,UAAU,OAAO,KAAK,CACzB,QAAO,OAAO,SAAS,OAAO,OAAO;;;AAI3C,QAAO,OAAO,KAAK,OAAO,CAAC,SAAS,IAAI,SAAS;;;;;AAMnD,SAAgB,+BAA+B,UAAe,YAAiB;AAC7E,KAAI,SAAS,SAAS,IAAI,SAAS,WAAW,EAAE;EAC9C,MAAM,WAAW,OAAO,KAAK,WAAW;AACxC,OAAK,MAAM,OAAO,UAAU;GAC1B,MAAM,OAAO,WAAW;GACxB,MAAM,KAAK,SAAS;AACpB,OAAI,SAAS,MACX;QAAI,MAAM,KACR,QAAO,SAAS;cAGX,SAAS,KAAK,CACrB,KAAI,SAAS,GAAG,CACd,gCAA+B,IAAI,KAAK;OAExC,UAAS,OAAO,YAAY,KAAK;YAE5B,SAAS,GAChB,UAAS,OAAO;;;AAItB,QAAO"}
@@ -1,2 +1,113 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./is.cjs`);function t(t,n){return e.isObject(t)?Object.fromEntries(Object.entries(t).map(([t,r])=>{let i=n(t,r);return e.isArray(i)&&i.length===2?i:[t,i]}).filter(e=>e!=null)):{}}function n(t,n){return e.isObject(t)?Object.fromEntries(Object.entries(t).filter(([e,t])=>n(e,t))):{}}function r(e,t){return t.dispose&&e.dispose&&t.dispose.add(e.dispose),Object.assign(e,t)}function i(e){return Object.keys(e).length<=0}function a(e,...t){return Object.fromEntries(t.filter(t=>t in e).map(t=>[t,e[t]]))}function o(e,...t){return Object.fromEntries(t.map(t=>[t,e[t]]))}function s(e,...t){return Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e)))}function c(t,n){let{maxDepth:r=99,circleValue:i,maxDepthValue:a,errorTrace:o=!0,filter:s=()=>!0,keepAsIs:c=()=>!1,transformer:l=()=>void 0}=n??{},u=[];function d(t,n){if(n>r)return a;if(c(t))return t;if(!e.isPrimitive(t)){if(u.includes(t))return i;u.push(t)}if(l){let e=l(t);if(e!==void 0)return e}if(e.isSymbol(t))return String(t);if(e.isPrimitive(t))return t;if(typeof Date<`u`&&t instanceof Date)return{__class:`Date`,value:t.toISOString()};if(typeof RegExp<`u`&&t instanceof RegExp)return{__class:`RegExp`,source:t.toString()};if(typeof Map<`u`&&t instanceof Map&&(t=Object.fromEntries(t)),(typeof Set<`u`&&t instanceof Set||e.isBinaryArray(t))&&(t=Array.from(t)),typeof ErrorEvent<`u`&&t instanceof ErrorEvent)return{__class:`ErrorEvent`,message:t.message,filename:t.filename,lineno:t.lineno,colno:t.colno,error:t.error?d(t.error,n+1):void 0};if(typeof Event<`u`&&t instanceof Event)return{__class:`Event`,type:t.type,eventPhase:t.eventPhase,bubbles:t.bubbles,cancelable:t.cancelable,defaultPrevented:t.defaultPrevented,composed:t.composed,timeStamp:t.timeStamp};if(typeof Error<`u`&&t instanceof Error)return{__class:`Error`,name:t.name,message:t.message,stack:o?t.stack:void 0,cause:t.cause?String(t.cause):void 0};if(Array.isArray(t))return t.filter(s).map(e=>d(e,n+1));let f=t?.constructor?.name;if(f&&f!==`Object`){let n={__class:f};for(let r in t)t&&t.hasOwnProperty(r)&&e.isPrimitive(t[r])&&(n[r]=t[r]);return n}let p={};for(let e in t){let r=t[e];s(r)&&(p[e]=d(r,n+1))}return p}return d(t,0)}exports.objectFilter=n,exports.objectInclusivePick=o,exports.objectIsEmpty=i,exports.objectMap=t,exports.objectMergeDisposable=r,exports.objectOmit=s,exports.objectPick=a,exports.objectPlain=c;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common_data_is = require('./is.cjs');
3
+
4
+ //#region src/common/data/object.ts
5
+ /** Like `.map()` for object. Return new key and value or `undefined` to delete. */
6
+ function objectMap(obj, fn) {
7
+ if (!require_common_data_is.isObject(obj)) return {};
8
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => {
9
+ const r = fn(k, v);
10
+ if (require_common_data_is.isArray(r) && r.length === 2) return r;
11
+ return [k, r];
12
+ }).filter((v) => v != null));
13
+ }
14
+ /** Like `.filter()` for object. */
15
+ function objectFilter(obj, fn) {
16
+ if (!require_common_data_is.isObject(obj)) return {};
17
+ return Object.fromEntries(Object.entries(obj).filter(([k, v]) => fn(k, v)));
18
+ }
19
+ /** Merge right into left object. If dispose is defined, it will be combined. Left can be a complex object i.e. a insantiated class. */
20
+ function objectMergeDisposable(a, b) {
21
+ if (b.dispose && a.dispose) b.dispose.add(a.dispose);
22
+ return Object.assign(a, b);
23
+ }
24
+ function objectIsEmpty(obj) {
25
+ return Object.keys(obj).length <= 0;
26
+ }
27
+ function objectPick(obj, ...keys) {
28
+ return Object.fromEntries(keys.filter((key) => key in obj).map((key) => [key, obj[key]]));
29
+ }
30
+ function objectInclusivePick(obj, ...keys) {
31
+ return Object.fromEntries(keys.map((key) => [key, obj[key]]));
32
+ }
33
+ function objectOmit(obj, ...keys) {
34
+ return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key)));
35
+ }
36
+ function objectPlain(obj, opt) {
37
+ const { maxDepth = 99, circleValue, maxDepthValue, errorTrace = true, filter = () => true, keepAsIs = () => false, transformer = () => void 0 } = opt ?? {};
38
+ const cycle = [];
39
+ function handleObject(obj, depth) {
40
+ if (depth > maxDepth) return maxDepthValue;
41
+ if (keepAsIs(obj)) return obj;
42
+ if (!require_common_data_is.isPrimitive(obj)) {
43
+ if (cycle.includes(obj)) return circleValue;
44
+ cycle.push(obj);
45
+ }
46
+ if (transformer) {
47
+ const result = transformer(obj);
48
+ if (result !== void 0) return result;
49
+ }
50
+ if (require_common_data_is.isSymbol(obj)) return String(obj);
51
+ if (require_common_data_is.isPrimitive(obj)) return obj;
52
+ if (typeof Date !== "undefined" && obj instanceof Date) return {
53
+ __class: "Date",
54
+ value: obj.toISOString()
55
+ };
56
+ if (typeof RegExp !== "undefined" && obj instanceof RegExp) return {
57
+ __class: "RegExp",
58
+ source: obj.toString()
59
+ };
60
+ if (typeof Map !== "undefined" && obj instanceof Map) obj = Object.fromEntries(obj);
61
+ if (typeof Set !== "undefined" && obj instanceof Set || require_common_data_is.isBinaryArray(obj)) obj = Array.from(obj);
62
+ if (typeof ErrorEvent !== "undefined" && obj instanceof ErrorEvent) return {
63
+ __class: "ErrorEvent",
64
+ message: obj.message,
65
+ filename: obj.filename,
66
+ lineno: obj.lineno,
67
+ colno: obj.colno,
68
+ error: obj.error ? handleObject(obj.error, depth + 1) : void 0
69
+ };
70
+ if (typeof Event !== "undefined" && obj instanceof Event) return {
71
+ __class: "Event",
72
+ type: obj.type,
73
+ eventPhase: obj.eventPhase,
74
+ bubbles: obj.bubbles,
75
+ cancelable: obj.cancelable,
76
+ defaultPrevented: obj.defaultPrevented,
77
+ composed: obj.composed,
78
+ timeStamp: obj.timeStamp
79
+ };
80
+ if (typeof Error !== "undefined" && obj instanceof Error) return {
81
+ __class: "Error",
82
+ name: obj.name,
83
+ message: obj.message,
84
+ stack: errorTrace ? obj.stack : void 0,
85
+ cause: obj.cause ? String(obj.cause) : void 0
86
+ };
87
+ if (Array.isArray(obj)) return obj.filter(filter).map((o) => handleObject(o, depth + 1));
88
+ const objName = obj?.constructor?.name;
89
+ if (objName && objName !== "Object") {
90
+ const nobj = { __class: objName };
91
+ for (const k in obj) if (obj && obj.hasOwnProperty(k) && require_common_data_is.isPrimitive(obj[k])) nobj[k] = obj[k];
92
+ return nobj;
93
+ }
94
+ const nobj = {};
95
+ for (const key in obj) {
96
+ const value = obj[key];
97
+ if (filter(value)) nobj[key] = handleObject(value, depth + 1);
98
+ }
99
+ return nobj;
100
+ }
101
+ return handleObject(obj, 0);
102
+ }
103
+
104
+ //#endregion
105
+ exports.objectFilter = objectFilter;
106
+ exports.objectInclusivePick = objectInclusivePick;
107
+ exports.objectIsEmpty = objectIsEmpty;
108
+ exports.objectMap = objectMap;
109
+ exports.objectMergeDisposable = objectMergeDisposable;
110
+ exports.objectOmit = objectOmit;
111
+ exports.objectPick = objectPick;
112
+ exports.objectPlain = objectPlain;
2
113
  //# sourceMappingURL=object.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.cjs","names":["isObject","isArray","isPrimitive","isSymbol","isBinaryArray"],"sources":["../../../src/common/data/object.ts"],"sourcesContent":["import { isArray, isBinaryArray, isObject, isPrimitive, isSymbol } from './is'\n\n/** Like `.map()` for object. Return new key and value or `undefined` to delete. */\nexport function objectMap<T = any>(\n obj: any,\n fn: (key: string, value: any) => [key: string, value: T] | T | undefined | null,\n): Record<string, T> {\n if (!isObject(obj))\n return {}\n return Object.fromEntries(\n Object.entries(obj)\n .map(([k, v]) => {\n const r = fn(k, v)\n if (isArray(r) && r.length === 2)\n return r\n return [k, r]\n })\n .filter(v => v != null),\n )\n}\n\n/** Like `.filter()` for object. */\nexport function objectFilter<T = any>(\n obj: any,\n fn: (key: string, value: any) => boolean,\n): Partial<T> {\n if (!isObject(obj))\n return {}\n return Object.fromEntries(Object.entries(obj).filter(([k, v]) => fn(k, v))) as any\n}\n\n/** Merge right into left object. If dispose is defined, it will be combined. Left can be a complex object i.e. a insantiated class. */\nexport function objectMergeDisposable<A extends object, B extends object>(\n a: A,\n b: B,\n): A & B {\n // @ts-expect-error xxx\n if (b.dispose && a.dispose) {\n // @ts-expect-error xxx\n b.dispose.add(a.dispose)\n }\n return Object.assign(a, b)\n}\n\n// export function objectMerge<A, B>(a: A, b: B): A & B {\n// return Object.assign({}, a, b)\n// }\n\nexport function objectIsEmpty(obj: object) {\n return Object.keys(obj).length <= 0\n}\n\n// https://stackoverflow.com/a/56592365/140927\nexport function objectPick<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.filter(key => key in obj).map(key => [key, obj[key]])) as Pick<T, K>\n}\n\nexport function objectInclusivePick<T extends object, K extends (string | number | symbol)>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.map(key => [key, obj[key as unknown as keyof T]])) as { [key in K]: key extends keyof T ? T[key] : undefined }\n}\n\nexport function objectOmit<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key as K))) as Omit<T, K>\n}\n\n/// Convert object to plain object with max depth.\nexport function objectPlain(obj: any, opt?: {\n maxDepth?: number\n maxDepthValue?: any\n circleValue?: any\n errorTrace?: boolean\n filter?: (value: any) => boolean\n keepAsIs?: (value: any) => boolean\n transformer?: (value: any) => any | undefined\n}): any {\n const {\n maxDepth = 99,\n circleValue,\n maxDepthValue,\n errorTrace = true,\n filter = () => true,\n keepAsIs = () => false,\n transformer = () => undefined,\n } = opt ?? {}\n\n const cycle: any = []\n\n function handleObject(obj: any, depth: number): any {\n if (depth > maxDepth)\n return maxDepthValue // '*** MAX DEPTH ***'\n\n if (keepAsIs(obj))\n return obj\n\n if (!isPrimitive(obj)) {\n if (cycle.includes(obj))\n return circleValue // '*** CYCLE ***'\n cycle.push(obj)\n }\n\n if (transformer) {\n const result = transformer(obj)\n if (result !== undefined)\n return result\n }\n\n if (isSymbol(obj))\n return String(obj)\n\n if (isPrimitive(obj))\n return obj\n\n if (typeof Date !== 'undefined' && obj instanceof Date) {\n return {\n __class: 'Date',\n value: obj.toISOString(),\n }\n }\n\n if (typeof RegExp !== 'undefined' && obj instanceof RegExp) {\n return {\n __class: 'RegExp',\n source: obj.toString(),\n }\n }\n\n if (typeof Map !== 'undefined' && obj instanceof Map)\n obj = Object.fromEntries(obj)\n\n if (typeof Set !== 'undefined' && obj instanceof Set || isBinaryArray(obj))\n obj = Array.from(obj as any)\n\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return {\n __class: 'ErrorEvent',\n message: obj.message,\n filename: obj.filename,\n lineno: obj.lineno,\n colno: obj.colno,\n error: obj.error ? handleObject(obj.error, depth + 1) : undefined,\n }\n }\n\n if (typeof Event !== 'undefined' && obj instanceof Event) {\n return {\n __class: 'Event',\n type: obj.type,\n eventPhase: obj.eventPhase,\n bubbles: obj.bubbles,\n cancelable: obj.cancelable,\n defaultPrevented: obj.defaultPrevented,\n composed: obj.composed,\n timeStamp: obj.timeStamp,\n }\n }\n\n if (typeof Error !== 'undefined' && obj instanceof Error) {\n return {\n __class: 'Error',\n name: obj.name,\n message: obj.message,\n stack: errorTrace ? obj.stack : undefined,\n cause: (obj as any).cause ? String((obj as any).cause) : undefined,\n }\n }\n // return `${obj.name || 'Error'}: ${obj.message}${errorTrace ? `\\n${obj.stack}` : ''}`\n\n /* if (obj instanceof Element) {\n const attrs = obj.getAttributeNames().map(name => `${name}=\"${String(obj.getAttribute(name))}\"`).join(' ')\n return `<${[obj.tagName.toLocaleLowerCase(), ...attrs].join(' ')}}>`\n } */\n\n if (Array.isArray(obj)) {\n return obj\n .filter(filter)\n .map(o => handleObject(o, depth + 1))\n }\n\n // For class objects just dump the first level of primitives\n const objName = obj?.constructor?.name\n if (objName && objName !== 'Object') {\n const nobj: any = {\n __class: objName,\n // __code: obj.toString ? obj.toString() : undefined,\n }\n for (const k in obj) {\n if (obj && obj.hasOwnProperty(k) && isPrimitive(obj[k]))\n nobj[k] = obj[k]\n }\n return nobj\n }\n\n // Plain objects are recursively dumped\n const nobj: any = {}\n for (const key in obj) {\n const value = obj[key]\n if (filter(value))\n nobj[key] = handleObject(value, depth + 1)\n }\n return nobj\n\n // return undefined\n }\n\n return handleObject(obj, 0)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"object.cjs","names":["isObject","isArray","isPrimitive","isSymbol","isBinaryArray"],"sources":["../../../src/common/data/object.ts"],"sourcesContent":["import { isArray, isBinaryArray, isObject, isPrimitive, isSymbol } from './is'\n\n/** Like `.map()` for object. Return new key and value or `undefined` to delete. */\nexport function objectMap<T = any>(\n obj: any,\n fn: (key: string, value: any) => [key: string, value: T] | T | undefined | null,\n): Record<string, T> {\n if (!isObject(obj))\n return {}\n return Object.fromEntries(\n Object.entries(obj)\n .map(([k, v]) => {\n const r = fn(k, v)\n if (isArray(r) && r.length === 2)\n return r\n return [k, r]\n })\n .filter(v => v != null),\n )\n}\n\n/** Like `.filter()` for object. */\nexport function objectFilter<T = any>(\n obj: any,\n fn: (key: string, value: any) => boolean,\n): Partial<T> {\n if (!isObject(obj))\n return {}\n return Object.fromEntries(Object.entries(obj).filter(([k, v]) => fn(k, v))) as any\n}\n\n/** Merge right into left object. If dispose is defined, it will be combined. Left can be a complex object i.e. a insantiated class. */\nexport function objectMergeDisposable<A extends object, B extends object>(\n a: A,\n b: B,\n): A & B {\n // @ts-expect-error xxx\n if (b.dispose && a.dispose) {\n // @ts-expect-error xxx\n b.dispose.add(a.dispose)\n }\n return Object.assign(a, b)\n}\n\n// export function objectMerge<A, B>(a: A, b: B): A & B {\n// return Object.assign({}, a, b)\n// }\n\nexport function objectIsEmpty(obj: object) {\n return Object.keys(obj).length <= 0\n}\n\n// https://stackoverflow.com/a/56592365/140927\nexport function objectPick<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.filter(key => key in obj).map(key => [key, obj[key]])) as Pick<T, K>\n}\n\nexport function objectInclusivePick<T extends object, K extends (string | number | symbol)>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.map(key => [key, obj[key as unknown as keyof T]])) as { [key in K]: key extends keyof T ? T[key] : undefined }\n}\n\nexport function objectOmit<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key as K))) as Omit<T, K>\n}\n\n/// Convert object to plain object with max depth.\nexport function objectPlain(obj: any, opt?: {\n maxDepth?: number\n maxDepthValue?: any\n circleValue?: any\n errorTrace?: boolean\n filter?: (value: any) => boolean\n keepAsIs?: (value: any) => boolean\n transformer?: (value: any) => any | undefined\n}): any {\n const {\n maxDepth = 99,\n circleValue,\n maxDepthValue,\n errorTrace = true,\n filter = () => true,\n keepAsIs = () => false,\n transformer = () => undefined,\n } = opt ?? {}\n\n const cycle: any = []\n\n function handleObject(obj: any, depth: number): any {\n if (depth > maxDepth)\n return maxDepthValue // '*** MAX DEPTH ***'\n\n if (keepAsIs(obj))\n return obj\n\n if (!isPrimitive(obj)) {\n if (cycle.includes(obj))\n return circleValue // '*** CYCLE ***'\n cycle.push(obj)\n }\n\n if (transformer) {\n const result = transformer(obj)\n if (result !== undefined)\n return result\n }\n\n if (isSymbol(obj))\n return String(obj)\n\n if (isPrimitive(obj))\n return obj\n\n if (typeof Date !== 'undefined' && obj instanceof Date) {\n return {\n __class: 'Date',\n value: obj.toISOString(),\n }\n }\n\n if (typeof RegExp !== 'undefined' && obj instanceof RegExp) {\n return {\n __class: 'RegExp',\n source: obj.toString(),\n }\n }\n\n if (typeof Map !== 'undefined' && obj instanceof Map)\n obj = Object.fromEntries(obj)\n\n if (typeof Set !== 'undefined' && obj instanceof Set || isBinaryArray(obj))\n obj = Array.from(obj as any)\n\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return {\n __class: 'ErrorEvent',\n message: obj.message,\n filename: obj.filename,\n lineno: obj.lineno,\n colno: obj.colno,\n error: obj.error ? handleObject(obj.error, depth + 1) : undefined,\n }\n }\n\n if (typeof Event !== 'undefined' && obj instanceof Event) {\n return {\n __class: 'Event',\n type: obj.type,\n eventPhase: obj.eventPhase,\n bubbles: obj.bubbles,\n cancelable: obj.cancelable,\n defaultPrevented: obj.defaultPrevented,\n composed: obj.composed,\n timeStamp: obj.timeStamp,\n }\n }\n\n if (typeof Error !== 'undefined' && obj instanceof Error) {\n return {\n __class: 'Error',\n name: obj.name,\n message: obj.message,\n stack: errorTrace ? obj.stack : undefined,\n cause: (obj as any).cause ? String((obj as any).cause) : undefined,\n }\n }\n // return `${obj.name || 'Error'}: ${obj.message}${errorTrace ? `\\n${obj.stack}` : ''}`\n\n /* if (obj instanceof Element) {\n const attrs = obj.getAttributeNames().map(name => `${name}=\"${String(obj.getAttribute(name))}\"`).join(' ')\n return `<${[obj.tagName.toLocaleLowerCase(), ...attrs].join(' ')}}>`\n } */\n\n if (Array.isArray(obj)) {\n return obj\n .filter(filter)\n .map(o => handleObject(o, depth + 1))\n }\n\n // For class objects just dump the first level of primitives\n const objName = obj?.constructor?.name\n if (objName && objName !== 'Object') {\n const nobj: any = {\n __class: objName,\n // __code: obj.toString ? obj.toString() : undefined,\n }\n for (const k in obj) {\n if (obj && obj.hasOwnProperty(k) && isPrimitive(obj[k]))\n nobj[k] = obj[k]\n }\n return nobj\n }\n\n // Plain objects are recursively dumped\n const nobj: any = {}\n for (const key in obj) {\n const value = obj[key]\n if (filter(value))\n nobj[key] = handleObject(value, depth + 1)\n }\n return nobj\n\n // return undefined\n }\n\n return handleObject(obj, 0)\n}\n"],"mappings":"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"}
@@ -1,2 +1,105 @@
1
- import{isArray as e,isBinaryArray as t,isObject as n,isPrimitive as r,isSymbol as i}from"./is.mjs";function a(t,r){return n(t)?Object.fromEntries(Object.entries(t).map(([t,n])=>{let i=r(t,n);return e(i)&&i.length===2?i:[t,i]}).filter(e=>e!=null)):{}}function o(e,t){return n(e)?Object.fromEntries(Object.entries(e).filter(([e,n])=>t(e,n))):{}}function s(e,t){return t.dispose&&e.dispose&&t.dispose.add(e.dispose),Object.assign(e,t)}function c(e){return Object.keys(e).length<=0}function l(e,...t){return Object.fromEntries(t.filter(t=>t in e).map(t=>[t,e[t]]))}function u(e,...t){return Object.fromEntries(t.map(t=>[t,e[t]]))}function d(e,...t){return Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e)))}function f(e,n){let{maxDepth:a=99,circleValue:o,maxDepthValue:s,errorTrace:c=!0,filter:l=()=>!0,keepAsIs:u=()=>!1,transformer:d=()=>void 0}=n??{},f=[];function p(e,n){if(n>a)return s;if(u(e))return e;if(!r(e)){if(f.includes(e))return o;f.push(e)}if(d){let t=d(e);if(t!==void 0)return t}if(i(e))return String(e);if(r(e))return e;if(typeof Date<`u`&&e instanceof Date)return{__class:`Date`,value:e.toISOString()};if(typeof RegExp<`u`&&e instanceof RegExp)return{__class:`RegExp`,source:e.toString()};if(typeof Map<`u`&&e instanceof Map&&(e=Object.fromEntries(e)),(typeof Set<`u`&&e instanceof Set||t(e))&&(e=Array.from(e)),typeof ErrorEvent<`u`&&e instanceof ErrorEvent)return{__class:`ErrorEvent`,message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno,error:e.error?p(e.error,n+1):void 0};if(typeof Event<`u`&&e instanceof Event)return{__class:`Event`,type:e.type,eventPhase:e.eventPhase,bubbles:e.bubbles,cancelable:e.cancelable,defaultPrevented:e.defaultPrevented,composed:e.composed,timeStamp:e.timeStamp};if(typeof Error<`u`&&e instanceof Error)return{__class:`Error`,name:e.name,message:e.message,stack:c?e.stack:void 0,cause:e.cause?String(e.cause):void 0};if(Array.isArray(e))return e.filter(l).map(e=>p(e,n+1));let m=e?.constructor?.name;if(m&&m!==`Object`){let t={__class:m};for(let n in e)e&&e.hasOwnProperty(n)&&r(e[n])&&(t[n]=e[n]);return t}let h={};for(let t in e){let r=e[t];l(r)&&(h[t]=p(r,n+1))}return h}return p(e,0)}export{o as objectFilter,u as objectInclusivePick,c as objectIsEmpty,a as objectMap,s as objectMergeDisposable,d as objectOmit,l as objectPick,f as objectPlain};
1
+ import { isArray, isBinaryArray, isObject, isPrimitive, isSymbol } from "./is.mjs";
2
+
3
+ //#region src/common/data/object.ts
4
+ /** Like `.map()` for object. Return new key and value or `undefined` to delete. */
5
+ function objectMap(obj, fn) {
6
+ if (!isObject(obj)) return {};
7
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => {
8
+ const r = fn(k, v);
9
+ if (isArray(r) && r.length === 2) return r;
10
+ return [k, r];
11
+ }).filter((v) => v != null));
12
+ }
13
+ /** Like `.filter()` for object. */
14
+ function objectFilter(obj, fn) {
15
+ if (!isObject(obj)) return {};
16
+ return Object.fromEntries(Object.entries(obj).filter(([k, v]) => fn(k, v)));
17
+ }
18
+ /** Merge right into left object. If dispose is defined, it will be combined. Left can be a complex object i.e. a insantiated class. */
19
+ function objectMergeDisposable(a, b) {
20
+ if (b.dispose && a.dispose) b.dispose.add(a.dispose);
21
+ return Object.assign(a, b);
22
+ }
23
+ function objectIsEmpty(obj) {
24
+ return Object.keys(obj).length <= 0;
25
+ }
26
+ function objectPick(obj, ...keys) {
27
+ return Object.fromEntries(keys.filter((key) => key in obj).map((key) => [key, obj[key]]));
28
+ }
29
+ function objectInclusivePick(obj, ...keys) {
30
+ return Object.fromEntries(keys.map((key) => [key, obj[key]]));
31
+ }
32
+ function objectOmit(obj, ...keys) {
33
+ return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key)));
34
+ }
35
+ function objectPlain(obj, opt) {
36
+ const { maxDepth = 99, circleValue, maxDepthValue, errorTrace = true, filter = () => true, keepAsIs = () => false, transformer = () => void 0 } = opt ?? {};
37
+ const cycle = [];
38
+ function handleObject(obj, depth) {
39
+ if (depth > maxDepth) return maxDepthValue;
40
+ if (keepAsIs(obj)) return obj;
41
+ if (!isPrimitive(obj)) {
42
+ if (cycle.includes(obj)) return circleValue;
43
+ cycle.push(obj);
44
+ }
45
+ if (transformer) {
46
+ const result = transformer(obj);
47
+ if (result !== void 0) return result;
48
+ }
49
+ if (isSymbol(obj)) return String(obj);
50
+ if (isPrimitive(obj)) return obj;
51
+ if (typeof Date !== "undefined" && obj instanceof Date) return {
52
+ __class: "Date",
53
+ value: obj.toISOString()
54
+ };
55
+ if (typeof RegExp !== "undefined" && obj instanceof RegExp) return {
56
+ __class: "RegExp",
57
+ source: obj.toString()
58
+ };
59
+ if (typeof Map !== "undefined" && obj instanceof Map) obj = Object.fromEntries(obj);
60
+ if (typeof Set !== "undefined" && obj instanceof Set || isBinaryArray(obj)) obj = Array.from(obj);
61
+ if (typeof ErrorEvent !== "undefined" && obj instanceof ErrorEvent) return {
62
+ __class: "ErrorEvent",
63
+ message: obj.message,
64
+ filename: obj.filename,
65
+ lineno: obj.lineno,
66
+ colno: obj.colno,
67
+ error: obj.error ? handleObject(obj.error, depth + 1) : void 0
68
+ };
69
+ if (typeof Event !== "undefined" && obj instanceof Event) return {
70
+ __class: "Event",
71
+ type: obj.type,
72
+ eventPhase: obj.eventPhase,
73
+ bubbles: obj.bubbles,
74
+ cancelable: obj.cancelable,
75
+ defaultPrevented: obj.defaultPrevented,
76
+ composed: obj.composed,
77
+ timeStamp: obj.timeStamp
78
+ };
79
+ if (typeof Error !== "undefined" && obj instanceof Error) return {
80
+ __class: "Error",
81
+ name: obj.name,
82
+ message: obj.message,
83
+ stack: errorTrace ? obj.stack : void 0,
84
+ cause: obj.cause ? String(obj.cause) : void 0
85
+ };
86
+ if (Array.isArray(obj)) return obj.filter(filter).map((o) => handleObject(o, depth + 1));
87
+ const objName = obj?.constructor?.name;
88
+ if (objName && objName !== "Object") {
89
+ const nobj = { __class: objName };
90
+ for (const k in obj) if (obj && obj.hasOwnProperty(k) && isPrimitive(obj[k])) nobj[k] = obj[k];
91
+ return nobj;
92
+ }
93
+ const nobj = {};
94
+ for (const key in obj) {
95
+ const value = obj[key];
96
+ if (filter(value)) nobj[key] = handleObject(value, depth + 1);
97
+ }
98
+ return nobj;
99
+ }
100
+ return handleObject(obj, 0);
101
+ }
102
+
103
+ //#endregion
104
+ export { objectFilter, objectInclusivePick, objectIsEmpty, objectMap, objectMergeDisposable, objectOmit, objectPick, objectPlain };
2
105
  //# sourceMappingURL=object.mjs.map