@wcstack/state 1.3.14 → 1.3.16

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 (567) hide show
  1. package/README.ja.md +37 -13
  2. package/README.md +36 -12
  3. package/package.json +5 -4
  4. package/dist/address/AbsolutePathInfo.d.ts +0 -4
  5. package/dist/address/AbsolutePathInfo.d.ts.map +0 -1
  6. package/dist/address/AbsolutePathInfo.js +0 -33
  7. package/dist/address/AbsolutePathInfo.js.map +0 -1
  8. package/dist/address/AbsoluteStateAddress.d.ts +0 -4
  9. package/dist/address/AbsoluteStateAddress.d.ts.map +0 -1
  10. package/dist/address/AbsoluteStateAddress.js +0 -56
  11. package/dist/address/AbsoluteStateAddress.js.map +0 -1
  12. package/dist/address/PathInfo.d.ts +0 -3
  13. package/dist/address/PathInfo.d.ts.map +0 -1
  14. package/dist/address/PathInfo.js +0 -104
  15. package/dist/address/PathInfo.js.map +0 -1
  16. package/dist/address/ResolvedAddress.d.ts +0 -31
  17. package/dist/address/ResolvedAddress.d.ts.map +0 -1
  18. package/dist/address/ResolvedAddress.js +0 -110
  19. package/dist/address/ResolvedAddress.js.map +0 -1
  20. package/dist/address/StateAddress.d.ts +0 -4
  21. package/dist/address/StateAddress.d.ts.map +0 -1
  22. package/dist/address/StateAddress.js +0 -56
  23. package/dist/address/StateAddress.js.map +0 -1
  24. package/dist/address/calcWildcardLen.d.ts +0 -3
  25. package/dist/address/calcWildcardLen.d.ts.map +0 -1
  26. package/dist/address/calcWildcardLen.js +0 -31
  27. package/dist/address/calcWildcardLen.js.map +0 -1
  28. package/dist/address/types.d.ts +0 -54
  29. package/dist/address/types.d.ts.map +0 -1
  30. package/dist/address/types.js +0 -2
  31. package/dist/address/types.js.map +0 -1
  32. package/dist/apply/applyChange.d.ts +0 -4
  33. package/dist/apply/applyChange.d.ts.map +0 -1
  34. package/dist/apply/applyChange.js +0 -116
  35. package/dist/apply/applyChange.js.map +0 -1
  36. package/dist/apply/applyChangeFromBindings.d.ts +0 -13
  37. package/dist/apply/applyChangeFromBindings.d.ts.map +0 -1
  38. package/dist/apply/applyChangeFromBindings.js +0 -86
  39. package/dist/apply/applyChangeFromBindings.js.map +0 -1
  40. package/dist/apply/applyChangeToAttribute.d.ts +0 -4
  41. package/dist/apply/applyChangeToAttribute.d.ts.map +0 -1
  42. package/dist/apply/applyChangeToAttribute.js +0 -8
  43. package/dist/apply/applyChangeToAttribute.js.map +0 -1
  44. package/dist/apply/applyChangeToCheckbox.d.ts +0 -4
  45. package/dist/apply/applyChangeToCheckbox.d.ts.map +0 -1
  46. package/dist/apply/applyChangeToCheckbox.js +0 -11
  47. package/dist/apply/applyChangeToCheckbox.js.map +0 -1
  48. package/dist/apply/applyChangeToClass.d.ts +0 -4
  49. package/dist/apply/applyChangeToClass.d.ts.map +0 -1
  50. package/dist/apply/applyChangeToClass.js +0 -10
  51. package/dist/apply/applyChangeToClass.js.map +0 -1
  52. package/dist/apply/applyChangeToFor.d.ts +0 -9
  53. package/dist/apply/applyChangeToFor.d.ts.map +0 -1
  54. package/dist/apply/applyChangeToFor.js +0 -186
  55. package/dist/apply/applyChangeToFor.js.map +0 -1
  56. package/dist/apply/applyChangeToIf.d.ts +0 -4
  57. package/dist/apply/applyChangeToIf.d.ts.map +0 -1
  58. package/dist/apply/applyChangeToIf.js +0 -42
  59. package/dist/apply/applyChangeToIf.js.map +0 -1
  60. package/dist/apply/applyChangeToProperty.d.ts +0 -4
  61. package/dist/apply/applyChangeToProperty.d.ts.map +0 -1
  62. package/dist/apply/applyChangeToProperty.js +0 -37
  63. package/dist/apply/applyChangeToProperty.js.map +0 -1
  64. package/dist/apply/applyChangeToRadio.d.ts +0 -4
  65. package/dist/apply/applyChangeToRadio.d.ts.map +0 -1
  66. package/dist/apply/applyChangeToRadio.js +0 -8
  67. package/dist/apply/applyChangeToRadio.js.map +0 -1
  68. package/dist/apply/applyChangeToStyle.d.ts +0 -4
  69. package/dist/apply/applyChangeToStyle.d.ts.map +0 -1
  70. package/dist/apply/applyChangeToStyle.js +0 -9
  71. package/dist/apply/applyChangeToStyle.js.map +0 -1
  72. package/dist/apply/applyChangeToText.d.ts +0 -4
  73. package/dist/apply/applyChangeToText.d.ts.map +0 -1
  74. package/dist/apply/applyChangeToText.js +0 -6
  75. package/dist/apply/applyChangeToText.js.map +0 -1
  76. package/dist/apply/applyChangeToWebComponent.d.ts +0 -4
  77. package/dist/apply/applyChangeToWebComponent.d.ts.map +0 -1
  78. package/dist/apply/applyChangeToWebComponent.js +0 -15
  79. package/dist/apply/applyChangeToWebComponent.js.map +0 -1
  80. package/dist/apply/getFilteredValue.d.ts +0 -3
  81. package/dist/apply/getFilteredValue.d.ts.map +0 -1
  82. package/dist/apply/getFilteredValue.js +0 -8
  83. package/dist/apply/getFilteredValue.js.map +0 -1
  84. package/dist/apply/getValue.d.ts +0 -4
  85. package/dist/apply/getValue.d.ts.map +0 -1
  86. package/dist/apply/getValue.js +0 -20
  87. package/dist/apply/getValue.js.map +0 -1
  88. package/dist/apply/rootNodeByFragment.d.ts +0 -3
  89. package/dist/apply/rootNodeByFragment.d.ts.map +0 -1
  90. package/dist/apply/rootNodeByFragment.js +0 -13
  91. package/dist/apply/rootNodeByFragment.js.map +0 -1
  92. package/dist/apply/types.d.ts +0 -20
  93. package/dist/apply/types.d.ts.map +0 -1
  94. package/dist/apply/types.js +0 -2
  95. package/dist/apply/types.js.map +0 -1
  96. package/dist/applyChangeToNode.d.ts +0 -2
  97. package/dist/applyChangeToNode.d.ts.map +0 -1
  98. package/dist/applyChangeToNode.js +0 -38
  99. package/dist/applyChangeToNode.js.map +0 -1
  100. package/dist/bindTextParser/parseBindTextForEmbeddedNode.d.ts +0 -3
  101. package/dist/bindTextParser/parseBindTextForEmbeddedNode.d.ts.map +0 -1
  102. package/dist/bindTextParser/parseBindTextForEmbeddedNode.js +0 -13
  103. package/dist/bindTextParser/parseBindTextForEmbeddedNode.js.map +0 -1
  104. package/dist/bindTextParser/parseBindTextsForElement.d.ts +0 -3
  105. package/dist/bindTextParser/parseBindTextsForElement.d.ts.map +0 -1
  106. package/dist/bindTextParser/parseBindTextsForElement.js +0 -80
  107. package/dist/bindTextParser/parseBindTextsForElement.js.map +0 -1
  108. package/dist/bindTextParser/parseFilterArgs.d.ts +0 -2
  109. package/dist/bindTextParser/parseFilterArgs.d.ts.map +0 -1
  110. package/dist/bindTextParser/parseFilterArgs.js +0 -31
  111. package/dist/bindTextParser/parseFilterArgs.js.map +0 -1
  112. package/dist/bindTextParser/parseFilters.d.ts +0 -4
  113. package/dist/bindTextParser/parseFilters.d.ts.map +0 -1
  114. package/dist/bindTextParser/parseFilters.js +0 -52
  115. package/dist/bindTextParser/parseFilters.js.map +0 -1
  116. package/dist/bindTextParser/parsePropPart.d.ts +0 -5
  117. package/dist/bindTextParser/parsePropPart.d.ts.map +0 -1
  118. package/dist/bindTextParser/parsePropPart.js +0 -44
  119. package/dist/bindTextParser/parsePropPart.js.map +0 -1
  120. package/dist/bindTextParser/parseStatePart.d.ts +0 -5
  121. package/dist/bindTextParser/parseStatePart.d.ts.map +0 -1
  122. package/dist/bindTextParser/parseStatePart.js +0 -39
  123. package/dist/bindTextParser/parseStatePart.js.map +0 -1
  124. package/dist/bindTextParser/types.d.ts +0 -3
  125. package/dist/bindTextParser/types.d.ts.map +0 -1
  126. package/dist/bindTextParser/types.js +0 -2
  127. package/dist/bindTextParser/types.js.map +0 -1
  128. package/dist/bindTextParser/utils.d.ts +0 -2
  129. package/dist/bindTextParser/utils.d.ts.map +0 -1
  130. package/dist/bindTextParser/utils.js +0 -2
  131. package/dist/bindTextParser/utils.js.map +0 -1
  132. package/dist/binding/getAbsoluteStateAddressByBinding.d.ts +0 -5
  133. package/dist/binding/getAbsoluteStateAddressByBinding.d.ts.map +0 -1
  134. package/dist/binding/getAbsoluteStateAddressByBinding.js +0 -41
  135. package/dist/binding/getAbsoluteStateAddressByBinding.js.map +0 -1
  136. package/dist/binding/getBindingSetByAbsoluteStateAddress.d.ts +0 -7
  137. package/dist/binding/getBindingSetByAbsoluteStateAddress.d.ts.map +0 -1
  138. package/dist/binding/getBindingSetByAbsoluteStateAddress.js +0 -22
  139. package/dist/binding/getBindingSetByAbsoluteStateAddress.js.map +0 -1
  140. package/dist/binding/getStateAddressByBindingInfo.d.ts +0 -5
  141. package/dist/binding/getStateAddressByBindingInfo.d.ts.map +0 -1
  142. package/dist/binding/getStateAddressByBindingInfo.js +0 -28
  143. package/dist/binding/getStateAddressByBindingInfo.js.map +0 -1
  144. package/dist/binding/types.d.ts +0 -23
  145. package/dist/binding/types.d.ts.map +0 -1
  146. package/dist/binding/types.js +0 -2
  147. package/dist/binding/types.js.map +0 -1
  148. package/dist/bindings/bindLoopContextToContent.d.ts +0 -5
  149. package/dist/bindings/bindLoopContextToContent.d.ts.map +0 -1
  150. package/dist/bindings/bindLoopContextToContent.js +0 -15
  151. package/dist/bindings/bindLoopContextToContent.js.map +0 -1
  152. package/dist/bindings/bindingsByContent.d.ts +0 -5
  153. package/dist/bindings/bindingsByContent.d.ts.map +0 -1
  154. package/dist/bindings/bindingsByContent.js +0 -8
  155. package/dist/bindings/bindingsByContent.js.map +0 -1
  156. package/dist/bindings/collectNodesAndBindingInfos.d.ts +0 -6
  157. package/dist/bindings/collectNodesAndBindingInfos.d.ts.map +0 -1
  158. package/dist/bindings/collectNodesAndBindingInfos.js +0 -46
  159. package/dist/bindings/collectNodesAndBindingInfos.js.map +0 -1
  160. package/dist/bindings/getBindingInfos.d.ts +0 -4
  161. package/dist/bindings/getBindingInfos.d.ts.map +0 -1
  162. package/dist/bindings/getBindingInfos.js +0 -22
  163. package/dist/bindings/getBindingInfos.js.map +0 -1
  164. package/dist/bindings/getBindingsByNode.d.ts +0 -5
  165. package/dist/bindings/getBindingsByNode.d.ts.map +0 -1
  166. package/dist/bindings/getBindingsByNode.js +0 -17
  167. package/dist/bindings/getBindingsByNode.js.map +0 -1
  168. package/dist/bindings/getParseBindTextResults.d.ts +0 -3
  169. package/dist/bindings/getParseBindTextResults.d.ts.map +0 -1
  170. package/dist/bindings/getParseBindTextResults.js +0 -36
  171. package/dist/bindings/getParseBindTextResults.js.map +0 -1
  172. package/dist/bindings/getSubscriberNodes.d.ts +0 -7
  173. package/dist/bindings/getSubscriberNodes.d.ts.map +0 -1
  174. package/dist/bindings/getSubscriberNodes.js +0 -32
  175. package/dist/bindings/getSubscriberNodes.js.map +0 -1
  176. package/dist/bindings/indexBindingsByContent.d.ts +0 -5
  177. package/dist/bindings/indexBindingsByContent.d.ts.map +0 -1
  178. package/dist/bindings/indexBindingsByContent.js +0 -8
  179. package/dist/bindings/indexBindingsByContent.js.map +0 -1
  180. package/dist/bindings/initializeBindingPromiseByNode.d.ts +0 -5
  181. package/dist/bindings/initializeBindingPromiseByNode.d.ts.map +0 -1
  182. package/dist/bindings/initializeBindingPromiseByNode.js +0 -28
  183. package/dist/bindings/initializeBindingPromiseByNode.js.map +0 -1
  184. package/dist/bindings/initializeBindings.d.ts +0 -6
  185. package/dist/bindings/initializeBindings.d.ts.map +0 -1
  186. package/dist/bindings/initializeBindings.js +0 -59
  187. package/dist/bindings/initializeBindings.js.map +0 -1
  188. package/dist/bindings/nodesByContent.d.ts +0 -4
  189. package/dist/bindings/nodesByContent.d.ts.map +0 -1
  190. package/dist/bindings/nodesByContent.js +0 -8
  191. package/dist/bindings/nodesByContent.js.map +0 -1
  192. package/dist/bindings/parseCommentNode.d.ts +0 -3
  193. package/dist/bindings/parseCommentNode.d.ts.map +0 -1
  194. package/dist/bindings/parseCommentNode.js +0 -47
  195. package/dist/bindings/parseCommentNode.js.map +0 -1
  196. package/dist/bindings/replaceToReplaceNode.d.ts +0 -3
  197. package/dist/bindings/replaceToReplaceNode.d.ts.map +0 -1
  198. package/dist/bindings/replaceToReplaceNode.js +0 -13
  199. package/dist/bindings/replaceToReplaceNode.js.map +0 -1
  200. package/dist/bindings/types.d.ts +0 -11
  201. package/dist/bindings/types.d.ts.map +0 -1
  202. package/dist/bindings/types.js +0 -2
  203. package/dist/bindings/types.js.map +0 -1
  204. package/dist/bootstrapState.d.ts +0 -3
  205. package/dist/bootstrapState.d.ts.map +0 -1
  206. package/dist/bootstrapState.js +0 -9
  207. package/dist/bootstrapState.js.map +0 -1
  208. package/dist/buildBindings.d.ts +0 -2
  209. package/dist/buildBindings.d.ts.map +0 -1
  210. package/dist/buildBindings.js +0 -30
  211. package/dist/buildBindings.js.map +0 -1
  212. package/dist/cache/cacheEntryByAbsoluteStateAddress.d.ts +0 -6
  213. package/dist/cache/cacheEntryByAbsoluteStateAddress.d.ts.map +0 -1
  214. package/dist/cache/cacheEntryByAbsoluteStateAddress.js +0 -19
  215. package/dist/cache/cacheEntryByAbsoluteStateAddress.js.map +0 -1
  216. package/dist/cache/types.d.ts +0 -5
  217. package/dist/cache/types.d.ts.map +0 -1
  218. package/dist/cache/types.js +0 -2
  219. package/dist/cache/types.js.map +0 -1
  220. package/dist/components/State.d.ts +0 -83
  221. package/dist/components/State.d.ts.map +0 -1
  222. package/dist/components/State.js +0 -340
  223. package/dist/components/State.js.map +0 -1
  224. package/dist/components/types.d.ts +0 -26
  225. package/dist/components/types.d.ts.map +0 -1
  226. package/dist/components/types.js +0 -2
  227. package/dist/components/types.js.map +0 -1
  228. package/dist/config.d.ts +0 -4
  229. package/dist/config.d.ts.map +0 -1
  230. package/dist/config.js +0 -49
  231. package/dist/config.js.map +0 -1
  232. package/dist/createEmptyArray.d.ts +0 -2
  233. package/dist/createEmptyArray.d.ts.map +0 -1
  234. package/dist/createEmptyArray.js +0 -4
  235. package/dist/createEmptyArray.js.map +0 -1
  236. package/dist/createEmptySet.d.ts +0 -2
  237. package/dist/createEmptySet.d.ts.map +0 -1
  238. package/dist/createEmptySet.js +0 -4
  239. package/dist/createEmptySet.js.map +0 -1
  240. package/dist/define.d.ts +0 -14
  241. package/dist/define.d.ts.map +0 -1
  242. package/dist/define.js +0 -25
  243. package/dist/define.js.map +0 -1
  244. package/dist/dependency/types.d.ts +0 -2
  245. package/dist/dependency/types.d.ts.map +0 -1
  246. package/dist/dependency/types.js +0 -2
  247. package/dist/dependency/types.js.map +0 -1
  248. package/dist/dependency/walkDependency.d.ts +0 -6
  249. package/dist/dependency/walkDependency.d.ts.map +0 -1
  250. package/dist/dependency/walkDependency.js +0 -194
  251. package/dist/dependency/walkDependency.js.map +0 -1
  252. package/dist/event/checkboxHandler.d.ts +0 -14
  253. package/dist/event/checkboxHandler.d.ts.map +0 -1
  254. package/dist/event/checkboxHandler.js +0 -120
  255. package/dist/event/checkboxHandler.js.map +0 -1
  256. package/dist/event/handler.d.ts +0 -8
  257. package/dist/event/handler.d.ts.map +0 -1
  258. package/dist/event/handler.js +0 -81
  259. package/dist/event/handler.js.map +0 -1
  260. package/dist/event/isPossibleTwoWay.d.ts +0 -2
  261. package/dist/event/isPossibleTwoWay.d.ts.map +0 -1
  262. package/dist/event/isPossibleTwoWay.js +0 -29
  263. package/dist/event/isPossibleTwoWay.js.map +0 -1
  264. package/dist/event/radioHandler.d.ts +0 -14
  265. package/dist/event/radioHandler.d.ts.map +0 -1
  266. package/dist/event/radioHandler.js +0 -101
  267. package/dist/event/radioHandler.js.map +0 -1
  268. package/dist/event/twowayHandler.d.ts +0 -14
  269. package/dist/event/twowayHandler.d.ts.map +0 -1
  270. package/dist/event/twowayHandler.js +0 -100
  271. package/dist/event/twowayHandler.js.map +0 -1
  272. package/dist/exports.d.ts +0 -3
  273. package/dist/exports.d.ts.map +0 -1
  274. package/dist/exports.js +0 -2
  275. package/dist/exports.js.map +0 -1
  276. package/dist/filters/builtinFilters.d.ts +0 -16
  277. package/dist/filters/builtinFilters.d.ts.map +0 -1
  278. package/dist/filters/builtinFilters.js +0 -716
  279. package/dist/filters/builtinFilters.js.map +0 -1
  280. package/dist/filters/errorMessages.d.ts +0 -43
  281. package/dist/filters/errorMessages.d.ts.map +0 -1
  282. package/dist/filters/errorMessages.js +0 -72
  283. package/dist/filters/errorMessages.js.map +0 -1
  284. package/dist/filters/types.d.ts +0 -23
  285. package/dist/filters/types.d.ts.map +0 -1
  286. package/dist/filters/types.js +0 -2
  287. package/dist/filters/types.js.map +0 -1
  288. package/dist/getUUID.d.ts +0 -2
  289. package/dist/getUUID.d.ts.map +0 -1
  290. package/dist/getUUID.js +0 -5
  291. package/dist/getUUID.js.map +0 -1
  292. package/dist/hydrater/hydrate.d.ts +0 -1
  293. package/dist/hydrater/hydrate.d.ts.map +0 -1
  294. package/dist/hydrater/hydrate.js +0 -2
  295. package/dist/hydrater/hydrate.js.map +0 -1
  296. package/dist/isCustomElement.d.ts +0 -2
  297. package/dist/isCustomElement.d.ts.map +0 -1
  298. package/dist/isCustomElement.js +0 -26
  299. package/dist/isCustomElement.js.map +0 -1
  300. package/dist/list/createListDiff.d.ts +0 -13
  301. package/dist/list/createListDiff.d.ts.map +0 -1
  302. package/dist/list/createListDiff.js +0 -181
  303. package/dist/list/createListDiff.js.map +0 -1
  304. package/dist/list/createListIndex.d.ts +0 -10
  305. package/dist/list/createListIndex.d.ts.map +0 -1
  306. package/dist/list/createListIndex.js +0 -136
  307. package/dist/list/createListIndex.js.map +0 -1
  308. package/dist/list/getIndexValueByLoopContext.d.ts +0 -3
  309. package/dist/list/getIndexValueByLoopContext.d.ts.map +0 -1
  310. package/dist/list/getIndexValueByLoopContext.js +0 -18
  311. package/dist/list/getIndexValueByLoopContext.js.map +0 -1
  312. package/dist/list/getListIndexByBindingInfo.d.ts +0 -4
  313. package/dist/list/getListIndexByBindingInfo.d.ts.map +0 -1
  314. package/dist/list/getListIndexByBindingInfo.js +0 -32
  315. package/dist/list/getListIndexByBindingInfo.js.map +0 -1
  316. package/dist/list/lastListValueByAbsoluteStateAddress.d.ts +0 -6
  317. package/dist/list/lastListValueByAbsoluteStateAddress.d.ts.map +0 -1
  318. package/dist/list/lastListValueByAbsoluteStateAddress.js +0 -14
  319. package/dist/list/lastListValueByAbsoluteStateAddress.js.map +0 -1
  320. package/dist/list/listIndexesByList.d.ts +0 -4
  321. package/dist/list/listIndexesByList.d.ts.map +0 -1
  322. package/dist/list/listIndexesByList.js +0 -12
  323. package/dist/list/listIndexesByList.js.map +0 -1
  324. package/dist/list/loopContext.d.ts +0 -3
  325. package/dist/list/loopContext.d.ts.map +0 -1
  326. package/dist/list/loopContext.js +0 -54
  327. package/dist/list/loopContext.js.map +0 -1
  328. package/dist/list/loopContextByNode.d.ts +0 -4
  329. package/dist/list/loopContextByNode.d.ts.map +0 -1
  330. package/dist/list/loopContextByNode.js +0 -20
  331. package/dist/list/loopContextByNode.js.map +0 -1
  332. package/dist/list/types.d.ts +0 -38
  333. package/dist/list/types.d.ts.map +0 -1
  334. package/dist/list/types.js +0 -2
  335. package/dist/list/types.js.map +0 -1
  336. package/dist/mustache/convertMustacheToComments.d.ts +0 -2
  337. package/dist/mustache/convertMustacheToComments.d.ts.map +0 -1
  338. package/dist/mustache/convertMustacheToComments.js +0 -66
  339. package/dist/mustache/convertMustacheToComments.js.map +0 -1
  340. package/dist/polyfills.d.ts +0 -8
  341. package/dist/polyfills.d.ts.map +0 -1
  342. package/dist/polyfills.js +0 -22
  343. package/dist/polyfills.js.map +0 -1
  344. package/dist/proxy/StateHandler.d.ts +0 -32
  345. package/dist/proxy/StateHandler.d.ts.map +0 -1
  346. package/dist/proxy/StateHandler.js +0 -91
  347. package/dist/proxy/StateHandler.js.map +0 -1
  348. package/dist/proxy/apis/connectedCallback.d.ts +0 -18
  349. package/dist/proxy/apis/connectedCallback.d.ts.map +0 -1
  350. package/dist/proxy/apis/connectedCallback.js +0 -23
  351. package/dist/proxy/apis/connectedCallback.js.map +0 -1
  352. package/dist/proxy/apis/disconnectedCallback.d.ts +0 -17
  353. package/dist/proxy/apis/disconnectedCallback.d.ts.map +0 -1
  354. package/dist/proxy/apis/disconnectedCallback.js +0 -22
  355. package/dist/proxy/apis/disconnectedCallback.js.map +0 -1
  356. package/dist/proxy/apis/getAll.d.ts +0 -11
  357. package/dist/proxy/apis/getAll.d.ts.map +0 -1
  358. package/dist/proxy/apis/getAll.js +0 -87
  359. package/dist/proxy/apis/getAll.js.map +0 -1
  360. package/dist/proxy/apis/postUpdate.d.ts +0 -5
  361. package/dist/proxy/apis/postUpdate.d.ts.map +0 -1
  362. package/dist/proxy/apis/postUpdate.js +0 -30
  363. package/dist/proxy/apis/postUpdate.js.map +0 -1
  364. package/dist/proxy/apis/resolve.d.ts +0 -22
  365. package/dist/proxy/apis/resolve.d.ts.map +0 -1
  366. package/dist/proxy/apis/resolve.js +0 -65
  367. package/dist/proxy/apis/resolve.js.map +0 -1
  368. package/dist/proxy/apis/trackDependency.d.ts +0 -34
  369. package/dist/proxy/apis/trackDependency.d.ts.map +0 -1
  370. package/dist/proxy/apis/trackDependency.js +0 -32
  371. package/dist/proxy/apis/trackDependency.js.map +0 -1
  372. package/dist/proxy/apis/updatedCallback.d.ts +0 -28
  373. package/dist/proxy/apis/updatedCallback.d.ts.map +0 -1
  374. package/dist/proxy/apis/updatedCallback.js +0 -56
  375. package/dist/proxy/apis/updatedCallback.js.map +0 -1
  376. package/dist/proxy/methods/checkDependency.d.ts +0 -4
  377. package/dist/proxy/methods/checkDependency.d.ts.map +0 -1
  378. package/dist/proxy/methods/checkDependency.js +0 -16
  379. package/dist/proxy/methods/checkDependency.js.map +0 -1
  380. package/dist/proxy/methods/getByAddress.d.ts +0 -23
  381. package/dist/proxy/methods/getByAddress.d.ts.map +0 -1
  382. package/dist/proxy/methods/getByAddress.js +0 -81
  383. package/dist/proxy/methods/getByAddress.js.map +0 -1
  384. package/dist/proxy/methods/getContextListIndex.d.ts +0 -21
  385. package/dist/proxy/methods/getContextListIndex.d.ts.map +0 -1
  386. package/dist/proxy/methods/getContextListIndex.js +0 -32
  387. package/dist/proxy/methods/getContextListIndex.js.map +0 -1
  388. package/dist/proxy/methods/getListIndex.d.ts +0 -22
  389. package/dist/proxy/methods/getListIndex.d.ts.map +0 -1
  390. package/dist/proxy/methods/getListIndex.js +0 -55
  391. package/dist/proxy/methods/getListIndex.js.map +0 -1
  392. package/dist/proxy/methods/setByAddress.d.ts +0 -21
  393. package/dist/proxy/methods/setByAddress.d.ts.map +0 -1
  394. package/dist/proxy/methods/setByAddress.js +0 -135
  395. package/dist/proxy/methods/setByAddress.js.map +0 -1
  396. package/dist/proxy/methods/setLoopContext.d.ts +0 -22
  397. package/dist/proxy/methods/setLoopContext.d.ts.map +0 -1
  398. package/dist/proxy/methods/setLoopContext.js +0 -43
  399. package/dist/proxy/methods/setLoopContext.js.map +0 -1
  400. package/dist/proxy/methods/swapInfo.d.ts +0 -5
  401. package/dist/proxy/methods/swapInfo.d.ts.map +0 -1
  402. package/dist/proxy/methods/swapInfo.js +0 -13
  403. package/dist/proxy/methods/swapInfo.js.map +0 -1
  404. package/dist/proxy/methods/types.d.ts +0 -6
  405. package/dist/proxy/methods/types.d.ts.map +0 -1
  406. package/dist/proxy/methods/types.js +0 -2
  407. package/dist/proxy/methods/types.js.map +0 -1
  408. package/dist/proxy/symbols.d.ts +0 -8
  409. package/dist/proxy/symbols.d.ts.map +0 -1
  410. package/dist/proxy/symbols.js +0 -8
  411. package/dist/proxy/symbols.js.map +0 -1
  412. package/dist/proxy/traps/get.d.ts +0 -21
  413. package/dist/proxy/traps/get.d.ts.map +0 -1
  414. package/dist/proxy/traps/get.js +0 -120
  415. package/dist/proxy/traps/get.js.map +0 -1
  416. package/dist/proxy/traps/set.d.ts +0 -18
  417. package/dist/proxy/traps/set.d.ts.map +0 -1
  418. package/dist/proxy/traps/set.js +0 -31
  419. package/dist/proxy/traps/set.js.map +0 -1
  420. package/dist/proxy/types.d.ts +0 -27
  421. package/dist/proxy/types.d.ts.map +0 -1
  422. package/dist/proxy/types.js +0 -2
  423. package/dist/proxy/types.js.map +0 -1
  424. package/dist/raiseError.d.ts +0 -2
  425. package/dist/raiseError.d.ts.map +0 -1
  426. package/dist/raiseError.js +0 -4
  427. package/dist/raiseError.js.map +0 -1
  428. package/dist/registerComponents.d.ts +0 -2
  429. package/dist/registerComponents.d.ts.map +0 -1
  430. package/dist/registerComponents.js +0 -9
  431. package/dist/registerComponents.js.map +0 -1
  432. package/dist/stateElementByName.d.ts +0 -4
  433. package/dist/stateElementByName.d.ts.map +0 -1
  434. package/dist/stateElementByName.js +0 -53
  435. package/dist/stateElementByName.js.map +0 -1
  436. package/dist/stateLoader/loadFromInnerScript.d.ts +0 -3
  437. package/dist/stateLoader/loadFromInnerScript.d.ts.map +0 -1
  438. package/dist/stateLoader/loadFromInnerScript.js +0 -24
  439. package/dist/stateLoader/loadFromInnerScript.js.map +0 -1
  440. package/dist/stateLoader/loadFromJsonFile.d.ts +0 -3
  441. package/dist/stateLoader/loadFromJsonFile.d.ts.map +0 -1
  442. package/dist/stateLoader/loadFromJsonFile.js +0 -16
  443. package/dist/stateLoader/loadFromJsonFile.js.map +0 -1
  444. package/dist/stateLoader/loadFromScriptFile.d.ts +0 -3
  445. package/dist/stateLoader/loadFromScriptFile.d.ts.map +0 -1
  446. package/dist/stateLoader/loadFromScriptFile.js +0 -11
  447. package/dist/stateLoader/loadFromScriptFile.js.map +0 -1
  448. package/dist/stateLoader/loadFromScriptJson.d.ts +0 -3
  449. package/dist/stateLoader/loadFromScriptJson.d.ts.map +0 -1
  450. package/dist/stateLoader/loadFromScriptJson.js +0 -15
  451. package/dist/stateLoader/loadFromScriptJson.js.map +0 -1
  452. package/dist/structural/activateContent.d.ts +0 -6
  453. package/dist/structural/activateContent.d.ts.map +0 -1
  454. package/dist/structural/activateContent.js +0 -29
  455. package/dist/structural/activateContent.js.map +0 -1
  456. package/dist/structural/collectStructuralFragments.d.ts +0 -2
  457. package/dist/structural/collectStructuralFragments.d.ts.map +0 -1
  458. package/dist/structural/collectStructuralFragments.js +0 -160
  459. package/dist/structural/collectStructuralFragments.js.map +0 -1
  460. package/dist/structural/contentsByNode.d.ts +0 -5
  461. package/dist/structural/contentsByNode.d.ts.map +0 -1
  462. package/dist/structural/contentsByNode.js +0 -29
  463. package/dist/structural/contentsByNode.js.map +0 -1
  464. package/dist/structural/createContent.d.ts +0 -4
  465. package/dist/structural/createContent.d.ts.map +0 -1
  466. package/dist/structural/createContent.js +0 -92
  467. package/dist/structural/createContent.js.map +0 -1
  468. package/dist/structural/createNotFilter.d.ts +0 -3
  469. package/dist/structural/createNotFilter.d.ts.map +0 -1
  470. package/dist/structural/createNotFilter.js +0 -17
  471. package/dist/structural/createNotFilter.js.map +0 -1
  472. package/dist/structural/define.d.ts +0 -3
  473. package/dist/structural/define.d.ts.map +0 -1
  474. package/dist/structural/define.js +0 -7
  475. package/dist/structural/define.js.map +0 -1
  476. package/dist/structural/expandShorthandPaths.d.ts +0 -3
  477. package/dist/structural/expandShorthandPaths.d.ts.map +0 -1
  478. package/dist/structural/expandShorthandPaths.js +0 -96
  479. package/dist/structural/expandShorthandPaths.js.map +0 -1
  480. package/dist/structural/fragmentInfoByUUID.d.ts +0 -4
  481. package/dist/structural/fragmentInfoByUUID.d.ts.map +0 -1
  482. package/dist/structural/fragmentInfoByUUID.js +0 -30
  483. package/dist/structural/fragmentInfoByUUID.js.map +0 -1
  484. package/dist/structural/getFragmentNodeInfos.d.ts +0 -3
  485. package/dist/structural/getFragmentNodeInfos.d.ts.map +0 -1
  486. package/dist/structural/getFragmentNodeInfos.js +0 -16
  487. package/dist/structural/getFragmentNodeInfos.js.map +0 -1
  488. package/dist/structural/getNodePath.d.ts +0 -2
  489. package/dist/structural/getNodePath.d.ts.map +0 -1
  490. package/dist/structural/getNodePath.js +0 -12
  491. package/dist/structural/getNodePath.js.map +0 -1
  492. package/dist/structural/optimizeFragment.d.ts +0 -2
  493. package/dist/structural/optimizeFragment.d.ts.map +0 -1
  494. package/dist/structural/optimizeFragment.js +0 -13
  495. package/dist/structural/optimizeFragment.js.map +0 -1
  496. package/dist/structural/resolveNodePath.d.ts +0 -2
  497. package/dist/structural/resolveNodePath.d.ts.map +0 -1
  498. package/dist/structural/resolveNodePath.js +0 -13
  499. package/dist/structural/resolveNodePath.js.map +0 -1
  500. package/dist/structural/types.d.ts +0 -19
  501. package/dist/structural/types.d.ts.map +0 -1
  502. package/dist/structural/types.js +0 -2
  503. package/dist/structural/types.js.map +0 -1
  504. package/dist/types.d.ts +0 -35
  505. package/dist/types.d.ts.map +0 -1
  506. package/dist/types.js +0 -2
  507. package/dist/types.js.map +0 -1
  508. package/dist/updater/types.d.ts +0 -7
  509. package/dist/updater/types.d.ts.map +0 -1
  510. package/dist/updater/types.js +0 -2
  511. package/dist/updater/types.js.map +0 -1
  512. package/dist/updater/updater.d.ts +0 -14
  513. package/dist/updater/updater.d.ts.map +0 -1
  514. package/dist/updater/updater.js +0 -49
  515. package/dist/updater/updater.js.map +0 -1
  516. package/dist/version/types.d.ts +0 -5
  517. package/dist/version/types.d.ts.map +0 -1
  518. package/dist/version/types.js +0 -2
  519. package/dist/version/types.js.map +0 -1
  520. package/dist/version/version.d.ts +0 -3
  521. package/dist/version/version.d.ts.map +0 -1
  522. package/dist/version/version.js +0 -9
  523. package/dist/version/version.js.map +0 -1
  524. package/dist/waitForStateInitialize.d.ts +0 -2
  525. package/dist/waitForStateInitialize.d.ts.map +0 -1
  526. package/dist/waitForStateInitialize.js +0 -12
  527. package/dist/waitForStateInitialize.js.map +0 -1
  528. package/dist/webComponent/MappingRule.d.ts +0 -10
  529. package/dist/webComponent/MappingRule.d.ts.map +0 -1
  530. package/dist/webComponent/MappingRule.js +0 -120
  531. package/dist/webComponent/MappingRule.js.map +0 -1
  532. package/dist/webComponent/bindWebComponent.d.ts +0 -3
  533. package/dist/webComponent/bindWebComponent.d.ts.map +0 -1
  534. package/dist/webComponent/bindWebComponent.js +0 -49
  535. package/dist/webComponent/bindWebComponent.js.map +0 -1
  536. package/dist/webComponent/completeWebComponent.d.ts +0 -4
  537. package/dist/webComponent/completeWebComponent.d.ts.map +0 -1
  538. package/dist/webComponent/completeWebComponent.js +0 -17
  539. package/dist/webComponent/completeWebComponent.js.map +0 -1
  540. package/dist/webComponent/innerState.d.ts +0 -3
  541. package/dist/webComponent/innerState.d.ts.map +0 -1
  542. package/dist/webComponent/innerState.js +0 -120
  543. package/dist/webComponent/innerState.js.map +0 -1
  544. package/dist/webComponent/lastValueByAbsoluteStateAddress.d.ts +0 -4
  545. package/dist/webComponent/lastValueByAbsoluteStateAddress.d.ts.map +0 -1
  546. package/dist/webComponent/lastValueByAbsoluteStateAddress.js +0 -10
  547. package/dist/webComponent/lastValueByAbsoluteStateAddress.js.map +0 -1
  548. package/dist/webComponent/meltFrozenObject.d.ts +0 -2
  549. package/dist/webComponent/meltFrozenObject.d.ts.map +0 -1
  550. package/dist/webComponent/meltFrozenObject.js +0 -17
  551. package/dist/webComponent/meltFrozenObject.js.map +0 -1
  552. package/dist/webComponent/outerState.d.ts +0 -3
  553. package/dist/webComponent/outerState.d.ts.map +0 -1
  554. package/dist/webComponent/outerState.js +0 -41
  555. package/dist/webComponent/outerState.js.map +0 -1
  556. package/dist/webComponent/plainOuterState.d.ts +0 -3
  557. package/dist/webComponent/plainOuterState.d.ts.map +0 -1
  558. package/dist/webComponent/plainOuterState.js +0 -36
  559. package/dist/webComponent/plainOuterState.js.map +0 -1
  560. package/dist/webComponent/stateElementByWebComponent.d.ts +0 -4
  561. package/dist/webComponent/stateElementByWebComponent.d.ts.map +0 -1
  562. package/dist/webComponent/stateElementByWebComponent.js +0 -17
  563. package/dist/webComponent/stateElementByWebComponent.js.map +0 -1
  564. package/dist/webComponent/types.d.ts +0 -3
  565. package/dist/webComponent/types.d.ts.map +0 -1
  566. package/dist/webComponent/types.js +0 -2
  567. package/dist/webComponent/types.js.map +0 -1
