feat(core): Add selection dimensions and route removal functionality
This commit is contained in:
parent
b2a11a5de2
commit
bb30a6e8a8
42
changelog.md
Normal file
42
changelog.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## 2024-10-06 - 1.1.0 - feat(core)
|
||||||
|
Add selection dimensions and route removal functionality
|
||||||
|
|
||||||
|
- Introduced the SelectionDimension class for managing stateful selections across routes.
|
||||||
|
- Enhanced SmartRouter with the ability to create and manage selection dimensions.
|
||||||
|
- Added route removal functionality in SmartRouter using the 'on' method.
|
||||||
|
|
||||||
|
## 2024-05-29 - 1.0.17 - Maintenance
|
||||||
|
Minor updates and maintenance changes to the project's configuration and metadata.
|
||||||
|
|
||||||
|
- Updated project description.
|
||||||
|
- Modified tsconfig settings.
|
||||||
|
- Updated npmextra.json for the githost setting.
|
||||||
|
|
||||||
|
## 2023-09-11 to 2023-04-11 - 1.0.16 - Fixes and Organizational Improvements
|
||||||
|
A series of minor bug fixes and organizational updates.
|
||||||
|
|
||||||
|
- Fixed core component issues.
|
||||||
|
- Switched to a new organizational scheme.
|
||||||
|
|
||||||
|
## 2023-03-18 to 2022-12-31 - 1.0.13 to 1.0.15 - Bug Fixes
|
||||||
|
Regular fixes to address bugs in the core.
|
||||||
|
|
||||||
|
- Recurring fixes in core components across versions.
|
||||||
|
|
||||||
|
## 2022-01-22 to 2021-09-08 - 1.0.11 to 1.0.12 - Stability Enhancements
|
||||||
|
Enhancements aimed at improving stability with core updates.
|
||||||
|
|
||||||
|
- Core stability improvements and updates.
|
||||||
|
|
||||||
|
## 2021-09-08 to 2020-11-30 - 1.0.5 to 1.0.10 - Regular Updates
|
||||||
|
Ongoing updates focused on the core's functionality.
|
||||||
|
|
||||||
|
- Multiple core updates to ensure optimal performance.
|
||||||
|
|
||||||
|
## 2020-11-30 to 2020-06-01 - 1.0.1 to 1.0.4 - Initial Fixes
|
||||||
|
Initial series of fixes and updates following project kickoff.
|
||||||
|
|
||||||
|
- Addressed initial core component issues.
|
||||||
|
|
@ -5,6 +5,12 @@ settings:
|
|||||||
excludeLinksFromLockfile: false
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@push.rocks/lik':
|
||||||
|
specifier: ^6.0.5
|
||||||
|
version: 6.0.5
|
||||||
|
'@push.rocks/smartrx':
|
||||||
|
specifier: ^3.0.6
|
||||||
|
version: 3.0.6
|
||||||
path-to-regexp:
|
path-to-regexp:
|
||||||
specifier: ^6.2.0
|
specifier: ^6.2.0
|
||||||
version: 6.2.1
|
version: 6.2.1
|
||||||
@ -578,7 +584,6 @@ packages:
|
|||||||
'@types/minimatch': 5.1.2
|
'@types/minimatch': 5.1.2
|
||||||
'@types/symbol-tree': 3.2.2
|
'@types/symbol-tree': 3.2.2
|
||||||
symbol-tree: 3.2.4
|
symbol-tree: 3.2.4
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@push.rocks/smartbrowser@2.0.6:
|
/@push.rocks/smartbrowser@2.0.6:
|
||||||
resolution: {integrity: sha512-Ne+KCVhV/DROc1rHRRw59K6h0+LpQAK9fdOUtgDZ7laLPmB/tmnbUh3IuRDNcIY1iVA9pydoobwjnTjVgio9eQ==}
|
resolution: {integrity: sha512-Ne+KCVhV/DROc1rHRRw59K6h0+LpQAK9fdOUtgDZ7laLPmB/tmnbUh3IuRDNcIY1iVA9pydoobwjnTjVgio9eQ==}
|
||||||
@ -629,7 +634,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-mUuI7kj2f7ztjpic96FvRIlf2RsKBa5arw81AHNsndbxO6asRcxuWL8dTVxouEIK8YsBUlj0AsrCkHhMbLQdHw==}
|
resolution: {integrity: sha512-mUuI7kj2f7ztjpic96FvRIlf2RsKBa5arw81AHNsndbxO6asRcxuWL8dTVxouEIK8YsBUlj0AsrCkHhMbLQdHw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@push.rocks/smartpromise': 4.0.3
|
'@push.rocks/smartpromise': 4.0.3
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@push.rocks/smartenv@5.0.5:
|
/@push.rocks/smartenv@5.0.5:
|
||||||
resolution: {integrity: sha512-GmFGcUvi6iXU3uS4dNyxFGLktnroHE5Kjn+5sqojiJh/U+F134Ep5DwI3aeBtsD+BNHrDNa8t74v7uoWd1zR4g==}
|
resolution: {integrity: sha512-GmFGcUvi6iXU3uS4dNyxFGLktnroHE5Kjn+5sqojiJh/U+F134Ep5DwI3aeBtsD+BNHrDNa8t74v7uoWd1zR4g==}
|
||||||
@ -734,7 +738,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-MBzP++1yNIBeox71X6VxpIgZ8m4bXnJpZJ4nWVH6IWpmO38MXTu4X0QF8tQnyT4LFcwvc9iiWaD15cstHa7Mmw==}
|
resolution: {integrity: sha512-MBzP++1yNIBeox71X6VxpIgZ8m4bXnJpZJ4nWVH6IWpmO38MXTu4X0QF8tQnyT4LFcwvc9iiWaD15cstHa7Mmw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
matcher: 5.0.0
|
matcher: 5.0.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@push.rocks/smartmime@1.0.6:
|
/@push.rocks/smartmime@1.0.6:
|
||||||
resolution: {integrity: sha512-PHd+I4UcsnOATNg8wjDsSAmmJ4CwQFrQCNzd0HSJMs4ZpiK3Ya91almd6GLpDPU370U4HFh4FaPF4eEAI6vkJQ==}
|
resolution: {integrity: sha512-PHd+I4UcsnOATNg8wjDsSAmmJ4CwQFrQCNzd0HSJMs4ZpiK3Ya91almd6GLpDPU370U4HFh4FaPF4eEAI6vkJQ==}
|
||||||
@ -797,7 +800,6 @@ packages:
|
|||||||
|
|
||||||
/@push.rocks/smartpromise@4.0.3:
|
/@push.rocks/smartpromise@4.0.3:
|
||||||
resolution: {integrity: sha512-z3lIso4/6KK3c6NFTVGZ7AOBsGURf8ha3qQtX/OxjZFk5dqS//8PLd0XqghVdIaUlRGmJ7Sfds/efZERWn1tAg==}
|
resolution: {integrity: sha512-z3lIso4/6KK3c6NFTVGZ7AOBsGURf8ha3qQtX/OxjZFk5dqS//8PLd0XqghVdIaUlRGmJ7Sfds/efZERWn1tAg==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@push.rocks/smartpuppeteer@2.0.2:
|
/@push.rocks/smartpuppeteer@2.0.2:
|
||||||
resolution: {integrity: sha512-EcYCT0PX++WjfHp7W5UYX3t8x5gSNpJMMUvhA7SHz8b2t76ItslNWxprRcF0CUQyN1fozbf5StZf7dwdGc/dIA==}
|
resolution: {integrity: sha512-EcYCT0PX++WjfHp7W5UYX3t8x5gSNpJMMUvhA7SHz8b2t76ItslNWxprRcF0CUQyN1fozbf5StZf7dwdGc/dIA==}
|
||||||
@ -829,7 +831,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@push.rocks/smartpromise': 4.0.3
|
'@push.rocks/smartpromise': 4.0.3
|
||||||
rxjs: 7.8.1
|
rxjs: 7.8.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@push.rocks/smartshell@3.0.3:
|
/@push.rocks/smartshell@3.0.3:
|
||||||
resolution: {integrity: sha512-S4RXI76ltPetdJ8Gv4HlnlhR/hXDV8QmSU7TdhLEe171ZzfouAyt9XZ4MFDCtjk3VQ4Mw+zz4mSDaACXP/QdlQ==}
|
resolution: {integrity: sha512-S4RXI76ltPetdJ8Gv4HlnlhR/hXDV8QmSU7TdhLEe171ZzfouAyt9XZ4MFDCtjk3VQ4Mw+zz4mSDaACXP/QdlQ==}
|
||||||
@ -924,7 +925,6 @@ packages:
|
|||||||
dayjs: 1.11.9
|
dayjs: 1.11.9
|
||||||
is-nan: 1.3.2
|
is-nan: 1.3.2
|
||||||
pretty-ms: 8.0.0
|
pretty-ms: 8.0.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@push.rocks/smartunique@3.0.6:
|
/@push.rocks/smartunique@3.0.6:
|
||||||
resolution: {integrity: sha512-/fvh5BBHiTvZcCH4km2Oh3f0spfcWKr7e0Dp6lAb3rJq+5KiO7fQmI1UcQ9clADUaaJOn8sPzseiLt+kJ2tajw==}
|
resolution: {integrity: sha512-/fvh5BBHiTvZcCH4km2Oh3f0spfcWKr7e0Dp6lAb3rJq+5KiO7fQmI1UcQ9clADUaaJOn8sPzseiLt+kJ2tajw==}
|
||||||
@ -1585,7 +1585,6 @@ packages:
|
|||||||
|
|
||||||
/@types/minimatch@5.1.2:
|
/@types/minimatch@5.1.2:
|
||||||
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
|
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@types/mocha@5.2.7:
|
/@types/mocha@5.2.7:
|
||||||
resolution: {integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==}
|
resolution: {integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==}
|
||||||
@ -1657,7 +1656,6 @@ packages:
|
|||||||
|
|
||||||
/@types/symbol-tree@3.2.2:
|
/@types/symbol-tree@3.2.2:
|
||||||
resolution: {integrity: sha512-+NcSHyA9K2EDHv3ny4wpbRSA+f+Tj0O7hIj7+w4tVw9yxqMavXwtFwuZEo3vyigTgOhGkrAUl3gj4oxAcyLfRQ==}
|
resolution: {integrity: sha512-+NcSHyA9K2EDHv3ny4wpbRSA+f+Tj0O7hIj7+w4tVw9yxqMavXwtFwuZEo3vyigTgOhGkrAUl3gj4oxAcyLfRQ==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@types/through2@2.0.38:
|
/@types/through2@2.0.38:
|
||||||
resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==}
|
resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==}
|
||||||
@ -2142,7 +2140,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
function-bind: 1.1.1
|
function-bind: 1.1.1
|
||||||
get-intrinsic: 1.2.0
|
get-intrinsic: 1.2.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/callsites@3.1.0:
|
/callsites@3.1.0:
|
||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
@ -2373,7 +2370,6 @@ packages:
|
|||||||
/croner@5.7.0:
|
/croner@5.7.0:
|
||||||
resolution: {integrity: sha512-9pSLe+tDJnmNak2JeMkz6ZmTCXP5p6vCxSd4kvDqrTJkqAP62j2uAEIZjf8cPDZIakStujqVzh5Y5MIWH3yYAw==}
|
resolution: {integrity: sha512-9pSLe+tDJnmNak2JeMkz6ZmTCXP5p6vCxSd4kvDqrTJkqAP62j2uAEIZjf8cPDZIakStujqVzh5Y5MIWH3yYAw==}
|
||||||
engines: {node: '>=6.0'}
|
engines: {node: '>=6.0'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/cross-fetch@3.1.5:
|
/cross-fetch@3.1.5:
|
||||||
resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
|
resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
|
||||||
@ -2408,7 +2404,6 @@ packages:
|
|||||||
|
|
||||||
/dayjs@1.11.9:
|
/dayjs@1.11.9:
|
||||||
resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==}
|
resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/debounce@1.2.1:
|
/debounce@1.2.1:
|
||||||
resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
|
resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
|
||||||
@ -2500,7 +2495,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-property-descriptors: 1.0.0
|
has-property-descriptors: 1.0.0
|
||||||
object-keys: 1.1.1
|
object-keys: 1.1.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/delayed-stream@1.0.0:
|
/delayed-stream@1.0.0:
|
||||||
resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
|
resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
|
||||||
@ -2773,7 +2767,6 @@ packages:
|
|||||||
/escape-string-regexp@5.0.0:
|
/escape-string-regexp@5.0.0:
|
||||||
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/esm@3.2.25:
|
/esm@3.2.25:
|
||||||
resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
|
resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
|
||||||
@ -3034,7 +3027,6 @@ packages:
|
|||||||
|
|
||||||
/function-bind@1.1.1:
|
/function-bind@1.1.1:
|
||||||
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/function.prototype.name@1.1.6:
|
/function.prototype.name@1.1.6:
|
||||||
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
|
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
|
||||||
@ -3065,7 +3057,6 @@ packages:
|
|||||||
function-bind: 1.1.1
|
function-bind: 1.1.1
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
has-symbols: 1.0.3
|
has-symbols: 1.0.3
|
||||||
dev: true
|
|
||||||
|
|
||||||
/get-intrinsic@1.2.1:
|
/get-intrinsic@1.2.1:
|
||||||
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
|
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
|
||||||
@ -3206,7 +3197,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
get-intrinsic: 1.2.0
|
get-intrinsic: 1.2.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/has-proto@1.0.1:
|
/has-proto@1.0.1:
|
||||||
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
||||||
@ -3216,7 +3206,6 @@ packages:
|
|||||||
/has-symbols@1.0.3:
|
/has-symbols@1.0.3:
|
||||||
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
|
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/has-tostringtag@1.0.0:
|
/has-tostringtag@1.0.0:
|
||||||
resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
|
resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
|
||||||
@ -3230,7 +3219,6 @@ packages:
|
|||||||
engines: {node: '>= 0.4.0'}
|
engines: {node: '>= 0.4.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind: 1.1.1
|
function-bind: 1.1.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/he@1.2.0:
|
/he@1.2.0:
|
||||||
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
|
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
|
||||||
@ -3485,7 +3473,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.2
|
call-bind: 1.0.2
|
||||||
define-properties: 1.2.0
|
define-properties: 1.2.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/is-negative-zero@2.0.2:
|
/is-negative-zero@2.0.2:
|
||||||
resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
|
resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
|
||||||
@ -3966,7 +3953,6 @@ packages:
|
|||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
escape-string-regexp: 5.0.0
|
escape-string-regexp: 5.0.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/math-random@1.0.4:
|
/math-random@1.0.4:
|
||||||
resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==}
|
resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==}
|
||||||
@ -4218,7 +4204,6 @@ packages:
|
|||||||
/object-keys@1.1.1:
|
/object-keys@1.1.1:
|
||||||
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/object.assign@4.1.0:
|
/object.assign@4.1.0:
|
||||||
resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==}
|
resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==}
|
||||||
@ -4350,7 +4335,6 @@ packages:
|
|||||||
/parse-ms@3.0.0:
|
/parse-ms@3.0.0:
|
||||||
resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==}
|
resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/parse5@6.0.1:
|
/parse5@6.0.1:
|
||||||
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
|
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
|
||||||
@ -4473,7 +4457,6 @@ packages:
|
|||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
dependencies:
|
dependencies:
|
||||||
parse-ms: 3.0.0
|
parse-ms: 3.0.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/process-nextick-args@2.0.1:
|
/process-nextick-args@2.0.1:
|
||||||
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
|
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
|
||||||
@ -4733,7 +4716,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
|
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.5.0
|
tslib: 2.5.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/safe-array-concat@1.0.1:
|
/safe-array-concat@1.0.1:
|
||||||
resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
|
resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
|
||||||
@ -5131,7 +5113,6 @@ packages:
|
|||||||
|
|
||||||
/symbol-tree@3.2.4:
|
/symbol-tree@3.2.4:
|
||||||
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
|
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/systeminformation@5.21.4:
|
/systeminformation@5.21.4:
|
||||||
resolution: {integrity: sha512-fLW6j47UoAJDlZPEqykkWTKxubxb8IFuow6pMQlqf4irZ2lBgCrCReavMkH2t8VxxjOcg6wBlZ2EPQcluAT6xg==}
|
resolution: {integrity: sha512-fLW6j47UoAJDlZPEqykkWTKxubxb8IFuow6pMQlqf4irZ2lBgCrCReavMkH2t8VxxjOcg6wBlZ2EPQcluAT6xg==}
|
||||||
@ -5254,7 +5235,6 @@ packages:
|
|||||||
|
|
||||||
/tslib@2.5.0:
|
/tslib@2.5.0:
|
||||||
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/tsscmp@1.0.6:
|
/tsscmp@1.0.6:
|
||||||
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
|
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* autocreated commitinfo by @pushrocks/commitinfo
|
* autocreated commitinfo by @push.rocks/commitinfo
|
||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartrouter',
|
name: '@push.rocks/smartrouter',
|
||||||
version: '1.0.17',
|
version: '1.1.0',
|
||||||
description: 'a router for routing on websites'
|
description: 'A JavaScript library providing routing capabilities for web applications.'
|
||||||
}
|
}
|
||||||
|
50
ts/smartrouter.classes.selectiondimension.ts
Normal file
50
ts/smartrouter.classes.selectiondimension.ts
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import * as plugins from './smartrouter.plugins.js';
|
||||||
|
|
||||||
|
export interface ISelectionOption<T = any> {
|
||||||
|
key: string;
|
||||||
|
detail: T;
|
||||||
|
selected?: boolean;
|
||||||
|
action: () => Promise<T>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SelectionDimension<T = any> {
|
||||||
|
/**
|
||||||
|
* the key of the selection dimension
|
||||||
|
*/
|
||||||
|
public dimensionKey: string;
|
||||||
|
/**
|
||||||
|
* the level of the selection dimension
|
||||||
|
* a higher level is execution later than a lower level
|
||||||
|
* during catchup phase
|
||||||
|
*/
|
||||||
|
public dimensionLevel: number;
|
||||||
|
public dimensionPeers: SelectionDimension<T>[] = [];
|
||||||
|
public selectionOptions: ISelectionOption<T>[] = [];
|
||||||
|
|
||||||
|
public selectionOptionSubject = new plugins.smartrx.rxjs.Subject<ISelectionOption<T>[]>();
|
||||||
|
|
||||||
|
public async emitSelectionOptions () {
|
||||||
|
const selectionOptions = this.selectionOptions.map((selectionOptionArg): ISelectionOption => {
|
||||||
|
return {
|
||||||
|
key: selectionOptionArg.key,
|
||||||
|
detail: selectionOptionArg.detail,
|
||||||
|
action: async () => {
|
||||||
|
this.updateSelection(selectionOptionArg);
|
||||||
|
return await selectionOptionArg.action();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.selectionOptionSubject.next(selectionOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async updateSelection (selectionOptionArg: ISelectionOption<T>) {
|
||||||
|
for (const selectionOption of this.selectionOptions) {
|
||||||
|
if (selectionOption.key === selectionOptionArg.key) {
|
||||||
|
selectionOption.selected = true;
|
||||||
|
} else {
|
||||||
|
selectionOption.selected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.emitSelectionOptions();
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import * as plugins from './smartrouter.plugins.js';
|
import * as plugins from './smartrouter.plugins.js';
|
||||||
|
|
||||||
import { QueryParams } from './smartrouter.classes.queryparams.js';
|
import { QueryParams } from './smartrouter.classes.queryparams.js';
|
||||||
|
import { type ISelectionOption, SelectionDimension } from './smartrouter.classes.selectiondimension.js';
|
||||||
|
|
||||||
const routeLog = (message: string) => {
|
const routeLog = (message: string) => {
|
||||||
console.log(`%c[Router]%c ${message}`, 'color: rgb(255, 105, 100);', 'color: inherit');
|
console.log(`%c[Router]%c ${message}`, 'color: rgb(255, 105, 100);', 'color: inherit');
|
||||||
@ -71,10 +72,15 @@ export class SmartRouter {
|
|||||||
* @param {function} handlerArg
|
* @param {function} handlerArg
|
||||||
*/
|
*/
|
||||||
public on(routeArg: string, handlerArg: THandlerFunction) {
|
public on(routeArg: string, handlerArg: THandlerFunction) {
|
||||||
this.routes.push({
|
const routeObject = {
|
||||||
matchFunction: plugins.pathToRegExp.match(routeArg),
|
matchFunction: plugins.pathToRegExp.match(routeArg),
|
||||||
handler: handlerArg,
|
handler: handlerArg,
|
||||||
});
|
};
|
||||||
|
this.routes.push(routeObject);
|
||||||
|
const removeFunction = () => {
|
||||||
|
this.routes.splice(this.routes.indexOf(routeObject), 1);
|
||||||
|
};
|
||||||
|
return removeFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,4 +102,19 @@ export class SmartRouter {
|
|||||||
} as IRouteInfo); // not waiting here
|
} as IRouteInfo); // not waiting here
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public selectionDimensionsMap = new plugins.lik.ObjectMap<SelectionDimension>();
|
||||||
|
public async createSelectionDimension(optionsArg: {
|
||||||
|
routeArg: string,
|
||||||
|
keyArg: string,
|
||||||
|
options: ISelectionOption[],
|
||||||
|
peers?: SelectionDimension[],
|
||||||
|
}) {
|
||||||
|
const selectionDimension = new SelectionDimension();
|
||||||
|
selectionDimension.dimensionKey = optionsArg.keyArg;
|
||||||
|
selectionDimension.dimensionPeers = optionsArg.peers;
|
||||||
|
selectionDimension.selectionOptions = optionsArg.options;
|
||||||
|
await this.selectionDimensionsMap.findOneAndRemove(async dimensionArg => dimensionArg.dimensionKey === optionsArg.keyArg);
|
||||||
|
this.selectionDimensionsMap.addMappedUnique(optionsArg.keyArg, selectionDimension);
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,3 +1,13 @@
|
|||||||
|
// @push.rocks scope
|
||||||
|
import * as lik from '@push.rocks/lik';
|
||||||
|
import * as smartrx from '@push.rocks/smartrx';
|
||||||
|
|
||||||
|
export {
|
||||||
|
lik,
|
||||||
|
smartrx,
|
||||||
|
}
|
||||||
|
|
||||||
|
// third party scope
|
||||||
import * as pathToRegExp from 'path-to-regexp';
|
import * as pathToRegExp from 'path-to-regexp';
|
||||||
|
|
||||||
export { pathToRegExp };
|
export { pathToRegExp };
|
||||||
|
Loading…
Reference in New Issue
Block a user