package/README.ja.md CHANGED
@@ -1,7 +1,12 @@
1
1
  # @wcstack/state
2
2
 
3
- Web Components のための宣言的リアクティブ状態管理。
4
- `<wcs-state>` カスタム要素と `data-wcs` 属性バインディング — ランタイム依存ゼロ。
3
+ **もしHTMLにリアクティブなデータバインディングがあったら?**
4
+
5
+ ブラウザが状態をネイティブに理解する未来を妄想してみる。データをインラインで宣言し、属性でDOMにバインドすれば、すべてが自動で同期する。仮想DOMもコンパイルも不要。ただのHTMLが、勝手にリアクティブになる。
6
+
7
+ それが `<wcs-state>` と `data-wcs` の探求するもの。CDN一発、依存ゼロ、構文はHTML。
8
+
9
+ CDNスクリプトはカスタム要素の定義を登録するだけ — ロード時にはそれ以外何も起きない。`<wcs-state>` 要素がDOMに接続されたとき、状態ソースを読み取り、兄弟要素の `data-wcs` バインディングを走査し、リアクティビティを構築する。すべての初期化は要素のライフサイクルが駆動する。あなたのコードではなく。
5
10
 
6
11
  ## 特徴
7
12
 
@@ -144,27 +149,33 @@ Web Components のための宣言的リアクティブ状態管理。
144
149
 
145
150
  ## 状態の更新
146
151
 
147
- 状態の変更は**プロパティへの代入**(Proxy `set` トラップ)で検知されます。リアクティブな DOM 更新をトリガーするには、状態プロパティに値を**代入**する必要があります。
152
+ `@wcstack/state` では、すべての状態は**パス**を持ちます `count`、`user.name`、`items` のように。状態をリアクティブに更新するには、**パスに代入**します:
153
+
154
+ ```javascript
155
+ this.count = 10; // パス "count"
156
+ this["user.name"] = "Bob"; // パス "user.name"
157
+ ```
158
+
159
+ ルールはひとつ: **パスに代入すれば、DOMは自動的に更新される。**
148
160
 
149
- ### プリミティブ・オブジェクトプロパティ
161
+ ### なぜ `this.user.name = "Bob"` では動かないのか
150
162
 
151
- 代入は**ドットパス記法**(ブラケット構文)を使用する必要があります。リアクティブ Proxy はトップレベルの `set` トラップのみを捕捉するため、通常のネストされたプロパティアクセスでは変更が検知されません:
163
+ `this.user.name` は、まず `this.user` `user` オブジェクトを読み取り(パスの読み取り)、そのプレーンオブジェクトの `.name` に設定します — これはパスへの代入ではないため、変更は検知されません:
152
164
 
153
165
  ```javascript
154
- // ✅ パス代入 — 変更が検知される
155
- this.count = 10;
166
+ // ✅ パスへの代入 — 変更が検知される
156
167
  this["user.name"] = "Bob";
157
168
 
158
- // ❌ 直接のネストアクセス変更が検知されない
159
- this.user.name = "Bob"; // Proxy の set トラップをバイパスする
169
+ // ❌ パスへの代入ではない変更は検知されない
170
+ this.user.name = "Bob";
160
171
  ```
161
172
 
162
173
  ### 配列
163
174
 
164
- 配列の破壊的メソッド(`push`, `splice`, `sort`, `reverse` 等)はその場で配列を変更するだけで**プロパティ代入を発生させない**ため、リアクティブシステムは変更を検知しません。代わりに、新しい配列を返す**非破壊的メソッド**を使用し、結果を代入してください:
175
+ 同じルールです: パスに新しい配列を代入します。破壊的メソッド(`push`, `splice`, `sort` 等)はパスへの代入なしに配列をその場で変更するため、非破壊的な代替メソッドを使用します:
165
176
 
166
177
  ```javascript
167
- // ✅ 非破壊的 + 代入 — 変更が検知される
178
+ // ✅ 新しい配列をパスに代入 — 変更が検知される
168
179
  this.items = this.items.concat({ id: 4, text: "New" });
169
180
  this.items = this.items.toSpliced(index, 1);
170
181
  this.items = this.items.filter(item => !item.done);
@@ -172,7 +183,7 @@ this.items = this.items.toSorted((a, b) => a.id - b.id);
172
183
  this.items = this.items.toReversed();
173
184
  this.items = this.items.with(index, newValue);
174
185
 
175
- // ❌ 破壊的代入なし、変更は検知されない
186
+ // ❌ その場での変更パスへの代入なし、変更は検知されない
176
187
  this.items.push({ id: 4, text: "New" });
177
188
  this.items.splice(index, 1);
178
189
  this.items.sort((a, b) => a.id - b.id);
@@ -300,6 +311,8 @@ property[#modifier]: path[@state][|filter[|filter(args)...]]
300
311
  </template>
301
312
  ```
302
313
 
314
+ `for:` ディレクティブは**値ベースの差分アルゴリズム**を使用します。配列の各要素の値そのものが識別キーとして機能するため、React の `key` や Vue の `:key` のような明示的なキー属性は不要です。配列が再代入されると、差分アルゴリズムが新旧の要素を値で照合し、変更のない要素の DOM ノードを再利用しつつ、追加・削除・並び替えを効率的に処理します。
315
+
303
316
  #### ドット省略記法
304
317
 
305
318
  `for` ループ内では、`.` で始まるパスがループの配列パスを基準に展開されます:
@@ -543,7 +556,7 @@ export default {
543
556
  };
544
557
  ```
545
558
 
546
- 3階層のネスト、5つの仮想プロパティ — すべてが1つのフラットなオブジェクト内に並んで定義されています。各レベルは任意の深さの値を参照でき、`$getAll` による集約は下位から上位へ自然に流れます。コンポーネントベースのフレームワーク(React、Vue)で同じことを実現するには、各ネストレベルに個別のコンポーネントを作成し、算出値をツリーの上位に渡すための props バケツリレーや状態管理が必要になります。
559
+ 3階層のネスト、5つの仮想プロパティ — すべてが1つのフラットなオブジェクト内に並んで定義されています。各レベルは任意の深さの値を参照でき、`$getAll` による集約は下位から上位へ自然に流れます。コンポーネントベースのフレームワークでは、一般的に各ネストレベルに個別のコンポーネントを作成し、算出値をツリーの上位に渡す方法が採られます。パス getter は、すべての定義を1箇所にまとめるという異なるトレードオフを提供します。
547
560
 
548
561
  ### getter の戻り値のサブプロパティへのアクセス
549
562
 
@@ -827,6 +840,15 @@ export default {
827
840
 
828
841
  `@wcstack/state` は Shadow DOM または Light DOM を使用したカスタム要素との双方向状態バインディングに対応しています。
829
842
 
843
+ 多くのフレームワークでは、コンポーネント間の状態共有に props バケツリレー、Context Provider、外部ストア(Redux, Pinia)といったパターンが用いられます。`@wcstack/state` は異なるアプローチを採ります。親子コンポーネントは**パスの契約**で接続されます。親は `data-wcs` で外部の状態パスを子コンポーネントのプロパティにバインドし、子は自身の状態を通常どおり読み書きするだけです:
844
+
845
+ 1. 子コンポーネントは自身の状態プロキシを通じて親の状態を参照・更新します — props もイベントも親の存在を意識する必要もありません。
846
+ 2. 親の状態が変更されると、Proxy の `set` トラップが影響するパスを参照している子のバインディングへ自動的に通知します。
847
+ 3. 結合点は**パス名のみ**であるため、双方とも疎結合を保ち、独立してテスト可能です。
848
+ 4. コストはパス解決(初回アクセス後はキャッシュにより O(1))と依存グラフを通じた変更伝播のみです。
849
+
850
+ これは、コンポーネントレベルの抽象化ではなくパス解決に基づく、コンポーネント間状態管理への軽量なアプローチです。
851
+
830
852
  ### コンポーネント定義(Shadow DOM)
831
853
 
832
854
  ```javascript
@@ -982,6 +1004,8 @@ customElements.define("my-component", MyComponent);
982
1004
  | `$disconnectedCallback` | 要素が DOM から削除された時 | 不可(同期のみ) |
983
1005
  | `$updatedCallback(paths, indexesListByPath)` | 状態変更が適用された後に呼び出し | 戻り値は未使用(待機されない) |
984
1006
 
1007
+ リアクティブ Proxy は全てのプロパティ代入を変更として検知するため、標準の `async/await` とプロパティへの直接代入だけで非同期処理は完結します。ローディングフラグ、取得データ、エラーメッセージの更新は全てプロパティ代入であり、非同期状態管理のための追加の抽象化を必要としません。
1008
+
985
1009
  - フック内の `this` は読み書き可能な状態プロキシです
986
1010
  - `$connectedCallback` は要素が接続される**たびに**呼ばれます(削除後の再接続を含む)。再確立が必要なセットアップ処理に適しています
987
1011
  - `$disconnectedCallback` は同期的に呼び出されます — タイマーのクリア、イベントリスナーの削除、リソースの解放などのクリーンアップに使用します
package/README.md CHANGED
@@ -1,7 +1,12 @@
1
1
  # @wcstack/state
2
2
 
3
- Declarative reactive state management for Web Components.
4
- `<wcs-state>` custom element and `data-wcs` attribute binding — zero runtime dependencies.
3
+ **What if HTML had reactive data binding?**
4
+
5
+ Imagine a future where the browser natively understands state — you declare data inline, bind it to the DOM with attributes, and everything stays in sync. No virtual DOM, no compilation, no framework. Just HTML that reacts.
6
+
7
+ That's what `<wcs-state>` and `data-wcs` explore. One CDN import, zero dependencies, pure HTML syntax.
8
+
9
+ The CDN script only registers the custom element definition — nothing else happens at load time. When a `<wcs-state>` element connects to the DOM, it reads its state source, scans sibling elements for `data-wcs` bindings, and wires up reactivity. All initialization is driven by the element's lifecycle, not by your code.
5
10
 
6
11
  ## Features
7
12
 
@@ -144,27 +149,33 @@ Default name is `"default"` (no `@` needed).
144
149
 
145
150
  ## Updating State
146
151
 
147
- State changes are detected through **property assignment** (the Proxy `set` trap). To trigger reactive DOM updates, a value must be **assigned** to a state property.
152
+ In `@wcstack/state`, every piece of state has a **path** like `count`, `user.name`, or `items`. To update state reactively, **assign to the path**:
153
+
154
+ ```javascript
155
+ this.count = 10; // path "count"
156
+ this["user.name"] = "Bob"; // path "user.name"
157
+ ```
158
+
159
+ That's the one rule: **assign to the path, and the DOM updates automatically.**
148
160
 
149
- ### Primitive and Object Properties
161
+ ### Why `this.user.name = "Bob"` Doesn't Work
150
162
 
151
- Assignment must use **dot-path notation** (bracket syntax). The reactive proxy intercepts only top-level `set` traps, so standard nested property access bypasses change detection:
163
+ `this.user.name` first reads the `user` object via `this.user` (a path read), then sets `.name` on that plain object this is not a path assignment, so the change is not detected:
152
164
 
153
165
  ```javascript
154
166
  // ✅ Path assignment — change detected
155
- this.count = 10;
156
167
  this["user.name"] = "Bob";
157
168
 
158
- // ❌ Direct nested access — change NOT detected
159
- this.user.name = "Bob"; // bypasses the Proxy set trap
169
+ // ❌ Not a path assignment — change NOT detected
170
+ this.user.name = "Bob";
160
171
  ```
161
172
 
162
173
  ### Arrays
163
174
 
164
- Array mutating methods (`push`, `splice`, `sort`, `reverse`, …) modify the array in place **without triggering a property assignment**, so the reactive system does not detect the change. Instead, use **non-destructive** methods that return a new array and assign the result:
175
+ The same rule applies: assign a new array to the path. Mutating methods (`push`, `splice`, `sort`, ...) modify the array in place without path assignment, so use non-destructive alternatives:
165
176
 
166
177
  ```javascript
167
- // ✅ Non-destructive + assignment — change detected
178
+ // ✅ New array assigned to path — change detected
168
179
  this.items = this.items.concat({ id: 4, text: "New" });
169
180
  this.items = this.items.toSpliced(index, 1);
170
181
  this.items = this.items.filter(item => !item.done);
@@ -172,7 +183,7 @@ this.items = this.items.toSorted((a, b) => a.id - b.id);
172
183
  this.items = this.items.toReversed();
173
184
  this.items = this.items.with(index, newValue);
174
185
 
175
- // ❌ Mutating — no assignment, change NOT detected
186
+ // ❌ In-place mutation — no path assignment, change NOT detected
176
187
  this.items.push({ id: 4, text: "New" });
177
188
  this.items.splice(index, 1);
178
189
  this.items.sort((a, b) => a.id - b.id);
@@ -300,6 +311,8 @@ Structural directives use `<template>` elements:
300
311
  </template>
301
312
  ```
302
313
 
314
+ The `for:` directive uses a **value-based diff algorithm** — each array element's value itself serves as the identity key. There is no need for an explicit `key` attribute (like React's `key` or Vue's `:key`). When the array is reassigned, the differ matches old and new elements by value, reusing existing DOM nodes for unchanged items and efficiently adding, removing, or reordering the rest.
315
+
303
316
  #### Dot Shorthand
304
317
 
305
318
  Inside a `for` loop, paths starting with `.` are expanded relative to the loop's array path:
@@ -543,7 +556,7 @@ export default {
543
556
  };
544
557
  ```
545
558
 
546
- Three levels of nesting, five virtual properties — all defined side by side in a single flat object. Each level can reference values from any depth, and aggregation flows naturally from bottom to top via `$getAll`. In component-based frameworks (React, Vue), achieving the same requires creating a separate component for each nesting level, with props drilling or state management to pass computed values up the tree.
559
+ Three levels of nesting, five virtual properties — all defined side by side in a single flat object. Each level can reference values from any depth, and aggregation flows naturally from bottom to top via `$getAll`. In component-based frameworks, the typical approach is to create a separate component for each nesting level and pass computed values through the tree. Path getters offer a different trade-off by keeping all definitions in one place.
547
560
 
548
561
  ### Accessing Sub-Properties of Getter Results
549
562
 
@@ -827,6 +840,15 @@ Filters can be chained with `|`:
827
840
 
828
841
  `@wcstack/state` supports bidirectional state binding with custom elements using Shadow DOM or Light DOM.
829
842
 
843
+ Many frameworks use patterns like prop drilling, context providers, or external stores (Redux, Pinia) to share state across components. `@wcstack/state` takes a different approach: parent and child components are connected through **path contracts** — the parent binds an outer state path to an inner component property via `data-wcs`, and the child simply reads and writes its own state as usual:
844
+
845
+ 1. The child references and updates the parent's state through its own state proxy — no props, no events, no awareness of the parent.
846
+ 2. When the parent's state changes, the Proxy `set` trap automatically notifies any child bindings that reference the affected path.
847
+ 3. Because the only coupling is the **path name**, both sides remain loosely coupled and independently testable.
848
+ 4. The cost is path resolution (cached at O(1) after first access) plus change propagation through the dependency graph.
849
+
850
+ This provides a lightweight approach to cross-component state management based on path resolution rather than component-level abstractions.
851
+
830
852
  ### Component Definition (Shadow DOM)
831
853
 
832
854
  ```javascript
@@ -982,6 +1004,8 @@ State objects can define `$connectedCallback`, `$disconnectedCallback`, and `$up
982
1004
  | `$disconnectedCallback` | When the element is removed from the DOM | No (sync only) |
983
1005
  | `$updatedCallback(paths, indexesListByPath)` | After state updates are applied | Return value is ignored (not awaited) |
984
1006
 
1007
+ Since the reactive proxy detects every property assignment as a change, standard `async/await` with direct property updates is sufficient for asynchronous operations — loading flags, fetched data, and error messages are all just property assignments, without requiring additional abstractions for async state management.
1008
+
985
1009
  - `this` inside hooks is the state proxy with full read/write access
986
1010
  - `$connectedCallback` is called **every time** the element is connected (including re-insertion after removal), making it suitable for setup that should be re-established
987
1011
  - `$disconnectedCallback` is called synchronously — use it for cleanup such as clearing timers, removing event listeners, or releasing resources
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wcstack/state",
3
- "version": "1.3.14",
3
+ "version": "1.3.16",
4
4
  "description": "Reactive state management with declarative data binding for Web Components. Zero dependencies, buildless.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.esm.js",
@@ -10,14 +10,15 @@
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
12
  "import": "./dist/index.esm.js"
13
- }
13
+ },
14
+ "./auto": "./dist/auto.min.js"
14
15
  },
15
16
  "files": [
16
17
  "dist"
17
18
  ],
18
19
  "scripts": {
19
- "clean": "rimraf dist",
20
- "build": "rimraf dist && tsc && rollup -c",
20
+ "clean": "rimraf dist .tsc-out",
21
+ "build": "rimraf dist .tsc-out && tsc && rollup -c",
21
22
  "test": "vitest run",
22
23
  "test:watch": "vitest",
23
24
  "test:coverage": "vitest run --coverage",
@@ -1,4 +0,0 @@
1
- import { IStateElement } from "../components/types";
2
- import { IAbsolutePathInfo, IPathInfo } from "./types";
3
- export declare function getAbsolutePathInfo(stateElement: IStateElement, pathInfo: IPathInfo): IAbsolutePathInfo;
4
- //# sourceMappingURL=AbsolutePathInfo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbsolutePathInfo.d.ts","sourceRoot":"","sources":["../../src/address/AbsolutePathInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIvD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,GAAG,iBAAiB,CAYvG"}
@@ -1,33 +0,0 @@
1
- const _cache = new WeakMap();
2
- export function getAbsolutePathInfo(stateElement, pathInfo) {
3
- if (_cache.has(stateElement)) {
4
- const pathMap = _cache.get(stateElement);
5
- if (pathMap.has(pathInfo)) {
6
- return pathMap.get(pathInfo);
7
- }
8
- }
9
- else {
10
- _cache.set(stateElement, new WeakMap());
11
- }
12
- const absolutePathInfo = Object.freeze(new AbsolutePathInfo(stateElement, pathInfo));
13
- _cache.get(stateElement).set(pathInfo, absolutePathInfo);
14
- return absolutePathInfo;
15
- }
16
- class AbsolutePathInfo {
17
- pathInfo;
18
- stateName;
19
- stateElement;
20
- parentAbsolutePathInfo;
21
- constructor(stateElement, pathInfo) {
22
- this.pathInfo = pathInfo;
23
- this.stateName = stateElement.name;
24
- this.stateElement = stateElement;
25
- if (pathInfo.parentPathInfo === null) {
26
- this.parentAbsolutePathInfo = null;
27
- }
28
- else {
29
- this.parentAbsolutePathInfo = getAbsolutePathInfo(stateElement, pathInfo.parentPathInfo);
30
- }
31
- }
32
- }
33
- //# sourceMappingURL=AbsolutePathInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbsolutePathInfo.js","sourceRoot":"","sources":["../../src/address/AbsolutePathInfo.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,GAAkE,IAAI,OAAO,EAAE,CAAC;AAE5F,MAAM,UAAU,mBAAmB,CAAC,YAA2B,EAAE,QAAmB;IAClF,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1D,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,gBAAgB;IACX,QAAQ,CAAY;IACpB,SAAS,CAAS;IAClB,YAAY,CAAgB;IAC5B,sBAAsB,CAA2B;IAC1D,YAAY,YAA2B,EAAE,QAAmB;QAC1D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,GAAG,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +0,0 @@
1
- import { IListIndex } from "../list/types";
2
- import { IAbsolutePathInfo, IAbsoluteStateAddress } from "./types";
3
- export declare function createAbsoluteStateAddress(absolutePathInfo: IAbsolutePathInfo, listIndex: IListIndex | null): IAbsoluteStateAddress;
4
- //# sourceMappingURL=AbsoluteStateAddress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbsoluteStateAddress.d.ts","sourceRoot":"","sources":["../../src/address/AbsoluteStateAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAqCnE,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,GAAG,qBAAqB,CAuBnI"}
@@ -1,56 +0,0 @@
1
- import { WILDCARD } from "../define";
2
- const _cache = new WeakMap();
3
- const _cacheNullListIndex = new WeakMap();
4
- class AbsoluteStateAddress {
5
- absolutePathInfo;
6
- listIndex;
7
- _parentAbsoluteAddress;
8
- constructor(absolutePathInfo, listIndex) {
9
- this.absolutePathInfo = absolutePathInfo;
10
- this.listIndex = listIndex;
11
- }
12
- get parentAbsoluteAddress() {
13
- if (typeof this._parentAbsoluteAddress !== 'undefined') {
14
- return this._parentAbsoluteAddress;
15
- }
16
- const parentAbsolutePathInfo = this.absolutePathInfo.parentAbsolutePathInfo;
17
- if (parentAbsolutePathInfo === null) {
18
- return null;
19
- }
20
- const lastSegment = this.absolutePathInfo.pathInfo.segments[this.absolutePathInfo.pathInfo.segments.length - 1];
21
- let parentListIndex = null;
22
- if (lastSegment === WILDCARD) {
23
- parentListIndex = this.listIndex?.parentListIndex ?? null;
24
- }
25
- else {
26
- parentListIndex = this.listIndex;
27
- }
28
- return this._parentAbsoluteAddress = createAbsoluteStateAddress(parentAbsolutePathInfo, parentListIndex);
29
- }
30
- }
31
- export function createAbsoluteStateAddress(absolutePathInfo, listIndex) {
32
- if (listIndex === null) {
33
- let cached = _cacheNullListIndex.get(absolutePathInfo);
34
- if (typeof cached !== "undefined") {
35
- return cached;
36
- }
37
- cached = new AbsoluteStateAddress(absolutePathInfo, null);
38
- _cacheNullListIndex.set(absolutePathInfo, cached);
39
- return cached;
40
- }
41
- else {
42
- let cacheByAbsolutePathInfo = _cache.get(listIndex);
43
- if (typeof cacheByAbsolutePathInfo === "undefined") {
44
- cacheByAbsolutePathInfo = new WeakMap();
45
- _cache.set(listIndex, cacheByAbsolutePathInfo);
46
- }
47
- let cached = cacheByAbsolutePathInfo.get(absolutePathInfo);
48
- if (typeof cached !== "undefined") {
49
- return cached;
50
- }
51
- cached = new AbsoluteStateAddress(absolutePathInfo, listIndex);
52
- cacheByAbsolutePathInfo.set(absolutePathInfo, cached);
53
- return cached;
54
- }
55
- }
56
- //# sourceMappingURL=AbsoluteStateAddress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbsoluteStateAddress.js","sourceRoot":"","sources":["../../src/address/AbsoluteStateAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,MAAM,MAAM,GAA2E,IAAI,OAAO,EAAE,CAAC;AACrG,MAAM,mBAAmB,GAAsD,IAAI,OAAO,EAAE,CAAC;AAE7F,MAAM,oBAAoB;IACf,gBAAgB,CAAoB;IACpC,SAAS,CAAoB;IAC9B,sBAAsB,CAA2C;IAEzE,YAAY,gBAAmC,EAAE,SAA4B;QAC3E,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,qBAAqB;QACvB,IAAI,OAAO,IAAI,CAAC,sBAAsB,KAAK,WAAW,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACrC,CAAC;QACD,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;QAC5E,IAAI,sBAAsB,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChH,IAAI,eAAe,GAAsB,IAAI,CAAC;QAC9C,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,IAAI,IAAI,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,GAAG,0BAA0B,CAC7D,sBAAsB,EACtB,eAAe,CAChB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,gBAAmC,EAAE,SAA4B;IAC1G,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,GAAG,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC1D,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,IAAI,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,OAAO,uBAAuB,KAAK,WAAW,EAAE,CAAC;YACnD,uBAAuB,GAAG,IAAI,OAAO,EAA4C,CAAC;YAClF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,GAAG,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC/D,uBAAuB,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import { IPathInfo } from "./types.js";
2
- export declare function getPathInfo(path: string): IPathInfo;
3
- //# sourceMappingURL=PathInfo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PathInfo.d.ts","sourceRoot":"","sources":["../../src/address/PathInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAQnD"}
@@ -1,104 +0,0 @@
1
- import { WILDCARD } from "../define.js";
2
- const _cache = new Map();
3
- let id = 0;
4
- export function getPathInfo(path) {
5
- let pathInfo = _cache.get(path);
6
- if (typeof pathInfo !== "undefined") {
7
- return pathInfo;
8
- }
9
- pathInfo = Object.freeze(new PathInfo(path));
10
- _cache.set(path, pathInfo);
11
- return pathInfo;
12
- }
13
- class PathInfo {
14
- id = ++id;
15
- path;
16
- segments;
17
- lastSegment;
18
- cumulativePaths;
19
- cumulativePathSet;
20
- cumulativePathInfos;
21
- cumulativePathInfoSet;
22
- parentPath;
23
- wildcardPaths;
24
- wildcardPathSet;
25
- indexByWildcardPath;
26
- wildcardPathInfos;
27
- wildcardPathInfoSet;
28
- wildcardParentPaths;
29
- wildcardParentPathSet;
30
- wildcardParentPathInfos;
31
- wildcardParentPathInfoSet;
32
- wildcardPositions;
33
- lastWildcardPath;
34
- lastWildcardInfo;
35
- wildcardCount;
36
- parentPathInfo;
37
- constructor(path) {
38
- // Helper to get or create StructuredPathInfo instances, avoiding redundant creation for self-reference
39
- const getPattern = (_path) => {
40
- return (path === _path) ? this : getPathInfo(_path);
41
- };
42
- // Split the pattern into individual path segments (e.g., "items.*.name" → ["items", "*", "name"])
43
- const segments = path.split(".");
44
- // Arrays to track all cumulative paths from root to each segment
45
- const cumulativePaths = [];
46
- const cumulativePathInfos = [];
47
- // Arrays to track wildcard-specific information
48
- const wildcardPaths = [];
49
- const indexByWildcardPath = {}; // Maps wildcard path to its index position
50
- const wildcardPathInfos = [];
51
- const wildcardParentPaths = []; // Paths of parent segments for each wildcard
52
- const wildcardParentPathInfos = [];
53
- const wildcardPositions = [];
54
- let currentPatternPath = "", prevPatternPath = "";
55
- let wildcardCount = 0;
56
- // Iterate through each segment to build cumulative paths and identify wildcards
57
- for (let i = 0; i < segments.length; i++) {
58
- currentPatternPath += segments[i];
59
- // If this segment is a wildcard, track it with all wildcard-specific metadata
60
- if (segments[i] === WILDCARD) {
61
- wildcardPaths.push(currentPatternPath);
62
- indexByWildcardPath[currentPatternPath] = wildcardCount; // Store wildcard's ordinal position
63
- wildcardPathInfos.push(getPattern(currentPatternPath));
64
- wildcardParentPaths.push(prevPatternPath); // Parent path is the previous cumulative path
65
- wildcardParentPathInfos.push(getPattern(prevPatternPath));
66
- wildcardPositions.push(i);
67
- wildcardCount++;
68
- }
69
- // Track all cumulative paths for hierarchical navigation (e.g., "items", "items.*", "items.*.name")
70
- cumulativePaths.push(currentPatternPath);
71
- cumulativePathInfos.push(getPattern(currentPatternPath));
72
- // Save current path as previous for next iteration, then add separator
73
- prevPatternPath = currentPatternPath;
74
- currentPatternPath += ".";
75
- }
76
- // Determine the deepest (last) wildcard path and the parent path of the entire pattern
77
- const lastWildcardPath = wildcardPaths.length > 0 ? wildcardPaths[wildcardPaths.length - 1] : null;
78
- const parentPath = cumulativePaths.length > 1 ? cumulativePaths[cumulativePaths.length - 2] : null;
79
- // Assign all analyzed data to readonly properties
80
- this.path = path;
81
- this.segments = segments;
82
- this.lastSegment = segments[segments.length - 1];
83
- this.cumulativePaths = cumulativePaths;
84
- this.cumulativePathSet = new Set(cumulativePaths); // Set for fast lookup
85
- this.cumulativePathInfos = cumulativePathInfos;
86
- this.cumulativePathInfoSet = new Set(cumulativePathInfos);
87
- this.wildcardPaths = wildcardPaths;
88
- this.wildcardPathSet = new Set(wildcardPaths);
89
- this.indexByWildcardPath = indexByWildcardPath;
90
- this.wildcardPathInfos = wildcardPathInfos;
91
- this.wildcardPathInfoSet = new Set(wildcardPathInfos);
92
- this.wildcardParentPaths = wildcardParentPaths;
93
- this.wildcardParentPathSet = new Set(wildcardParentPaths);
94
- this.wildcardParentPathInfos = wildcardParentPathInfos;
95
- this.wildcardParentPathInfoSet = new Set(wildcardParentPathInfos);
96
- this.wildcardPositions = wildcardPositions;
97
- this.lastWildcardPath = lastWildcardPath;
98
- this.lastWildcardInfo = lastWildcardPath ? getPattern(lastWildcardPath) : null;
99
- this.parentPath = parentPath;
100
- this.parentPathInfo = parentPath ? getPattern(parentPath) : null;
101
- this.wildcardCount = wildcardCount;
102
- }
103
- }
104
- //# sourceMappingURL=PathInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PathInfo.js","sourceRoot":"","sources":["../../src/address/PathInfo.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * getResolvedPathInfo.ts
3
- *
4
- * Utility for parsing and generating detailed path information (IResolvedPathInfo)
5
- * from State property names (path strings), including wildcard and index information.
6
- *
7
- * Main responsibilities:
8
- * - Breaks down property names to determine presence and type of wildcards and indexes
9
- * - Automatically determines wildcard type: context/all/partial/none
10
- * - Caches by path for reusability and performance
11
- * - Retrieves structured path information via getStructuredPathInfo
12
- *
13
- * Design points:
14
- * - Caches using Map to handle reserved words like "constructor" and "toString"
15
- * - Flexibly determines wildcards (*) and numeric indexes, storing them in wildcardIndexes
16
- * - context type indicates unresolved indexes, all type indicates all resolved indexes, partial type indicates mixed
17
- * - ResolvedPathInfo class centralizes path parsing and information management
18
- */
19
- import { IResolvedAddress } from './types';
20
- /**
21
- * Retrieves or creates resolved path information for a property path.
22
- *
23
- * This function caches resolved path information for performance.
24
- * On first access, it parses the path and creates a ResolvedPathInfo instance.
25
- * Subsequent accesses return the cached result.
26
- *
27
- * @param name - Property path string (e.g., "items.*.name", "data.0.value")
28
- * @returns Resolved path information containing segments, wildcards, and type classification
29
- */
30
- export declare function getResolvedAddress(name: string): IResolvedAddress;
31
- //# sourceMappingURL=ResolvedAddress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolvedAddress.d.ts","sourceRoot":"","sources":["../../src/address/ResolvedAddress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AAkGzD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAC,MAAM,GAAE,gBAAgB,CAI/D"}
@@ -1,110 +0,0 @@
1
- import { getPathInfo } from './PathInfo';
2
- /**
3
- * Cache for resolved path information.
4
- * Uses Map to safely handle property names including reserved words like "constructor" and "toString".
5
- */
6
- const _cache = new Map();
7
- /**
8
- * Class that parses and stores resolved path information.
9
- *
10
- * Analyzes property path strings to extract:
11
- * - Path segments and their hierarchy
12
- * - Wildcard locations and types
13
- * - Numeric indexes vs unresolved wildcards
14
- * - Wildcard type classification (none/context/all/partial)
15
- */
16
- class ResolvedAddress {
17
- path;
18
- segments;
19
- paths;
20
- wildcardCount;
21
- wildcardType;
22
- wildcardIndexes;
23
- pathInfo;
24
- /**
25
- * Constructs resolved path information from a property path string.
26
- *
27
- * Parses the path to identify wildcards (*) and numeric indexes,
28
- * classifies the wildcard type, and generates structured path information.
29
- *
30
- * @param name - Property path string (e.g., "items.*.name" or "data.0.value")
31
- */
32
- constructor(path) {
33
- // Split path into individual segments
34
- const segments = path.split(".");
35
- const tmpPatternSegments = segments.slice();
36
- const paths = [];
37
- let incompleteCount = 0; // Count of unresolved wildcards (*)
38
- let completeCount = 0; // Count of resolved wildcards (numeric indexes)
39
- let lastPath = "";
40
- let wildcardCount = 0;
41
- let wildcardType = "none";
42
- const wildcardIndexes = [];
43
- // Process each segment to identify wildcards and indexes
44
- for (let i = 0; i < segments.length; i++) {
45
- const segment = segments[i];
46
- if (segment === "*") {
47
- // Unresolved wildcard
48
- tmpPatternSegments[i] = "*";
49
- wildcardIndexes.push(null);
50
- incompleteCount++;
51
- wildcardCount++;
52
- }
53
- else {
54
- const number = Number(segment);
55
- if (!Number.isNaN(number)) {
56
- // Numeric index - treat as resolved wildcard
57
- tmpPatternSegments[i] = "*";
58
- wildcardIndexes.push(number);
59
- completeCount++;
60
- wildcardCount++;
61
- }
62
- }
63
- // Build cumulative path array
64
- lastPath += segment;
65
- paths.push(lastPath);
66
- lastPath += (i < segment.length - 1 ? "." : "");
67
- }
68
- // Generate pattern string with wildcards normalized
69
- const structuredPath = tmpPatternSegments.join(".");
70
- const pathInfo = getPathInfo(structuredPath);
71
- // Classify wildcard type based on resolved vs unresolved counts
72
- if (incompleteCount > 0 || completeCount > 0) {
73
- if (incompleteCount === wildcardCount) {
74
- // All wildcards are unresolved - need context to resolve
75
- wildcardType = "context";
76
- }
77
- else if (completeCount === wildcardCount) {
78
- // All wildcards are resolved with numeric indexes
79
- wildcardType = "all";
80
- }
81
- else {
82
- // Mix of resolved and unresolved wildcards
83
- wildcardType = "partial";
84
- }
85
- }
86
- this.path = path;
87
- this.segments = segments;
88
- this.paths = paths;
89
- this.wildcardCount = wildcardCount;
90
- this.wildcardType = wildcardType;
91
- this.wildcardIndexes = wildcardIndexes;
92
- this.pathInfo = pathInfo;
93
- }
94
- }
95
- /**
96
- * Retrieves or creates resolved path information for a property path.
97
- *
98
- * This function caches resolved path information for performance.
99
- * On first access, it parses the path and creates a ResolvedPathInfo instance.
100
- * Subsequent accesses return the cached result.
101
- *
102
- * @param name - Property path string (e.g., "items.*.name", "data.0.value")
103
- * @returns Resolved path information containing segments, wildcards, and type classification
104
- */
105
- export function getResolvedAddress(name) {
106
- let nameInfo;
107
- // Return cached value or create, cache, and return new instance
108
- return _cache.get(name) ?? (_cache.set(name, nameInfo = new ResolvedAddress(name)), nameInfo);
109
- }
110
- //# sourceMappingURL=ResolvedAddress.js.map