@supersoniks/concorde 4.7.4 → 4.9.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.
- package/.github/workflows/ci.yml +21 -0
- package/.github-export-ignore +30 -0
- package/.gitlab-ci.yml +13 -0
- package/CONTRIBUTING.md +59 -0
- package/DEV.md +54 -0
- package/LICENSE +21 -0
- package/OPEN_SOURCE_CHECKPOINT.md +133 -0
- package/README.md +30 -16
- package/ai/cursor/rules/concorde.mdc +1 -1
- package/ai/skills/concorde-scope/SKILL.md +2 -2
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +214 -214
- package/concorde-core.es.js +4517 -4133
- package/dist/concorde-core.bundle.js +214 -214
- package/dist/concorde-core.es.js +4517 -4133
- package/dist/docs-mock-api-sw.js +19 -0
- package/dist/docs-mock-api-sw.js.map +2 -2
- package/dist/js/components.js +12 -0
- package/dist/js/components.js.map +1 -0
- package/dist/js/concorde-loaded.js +5 -0
- package/dist/js/concorde-loaded.js.map +1 -0
- package/dist/js/core/_types/endpoint.js +5 -0
- package/dist/js/core/_types/endpoint.js.map +1 -0
- package/dist/js/core/_types/key.js +2 -0
- package/dist/js/core/_types/key.js.map +1 -0
- package/dist/js/core/_types/types.js +3 -0
- package/dist/js/core/_types/types.js.map +1 -0
- package/dist/js/core/components/functional/date/date.js +272 -0
- package/dist/js/core/components/functional/date/date.js.map +1 -0
- package/dist/js/core/components/functional/example/example.js +44 -0
- package/dist/js/core/components/functional/example/example.js.map +1 -0
- package/dist/js/core/components/functional/fetch/fetch.js +79 -0
- package/dist/js/core/components/functional/fetch/fetch.js.map +1 -0
- package/dist/js/core/components/functional/functional.js +17 -0
- package/dist/js/core/components/functional/functional.js.map +1 -0
- package/dist/js/core/components/functional/if/if.js +39 -0
- package/dist/js/core/components/functional/if/if.js.map +1 -0
- package/dist/js/core/components/functional/list/list.js +341 -0
- package/dist/js/core/components/functional/list/list.js.map +1 -0
- package/dist/js/core/components/functional/mix/mix.js +103 -0
- package/dist/js/core/components/functional/mix/mix.js.map +1 -0
- package/dist/js/core/components/functional/queue/queue.js +386 -0
- package/dist/js/core/components/functional/queue/queue.js.map +1 -0
- package/dist/js/core/components/functional/router/redirect.js +54 -0
- package/dist/js/core/components/functional/router/redirect.js.map +1 -0
- package/dist/js/core/components/functional/router/router.js +179 -0
- package/dist/js/core/components/functional/router/router.js.map +1 -0
- package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js +216 -0
- package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js.map +1 -0
- package/dist/js/core/components/functional/sdui/default-library.json +108 -0
- package/dist/js/core/components/functional/sdui/sdui-utils.js +64 -0
- package/dist/js/core/components/functional/sdui/sdui-utils.js.map +1 -0
- package/dist/js/core/components/functional/sdui/sdui.js +266 -0
- package/dist/js/core/components/functional/sdui/sdui.js.map +1 -0
- package/dist/js/core/components/functional/sdui/types.js +2 -0
- package/dist/js/core/components/functional/sdui/types.js.map +1 -0
- package/dist/js/core/components/functional/sonic-scope/sonic-scope.js +22 -0
- package/dist/js/core/components/functional/sonic-scope/sonic-scope.js.map +1 -0
- package/dist/js/core/components/functional/states/states.js +172 -0
- package/dist/js/core/components/functional/states/states.js.map +1 -0
- package/dist/js/core/components/functional/submit/submit.js +284 -0
- package/dist/js/core/components/functional/submit/submit.js.map +1 -0
- package/dist/js/core/components/functional/subscriber/subscriber.js +39 -0
- package/dist/js/core/components/functional/subscriber/subscriber.js.map +1 -0
- package/dist/js/core/components/functional/translation/translation.js +28 -0
- package/dist/js/core/components/functional/translation/translation.js.map +1 -0
- package/dist/js/core/components/functional/value/value.js +28 -0
- package/dist/js/core/components/functional/value/value.js.map +1 -0
- package/dist/js/core/components/ui/_css/scroll.js +25 -0
- package/dist/js/core/components/ui/_css/scroll.js.map +1 -0
- package/dist/js/core/components/ui/_css/shadow.js +22 -0
- package/dist/js/core/components/ui/_css/shadow.js.map +1 -0
- package/dist/js/core/components/ui/_css/size.js +36 -0
- package/dist/js/core/components/ui/_css/size.js.map +1 -0
- package/dist/js/core/components/ui/_css/type.js +92 -0
- package/dist/js/core/components/ui/_css/type.js.map +1 -0
- package/dist/js/core/components/ui/alert/alert.js +213 -0
- package/dist/js/core/components/ui/alert/alert.js.map +1 -0
- package/dist/js/core/components/ui/alert-messages/alert-messages.js +68 -0
- package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -0
- package/dist/js/core/components/ui/badge/badge.js +199 -0
- package/dist/js/core/components/ui/badge/badge.js.map +1 -0
- package/dist/js/core/components/ui/button/button.js +697 -0
- package/dist/js/core/components/ui/button/button.js.map +1 -0
- package/dist/js/core/components/ui/captcha/altchaStyles.js +226 -0
- package/dist/js/core/components/ui/captcha/altchaStyles.js.map +1 -0
- package/dist/js/core/components/ui/captcha/captcha.js +167 -0
- package/dist/js/core/components/ui/captcha/captcha.js.map +1 -0
- package/dist/js/core/components/ui/card/card-footer.js +26 -0
- package/dist/js/core/components/ui/card/card-footer.js.map +1 -0
- package/dist/js/core/components/ui/card/card-header-descripton.js +30 -0
- package/dist/js/core/components/ui/card/card-header-descripton.js.map +1 -0
- package/dist/js/core/components/ui/card/card-header.js +79 -0
- package/dist/js/core/components/ui/card/card-header.js.map +1 -0
- package/dist/js/core/components/ui/card/card-main.js +26 -0
- package/dist/js/core/components/ui/card/card-main.js.map +1 -0
- package/dist/js/core/components/ui/card/card.js +67 -0
- package/dist/js/core/components/ui/card/card.js.map +1 -0
- package/dist/js/core/components/ui/divider/divider.js +200 -0
- package/dist/js/core/components/ui/divider/divider.js.map +1 -0
- package/dist/js/core/components/ui/form/checkbox/checkbox.js +257 -0
- package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -0
- package/dist/js/core/components/ui/form/css/form-control.js +393 -0
- package/dist/js/core/components/ui/form/css/form-control.js.map +1 -0
- package/dist/js/core/components/ui/form/fieldset/fieldset.js +124 -0
- package/dist/js/core/components/ui/form/fieldset/fieldset.js.map +1 -0
- package/dist/js/core/components/ui/form/fieldset/legend-description.js +38 -0
- package/dist/js/core/components/ui/form/fieldset/legend-description.js.map +1 -0
- package/dist/js/core/components/ui/form/fieldset/legend.js +130 -0
- package/dist/js/core/components/ui/form/fieldset/legend.js.map +1 -0
- package/dist/js/core/components/ui/form/form-actions/form-actions.js +47 -0
- package/dist/js/core/components/ui/form/form-actions/form-actions.js.map +1 -0
- package/dist/js/core/components/ui/form/form-layout/form-layout.js +84 -0
- package/dist/js/core/components/ui/form/form-layout/form-layout.js.map +1 -0
- package/dist/js/core/components/ui/form/input/input.js +316 -0
- package/dist/js/core/components/ui/form/input/input.js.map +1 -0
- package/dist/js/core/components/ui/form/input/password-helper.js +134 -0
- package/dist/js/core/components/ui/form/input/password-helper.js.map +1 -0
- package/dist/js/core/components/ui/form/input/same-value-helper.js +85 -0
- package/dist/js/core/components/ui/form/input/same-value-helper.js.map +1 -0
- package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +405 -0
- package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -0
- package/dist/js/core/components/ui/form/radio/radio.js +63 -0
- package/dist/js/core/components/ui/form/radio/radio.js.map +1 -0
- package/dist/js/core/components/ui/form/select/select.js +323 -0
- package/dist/js/core/components/ui/form/select/select.js.map +1 -0
- package/dist/js/core/components/ui/form/switch/switch.js +90 -0
- package/dist/js/core/components/ui/form/switch/switch.js.map +1 -0
- package/dist/js/core/components/ui/form/textarea/textarea.js +162 -0
- package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -0
- package/dist/js/core/components/ui/group/group.js +128 -0
- package/dist/js/core/components/ui/group/group.js.map +1 -0
- package/dist/js/core/components/ui/icon/icon.js +129 -0
- package/dist/js/core/components/ui/icon/icon.js.map +1 -0
- package/dist/js/core/components/ui/icon/icons.js +163 -0
- package/dist/js/core/components/ui/icon/icons.js.map +1 -0
- package/dist/js/core/components/ui/icon/icons.json +1 -0
- package/dist/js/core/components/ui/image/image.js +160 -0
- package/dist/js/core/components/ui/image/image.js.map +1 -0
- package/dist/js/core/components/ui/link/link.js +125 -0
- package/dist/js/core/components/ui/link/link.js.map +1 -0
- package/dist/js/core/components/ui/loader/loader.js +106 -0
- package/dist/js/core/components/ui/loader/loader.js.map +1 -0
- package/dist/js/core/components/ui/loader/styles/fixed.js +56 -0
- package/dist/js/core/components/ui/loader/styles/fixed.js.map +1 -0
- package/dist/js/core/components/ui/loader/styles/inline.js +70 -0
- package/dist/js/core/components/ui/loader/styles/inline.js.map +1 -0
- package/dist/js/core/components/ui/menu/menu-item.js +35 -0
- package/dist/js/core/components/ui/menu/menu-item.js.map +1 -0
- package/dist/js/core/components/ui/menu/menu.js +436 -0
- package/dist/js/core/components/ui/menu/menu.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-actions.js +44 -0
- package/dist/js/core/components/ui/modal/modal-actions.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-close.js +56 -0
- package/dist/js/core/components/ui/modal/modal-close.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-content.js +27 -0
- package/dist/js/core/components/ui/modal/modal-content.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-subtitle.js +34 -0
- package/dist/js/core/components/ui/modal/modal-subtitle.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-title.js +35 -0
- package/dist/js/core/components/ui/modal/modal-title.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-utils.js +32 -0
- package/dist/js/core/components/ui/modal/modal-utils.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal.js +568 -0
- package/dist/js/core/components/ui/modal/modal.js.map +1 -0
- package/dist/js/core/components/ui/pop/pop.js +337 -0
- package/dist/js/core/components/ui/pop/pop.js.map +1 -0
- package/dist/js/core/components/ui/progress/progress.js +164 -0
- package/dist/js/core/components/ui/progress/progress.js.map +1 -0
- package/dist/js/core/components/ui/table/table-caption.js +29 -0
- package/dist/js/core/components/ui/table/table-caption.js.map +1 -0
- package/dist/js/core/components/ui/table/table-tbody.js +41 -0
- package/dist/js/core/components/ui/table/table-tbody.js.map +1 -0
- package/dist/js/core/components/ui/table/table-td.js +69 -0
- package/dist/js/core/components/ui/table/table-td.js.map +1 -0
- package/dist/js/core/components/ui/table/table-tfoot.js +28 -0
- package/dist/js/core/components/ui/table/table-tfoot.js.map +1 -0
- package/dist/js/core/components/ui/table/table-th.js +80 -0
- package/dist/js/core/components/ui/table/table-th.js.map +1 -0
- package/dist/js/core/components/ui/table/table-thead.js +26 -0
- package/dist/js/core/components/ui/table/table-thead.js.map +1 -0
- package/dist/js/core/components/ui/table/table-tr.js +67 -0
- package/dist/js/core/components/ui/table/table-tr.js.map +1 -0
- package/dist/js/core/components/ui/table/table.js +106 -0
- package/dist/js/core/components/ui/table/table.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme-collection/core-variables.js +74 -0
- package/dist/js/core/components/ui/theme/theme-collection/core-variables.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme-collection/dark.js +39 -0
- package/dist/js/core/components/ui/theme/theme-collection/dark.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme-collection/light.js +32 -0
- package/dist/js/core/components/ui/theme/theme-collection/light.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme.js +150 -0
- package/dist/js/core/components/ui/theme/theme.js.map +1 -0
- package/dist/js/core/components/ui/toast/message-subscriber.js +41 -0
- package/dist/js/core/components/ui/toast/message-subscriber.js.map +1 -0
- package/dist/js/core/components/ui/toast/toast-item.js +379 -0
- package/dist/js/core/components/ui/toast/toast-item.js.map +1 -0
- package/dist/js/core/components/ui/toast/toast.js +269 -0
- package/dist/js/core/components/ui/toast/toast.js.map +1 -0
- package/dist/js/core/components/ui/toast/types.js +2 -0
- package/dist/js/core/components/ui/toast/types.js.map +1 -0
- package/dist/js/core/components/ui/tooltip/tooltip.js +219 -0
- package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -0
- package/dist/js/core/components/ui/ui.js +41 -0
- package/dist/js/core/components/ui/ui.js.map +1 -0
- package/dist/js/core/core.js +14 -0
- package/dist/js/core/core.js.map +1 -0
- package/dist/js/core/decorators/Subscriber.js +9 -0
- package/dist/js/core/decorators/Subscriber.js.map +1 -0
- package/dist/js/core/decorators/api.js +559 -0
- package/dist/js/core/decorators/api.js.map +1 -0
- package/dist/js/core/decorators/lifecycle.js +67 -0
- package/dist/js/core/decorators/lifecycle.js.map +1 -0
- package/dist/js/core/decorators/subscriber/ancestorAttribute.js +27 -0
- package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -0
- package/dist/js/core/decorators/subscriber/autoFill.js +26 -0
- package/dist/js/core/decorators/subscriber/autoFill.js.map +1 -0
- package/dist/js/core/decorators/subscriber/autoSubscribe.js +46 -0
- package/dist/js/core/decorators/subscriber/autoSubscribe.js.map +1 -0
- package/dist/js/core/decorators/subscriber/bind.js +150 -0
- package/dist/js/core/decorators/subscriber/bind.js.map +1 -0
- package/dist/js/core/decorators/subscriber/common.js +44 -0
- package/dist/js/core/decorators/subscriber/common.js.map +1 -0
- package/dist/js/core/decorators/subscriber/dynamicPath.js +75 -0
- package/dist/js/core/decorators/subscriber/dynamicPath.js.map +1 -0
- package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js +138 -0
- package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js.map +1 -0
- package/dist/js/core/decorators/subscriber/handle.js +22 -0
- package/dist/js/core/decorators/subscriber/handle.js.map +1 -0
- package/dist/js/core/decorators/subscriber/onAssign.js +199 -0
- package/dist/js/core/decorators/subscriber/onAssign.js.map +1 -0
- package/dist/js/core/decorators/subscriber/publish.js +108 -0
- package/dist/js/core/decorators/subscriber/publish.js.map +1 -0
- package/dist/js/core/decorators/subscriber/publisherPath.js +16 -0
- package/dist/js/core/decorators/subscriber/publisherPath.js.map +1 -0
- package/dist/js/core/decorators/subscriber/subscribe.js +20 -0
- package/dist/js/core/decorators/subscriber/subscribe.js.map +1 -0
- package/dist/js/core/directives/DataProvider.js +127 -0
- package/dist/js/core/directives/DataProvider.js.map +1 -0
- package/dist/js/core/directives/Wording.js +221 -0
- package/dist/js/core/directives/Wording.js.map +1 -0
- package/dist/js/core/mixins/Fetcher.js +325 -0
- package/dist/js/core/mixins/Fetcher.js.map +1 -0
- package/dist/js/core/mixins/FormCheckable.js +313 -0
- package/dist/js/core/mixins/FormCheckable.js.map +1 -0
- package/dist/js/core/mixins/FormElement.js +304 -0
- package/dist/js/core/mixins/FormElement.js.map +1 -0
- package/dist/js/core/mixins/FormInput.js +82 -0
- package/dist/js/core/mixins/FormInput.js.map +1 -0
- package/dist/js/core/mixins/Subscriber.js +354 -0
- package/dist/js/core/mixins/Subscriber.js.map +1 -0
- package/dist/js/core/mixins/TemplatesContainer.js +70 -0
- package/dist/js/core/mixins/TemplatesContainer.js.map +1 -0
- package/dist/js/core/mixins/mixins.js +7 -0
- package/dist/js/core/mixins/mixins.js.map +1 -0
- package/dist/js/core/utils/AncestorAttributeObserver.js +140 -0
- package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -0
- package/dist/js/core/utils/Arrays.js +141 -0
- package/dist/js/core/utils/Arrays.js.map +1 -0
- package/dist/js/core/utils/DataBindObserver.js +265 -0
- package/dist/js/core/utils/DataBindObserver.js.map +1 -0
- package/dist/js/core/utils/Electron.js +14 -0
- package/dist/js/core/utils/Electron.js.map +1 -0
- package/dist/js/core/utils/Format.js +43 -0
- package/dist/js/core/utils/Format.js.map +1 -0
- package/dist/js/core/utils/HTML.js +248 -0
- package/dist/js/core/utils/HTML.js.map +1 -0
- package/dist/js/core/utils/LocationHandler.js +143 -0
- package/dist/js/core/utils/LocationHandler.js.map +1 -0
- package/dist/js/core/utils/Objects.js +111 -0
- package/dist/js/core/utils/Objects.js.map +1 -0
- package/dist/js/core/utils/PublisherProxy.js +946 -0
- package/dist/js/core/utils/PublisherProxy.js.map +1 -0
- package/dist/js/core/utils/Utils.js +19 -0
- package/dist/js/core/utils/Utils.js.map +1 -0
- package/dist/js/core/utils/aesCrypto.js +98 -0
- package/dist/js/core/utils/aesCrypto.js.map +1 -0
- package/dist/js/core/utils/api.js +574 -0
- package/dist/js/core/utils/api.js.map +1 -0
- package/dist/js/core/utils/dataProviderKey.js +64 -0
- package/dist/js/core/utils/dataProviderKey.js.map +1 -0
- package/dist/js/core/utils/endpoint.js +74 -0
- package/dist/js/core/utils/endpoint.js.map +1 -0
- package/dist/js/core/utils/route.js +149 -0
- package/dist/js/core/utils/route.js.map +1 -0
- package/dist/js/core/utils/url-pattern.js +3 -0
- package/dist/js/core/utils/url-pattern.js.map +1 -0
- package/dist/js/dataprovider.js +2 -0
- package/dist/js/dataprovider.js.map +1 -0
- package/dist/js/decorators.js +39 -0
- package/dist/js/decorators.js.map +1 -0
- package/dist/js/directives.js +30 -0
- package/dist/js/directives.js.map +1 -0
- package/dist/js/index.js +8 -0
- package/dist/js/index.js.map +1 -0
- package/dist/js/mixins.js +23 -0
- package/dist/js/mixins.js.map +1 -0
- package/dist/js/test-utils/TestUtils.js +10 -0
- package/dist/js/test-utils/TestUtils.js.map +1 -0
- package/dist/js/utils.js +41 -0
- package/dist/js/utils.js.map +1 -0
- package/dist/types/components.d.ts +5 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/concorde-loaded.d.ts +2 -0
- package/dist/types/concorde-loaded.d.ts.map +1 -0
- package/dist/types/core/_types/endpoint.d.ts +5 -0
- package/dist/types/core/_types/endpoint.d.ts.map +1 -0
- package/dist/types/core/_types/key.d.ts +2 -0
- package/dist/types/core/_types/key.d.ts.map +1 -0
- package/dist/types/core/_types/types.d.ts +28 -0
- package/dist/types/core/_types/types.d.ts.map +1 -0
- package/dist/types/core/components/functional/date/date.d.ts +52 -0
- package/dist/types/core/components/functional/date/date.d.ts.map +1 -0
- package/dist/types/core/components/functional/example/example.d.ts +15 -0
- package/dist/types/core/components/functional/example/example.d.ts.map +1 -0
- package/dist/types/core/components/functional/fetch/fetch.d.ts +102 -0
- package/dist/types/core/components/functional/fetch/fetch.d.ts.map +1 -0
- package/dist/types/core/components/functional/functional.d.ts +17 -0
- package/dist/types/core/components/functional/functional.d.ts.map +1 -0
- package/dist/types/core/components/functional/if/if.d.ts +13 -0
- package/dist/types/core/components/functional/if/if.d.ts.map +1 -0
- package/dist/types/core/components/functional/list/list.d.ts +149 -0
- package/dist/types/core/components/functional/list/list.d.ts.map +1 -0
- package/dist/types/core/components/functional/mix/mix.d.ts +23 -0
- package/dist/types/core/components/functional/mix/mix.d.ts.map +1 -0
- package/dist/types/core/components/functional/queue/queue.d.ts +79 -0
- package/dist/types/core/components/functional/queue/queue.d.ts.map +1 -0
- package/dist/types/core/components/functional/router/redirect.d.ts +19 -0
- package/dist/types/core/components/functional/router/redirect.d.ts.map +1 -0
- package/dist/types/core/components/functional/router/router.d.ts +46 -0
- package/dist/types/core/components/functional/router/router.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +59 -0
- package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/sdui-utils.d.ts +6 -0
- package/dist/types/core/components/functional/sdui/sdui-utils.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/sdui.d.ts +145 -0
- package/dist/types/core/components/functional/sdui/sdui.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/types.d.ts +38 -0
- package/dist/types/core/components/functional/sdui/types.d.ts.map +1 -0
- package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts +6 -0
- package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts.map +1 -0
- package/dist/types/core/components/functional/states/states.d.ts +42 -0
- package/dist/types/core/components/functional/states/states.d.ts.map +1 -0
- package/dist/types/core/components/functional/submit/submit.d.ts +37 -0
- package/dist/types/core/components/functional/submit/submit.d.ts.map +1 -0
- package/dist/types/core/components/functional/subscriber/subscriber.d.ts +13 -0
- package/dist/types/core/components/functional/subscriber/subscriber.d.ts.map +1 -0
- package/dist/types/core/components/functional/translation/translation.d.ts +7 -0
- package/dist/types/core/components/functional/translation/translation.d.ts.map +1 -0
- package/dist/types/core/components/functional/value/value.d.ts +8 -0
- package/dist/types/core/components/functional/value/value.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/scroll.d.ts +2 -0
- package/dist/types/core/components/ui/_css/scroll.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/shadow.d.ts +3 -0
- package/dist/types/core/components/ui/_css/shadow.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/size.d.ts +3 -0
- package/dist/types/core/components/ui/_css/size.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/type.d.ts +3 -0
- package/dist/types/core/components/ui/_css/type.d.ts.map +1 -0
- package/dist/types/core/components/ui/alert/alert.d.ts +37 -0
- package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -0
- package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts +15 -0
- package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -0
- package/dist/types/core/components/ui/badge/badge.d.ts +27 -0
- package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -0
- package/dist/types/core/components/ui/button/button.d.ts +180 -0
- package/dist/types/core/components/ui/button/button.d.ts.map +1 -0
- package/dist/types/core/components/ui/captcha/altchaStyles.d.ts +2 -0
- package/dist/types/core/components/ui/captcha/altchaStyles.d.ts.map +1 -0
- package/dist/types/core/components/ui/captcha/captcha.d.ts +30 -0
- package/dist/types/core/components/ui/captcha/captcha.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-footer.d.ts +6 -0
- package/dist/types/core/components/ui/card/card-footer.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-header-descripton.d.ts +6 -0
- package/dist/types/core/components/ui/card/card-header-descripton.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-header.d.ts +9 -0
- package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-main.d.ts +6 -0
- package/dist/types/core/components/ui/card/card-main.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card.d.ts +13 -0
- package/dist/types/core/components/ui/card/card.d.ts.map +1 -0
- package/dist/types/core/components/ui/divider/divider.d.ts +16 -0
- package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +176 -0
- package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/css/form-control.d.ts +5 -0
- package/dist/types/core/components/ui/form/css/form-control.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts +24 -0
- package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts +6 -0
- package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/fieldset/legend.d.ts +17 -0
- package/dist/types/core/components/ui/form/fieldset/legend.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts +8 -0
- package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts +13 -0
- package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input/input.d.ts +123 -0
- package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input/password-helper.d.ts +26 -0
- package/dist/types/core/components/ui/form/input/password-helper.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input/same-value-helper.d.ts +17 -0
- package/dist/types/core/components/ui/form/input/same-value-helper.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +155 -0
- package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/radio/radio.d.ts +15 -0
- package/dist/types/core/components/ui/form/radio/radio.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/select/select.d.ts +59 -0
- package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/switch/switch.d.ts +6 -0
- package/dist/types/core/components/ui/form/switch/switch.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/textarea/textarea.d.ts +94 -0
- package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -0
- package/dist/types/core/components/ui/group/group.d.ts +17 -0
- package/dist/types/core/components/ui/group/group.d.ts.map +1 -0
- package/dist/types/core/components/ui/icon/icon.d.ts +28 -0
- package/dist/types/core/components/ui/icon/icon.d.ts.map +1 -0
- package/dist/types/core/components/ui/icon/icons.d.ts +11 -0
- package/dist/types/core/components/ui/icon/icons.d.ts.map +1 -0
- package/dist/types/core/components/ui/image/image.d.ts +16 -0
- package/dist/types/core/components/ui/image/image.d.ts.map +1 -0
- package/dist/types/core/components/ui/link/link.d.ts +30 -0
- package/dist/types/core/components/ui/link/link.d.ts.map +1 -0
- package/dist/types/core/components/ui/loader/loader.d.ts +24 -0
- package/dist/types/core/components/ui/loader/loader.d.ts.map +1 -0
- package/dist/types/core/components/ui/loader/styles/fixed.d.ts +2 -0
- package/dist/types/core/components/ui/loader/styles/fixed.d.ts.map +1 -0
- package/dist/types/core/components/ui/loader/styles/inline.d.ts +2 -0
- package/dist/types/core/components/ui/loader/styles/inline.d.ts.map +1 -0
- package/dist/types/core/components/ui/menu/menu-item.d.ts +6 -0
- package/dist/types/core/components/ui/menu/menu-item.d.ts.map +1 -0
- package/dist/types/core/components/ui/menu/menu.d.ts +52 -0
- package/dist/types/core/components/ui/menu/menu.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-actions.d.ts +9 -0
- package/dist/types/core/components/ui/modal/modal-actions.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-close.d.ts +11 -0
- package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-content.d.ts +6 -0
- package/dist/types/core/components/ui/modal/modal-content.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-subtitle.d.ts +6 -0
- package/dist/types/core/components/ui/modal/modal-subtitle.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-title.d.ts +6 -0
- package/dist/types/core/components/ui/modal/modal-title.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-utils.d.ts +4 -0
- package/dist/types/core/components/ui/modal/modal-utils.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal.d.ts +79 -0
- package/dist/types/core/components/ui/modal/modal.d.ts.map +1 -0
- package/dist/types/core/components/ui/pop/pop.d.ts +42 -0
- package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -0
- package/dist/types/core/components/ui/progress/progress.d.ts +12 -0
- package/dist/types/core/components/ui/progress/progress.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-caption.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-caption.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-tbody.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-tbody.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-td.d.ts +13 -0
- package/dist/types/core/components/ui/table/table-td.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-tfoot.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-tfoot.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-th.d.ts +12 -0
- package/dist/types/core/components/ui/table/table-th.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-thead.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-thead.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-tr.d.ts +14 -0
- package/dist/types/core/components/ui/table/table-tr.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table.d.ts +18 -0
- package/dist/types/core/components/ui/table/table.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts +2 -0
- package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts +2 -0
- package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme-collection/light.d.ts +2 -0
- package/dist/types/core/components/ui/theme/theme-collection/light.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme.d.ts +20 -0
- package/dist/types/core/components/ui/theme/theme.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/message-subscriber.d.ts +19 -0
- package/dist/types/core/components/ui/toast/message-subscriber.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/toast-item.d.ts +41 -0
- package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/toast.d.ts +28 -0
- package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/types.d.ts +12 -0
- package/dist/types/core/components/ui/toast/types.d.ts.map +1 -0
- package/dist/types/core/components/ui/tooltip/tooltip.d.ts +21 -0
- package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -0
- package/dist/types/core/components/ui/ui.d.ts +35 -0
- package/dist/types/core/components/ui/ui.d.ts.map +1 -0
- package/dist/types/core/core.d.ts +5 -0
- package/dist/types/core/core.d.ts.map +1 -0
- package/dist/types/core/decorators/Subscriber.d.ts +11 -0
- package/dist/types/core/decorators/Subscriber.d.ts.map +1 -0
- package/dist/types/core/decorators/api.d.ts +106 -0
- package/dist/types/core/decorators/api.d.ts.map +1 -0
- package/dist/types/core/decorators/lifecycle.d.ts +19 -0
- package/dist/types/core/decorators/lifecycle.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +11 -0
- package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/autoFill.d.ts +2 -0
- package/dist/types/core/decorators/subscriber/autoFill.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts +2 -0
- package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/bind.d.ts +28 -0
- package/dist/types/core/decorators/subscriber/bind.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/common.d.ts +14 -0
- package/dist/types/core/decorators/subscriber/common.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/dynamicPath.d.ts +23 -0
- package/dist/types/core/decorators/subscriber/dynamicPath.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts +42 -0
- package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/handle.d.ts +74 -0
- package/dist/types/core/decorators/subscriber/handle.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/onAssign.d.ts +53 -0
- package/dist/types/core/decorators/subscriber/onAssign.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/publish.d.ts +23 -0
- package/dist/types/core/decorators/subscriber/publish.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/publisherPath.d.ts +3 -0
- package/dist/types/core/decorators/subscriber/publisherPath.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/subscribe.d.ts +20 -0
- package/dist/types/core/decorators/subscriber/subscribe.d.ts.map +1 -0
- package/dist/types/core/directives/DataProvider.d.ts +45 -0
- package/dist/types/core/directives/DataProvider.d.ts.map +1 -0
- package/dist/types/core/directives/Wording.d.ts +44 -0
- package/dist/types/core/directives/Wording.d.ts.map +1 -0
- package/dist/types/core/mixins/Fetcher.d.ts +108 -0
- package/dist/types/core/mixins/Fetcher.d.ts.map +1 -0
- package/dist/types/core/mixins/FormCheckable.d.ts +95 -0
- package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -0
- package/dist/types/core/mixins/FormElement.d.ts +37 -0
- package/dist/types/core/mixins/FormElement.d.ts.map +1 -0
- package/dist/types/core/mixins/FormInput.d.ts +79 -0
- package/dist/types/core/mixins/FormInput.d.ts.map +1 -0
- package/dist/types/core/mixins/Subscriber.d.ts +38 -0
- package/dist/types/core/mixins/Subscriber.d.ts.map +1 -0
- package/dist/types/core/mixins/TemplatesContainer.d.ts +14 -0
- package/dist/types/core/mixins/TemplatesContainer.d.ts.map +1 -0
- package/dist/types/core/mixins/mixins.d.ts +7 -0
- package/dist/types/core/mixins/mixins.d.ts.map +1 -0
- package/dist/types/core/utils/AncestorAttributeObserver.d.ts +38 -0
- package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -0
- package/dist/types/core/utils/Arrays.d.ts +98 -0
- package/dist/types/core/utils/Arrays.d.ts.map +1 -0
- package/dist/types/core/utils/DataBindObserver.d.ts +84 -0
- package/dist/types/core/utils/DataBindObserver.d.ts.map +1 -0
- package/dist/types/core/utils/Electron.d.ts +8 -0
- package/dist/types/core/utils/Electron.d.ts.map +1 -0
- package/dist/types/core/utils/Format.d.ts +13 -0
- package/dist/types/core/utils/Format.d.ts.map +1 -0
- package/dist/types/core/utils/HTML.d.ts +64 -0
- package/dist/types/core/utils/HTML.d.ts.map +1 -0
- package/dist/types/core/utils/LocationHandler.d.ts +48 -0
- package/dist/types/core/utils/LocationHandler.d.ts.map +1 -0
- package/dist/types/core/utils/Objects.d.ts +31 -0
- package/dist/types/core/utils/Objects.d.ts.map +1 -0
- package/dist/types/core/utils/PublisherProxy.d.ts +230 -0
- package/dist/types/core/utils/PublisherProxy.d.ts.map +1 -0
- package/dist/types/core/utils/Utils.d.ts +6 -0
- package/dist/types/core/utils/Utils.d.ts.map +1 -0
- package/dist/types/core/utils/aesCrypto.d.ts +53 -0
- package/dist/types/core/utils/aesCrypto.d.ts.map +1 -0
- package/dist/types/core/utils/api.d.ts +173 -0
- package/dist/types/core/utils/api.d.ts.map +1 -0
- package/dist/types/core/utils/dataProviderKey.d.ts +56 -0
- package/dist/types/core/utils/dataProviderKey.d.ts.map +1 -0
- package/dist/types/core/utils/endpoint.d.ts +37 -0
- package/dist/types/core/utils/endpoint.d.ts.map +1 -0
- package/dist/types/core/utils/route.d.ts +41 -0
- package/dist/types/core/utils/route.d.ts.map +1 -0
- package/dist/types/core/utils/url-pattern.d.ts +3 -0
- package/dist/types/core/utils/url-pattern.d.ts.map +1 -0
- package/dist/types/dataprovider.d.ts +2 -0
- package/dist/types/dataprovider.d.ts.map +1 -0
- package/dist/types/decorators.d.ts +28 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/directives.d.ts +21 -0
- package/dist/types/directives.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/mixins.d.ts +204 -0
- package/dist/types/mixins.d.ts.map +1 -0
- package/dist/types/test-utils/TestUtils.d.ts +4 -0
- package/dist/types/test-utils/TestUtils.d.ts.map +1 -0
- package/dist/types/utils.d.ts +17 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/docs/assets/index-BEgZEIbv.js +11196 -0
- package/docs/docs-mock-api-sw.js +19 -0
- package/docs/docs-mock-api-sw.js.map +2 -2
- package/docs/index.html +1 -1
- package/docs/src/docs/_core-concept/dataFlow.md +9 -3
- package/docs/src/docs/_decorators/bind.md +2 -2
- package/docs/src/docs/_decorators/get.md +13 -4
- package/docs/src/docs/_decorators/handle.md +5 -1
- package/docs/src/docs/_decorators/on-assign.md +2 -0
- package/docs/src/docs/_decorators/patch.md +45 -0
- package/docs/src/docs/_decorators/post.md +93 -0
- package/docs/src/docs/_decorators/publish.md +1 -1
- package/docs/src/docs/_decorators/put.md +43 -0
- package/docs/src/docs/_decorators/subscribe.md +4 -1
- package/docs/src/docs/_directives/sub.md +1 -1
- package/docs/src/docs/_getting-started/my-first-component.md +1 -1
- package/docs/src/docs/_misc/api-configuration.md +3 -1
- package/docs/src/docs/_misc/dataProviderKey.md +2 -2
- package/docs/src/docs/_misc/dynamic-path.md +71 -0
- package/docs/src/docs/_misc/endpoint.md +5 -3
- package/docs/src/docs/search/docs-search.json +540 -15
- package/docs/src/tsconfig.json +377 -353
- package/gitlab/job_github_mirror.sh +39 -0
- package/index.html +0 -1
- package/package.json +1084 -356
- package/public/docs-mock-api-sw.js +19 -0
- package/public/docs-mock-api-sw.js.map +2 -2
- package/scripts/github-export.mjs +150 -0
- package/scripts/post-build.mjs +43 -0
- package/scripts/pre-build.mjs +32 -4
- package/scripts/pre-publish.mjs +2 -0
- package/src/core/components/functional/example/example.ts +3 -3
- package/src/core/components/functional/queue/queue.ts +2 -2
- package/src/core/components/ui/icon/icon.ts +17 -2
- package/src/core/components/ui/menu/menu.ts +12 -3
- package/src/core/components/ui/modal/modal.ts +1 -1
- package/src/core/decorators/Subscriber.ts +1 -0
- package/src/core/decorators/api.post.spec.ts +293 -0
- package/src/core/decorators/api.spec.ts +6 -6
- package/src/core/decorators/api.ts +641 -12
- package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +197 -0
- package/src/core/decorators/subscriber/ancestorAttribute.ts +40 -7
- package/src/core/decorators/subscriber/autoSubscribe.ts +7 -3
- package/src/core/decorators/subscriber/bind.ts +13 -5
- package/src/core/decorators/subscriber/dynamicPath.spec.ts +53 -0
- package/src/core/decorators/subscriber/dynamicPath.ts +23 -1
- package/src/core/decorators/subscriber/handle.ts +3 -1
- package/src/core/decorators/subscriber/onAssign.ts +10 -2
- package/src/core/decorators/subscriber/publish.ts +12 -2
- package/src/core/mixins/Fetcher.ts +12 -6
- package/src/core/utils/AncestorAttributeObserver.ts +199 -0
- package/src/core/utils/HTML.ts +3 -11
- package/src/core/utils/PublisherProxy.ts +123 -48
- package/src/core/utils/api.ts +82 -13
- package/src/core/utils/dpOptions.spec.ts +56 -0
- package/src/core/utils/endpoint.ts +3 -3
- package/src/css.d.ts +19 -0
- package/src/decorators.ts +17 -1
- package/src/directives.ts +3 -2
- package/src/docs/_core-concept/dataFlow.md +9 -3
- package/src/docs/_decorators/ancestor-attribute.md +56 -8
- package/src/docs/_decorators/bind.md +2 -2
- package/src/docs/_decorators/get.md +13 -4
- package/src/docs/_decorators/handle.md +5 -1
- package/src/docs/_decorators/on-assign.md +2 -0
- package/src/docs/_decorators/patch.md +45 -0
- package/src/docs/_decorators/post.md +93 -0
- package/src/docs/_decorators/publish.md +1 -1
- package/src/docs/_decorators/put.md +43 -0
- package/src/docs/_decorators/subscribe.md +4 -1
- package/src/docs/_directives/sub.md +1 -1
- package/src/docs/_getting-started/my-first-component.md +1 -1
- package/src/docs/_misc/api-configuration.md +3 -1
- package/src/docs/_misc/dataProviderKey.md +2 -2
- package/src/docs/_misc/dynamic-path.md +71 -0
- package/src/docs/_misc/endpoint.md +5 -3
- package/src/docs/components/docs-demo-sources.ts +115 -4
- package/src/docs/components/docs-lit-demo-raw.ts +2 -26
- package/src/docs/components/docs-lit-demo.ts +9 -42
- package/src/docs/components/docs-source-excerpt.ts +53 -0
- package/src/docs/components/docs-source-link.ts +24 -8
- package/src/docs/components/docs-source-raw.ts +34 -0
- package/src/docs/example/decorators-demo-geo.ts +2 -2
- package/src/docs/example/decorators-demo-post.ts +249 -0
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +5 -5
- package/src/docs/example/decorators-demo.ts +165 -8
- package/src/docs/example/docs-api-config-demos.ts +5 -5
- package/src/docs/mock-api/router.ts +20 -0
- package/src/docs/navigation/navigation.ts +16 -0
- package/src/docs/search/docs-search.json +602 -17
- package/src/tsconfig.declarations.json +22 -0
- package/src/tsconfig.emit.json +23 -0
- package/src/tsconfig.json +3 -261
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +1 -1
- package/docs/assets/index-CwtPzTFq.js +0 -7508
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { DataProviderKey } from "./dataProviderKey";
|
|
3
|
+
import { dp, get, mirrorDp } from "./PublisherProxy";
|
|
4
|
+
|
|
5
|
+
describe("dp() options", () => {
|
|
6
|
+
const storageKey = new DataProviderKey<{ label: string }>(
|
|
7
|
+
"dpOptionsSpecStorage",
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
it("active le localStorage via le 2e argument options", () => {
|
|
11
|
+
const publisher = dp(storageKey, { localStorageMode: "enabled" });
|
|
12
|
+
expect((publisher as any)._is_savable_).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("reste désactivé sans option", () => {
|
|
16
|
+
const plainKey = new DataProviderKey<{ label: string }>(
|
|
17
|
+
"dpOptionsSpecPlain",
|
|
18
|
+
);
|
|
19
|
+
const publisher = dp(plainKey);
|
|
20
|
+
expect((publisher as any)._is_savable_).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe("mirrorDp()", () => {
|
|
25
|
+
it("alias une clé legacy vers un publisher déjà résolu (appState)", () => {
|
|
26
|
+
type App = { scan: { code: string } };
|
|
27
|
+
const appKey = new DataProviderKey<App>("mirrorDpSpecApp");
|
|
28
|
+
const scanKey = new DataProviderKey<{ code: string }>("mirrorDpSpecScan");
|
|
29
|
+
|
|
30
|
+
const appState = dp(appKey);
|
|
31
|
+
appState.scan.code.set("ABC");
|
|
32
|
+
|
|
33
|
+
mirrorDp(scanKey, appState.scan);
|
|
34
|
+
|
|
35
|
+
expect(get(scanKey)).toEqual({ code: "ABC" });
|
|
36
|
+
dp(scanKey).code.set("XYZ");
|
|
37
|
+
expect(appState.scan.code.get()).toBe("XYZ");
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("accepte des chemins string", () => {
|
|
41
|
+
type App = { legacyApi: { total: number } };
|
|
42
|
+
const appKey = new DataProviderKey<App>("mirrorDpSpecAppString");
|
|
43
|
+
const legacyKey = new DataProviderKey<{ total: number }>(
|
|
44
|
+
"mirrorDpSpecLegacyApi",
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const appState = dp(appKey);
|
|
48
|
+
appState.legacyApi.total.set(12);
|
|
49
|
+
|
|
50
|
+
mirrorDp(legacyKey.path, `${appKey.path}.legacyApi`);
|
|
51
|
+
|
|
52
|
+
expect(get(legacyKey)).toEqual({ total: 12 });
|
|
53
|
+
dp(legacyKey).total.set(99);
|
|
54
|
+
expect(appState.legacyApi.total.get()).toBe(99);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ApiResult } from "./api";
|
|
2
2
|
import { DataProviderKey } from "./dataProviderKey";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -25,8 +25,8 @@ export class Endpoint<T, U = any> {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/** Même path qu’`Endpoint` ; le 2ᵉ générique `U` est propagé sur la clé publisher. */
|
|
28
|
-
getDataProviderKey(): DataProviderKey<
|
|
29
|
-
return new DataProviderKey<
|
|
28
|
+
getDataProviderKey(): DataProviderKey<ApiResult<T>, U> {
|
|
29
|
+
return new DataProviderKey<ApiResult<T>, U>(this.path);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/**
|
package/src/css.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare module "*.css" {
|
|
2
|
+
const css: import("lit").CSSResult;
|
|
3
|
+
export default css;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
declare module "*.css?inline" {
|
|
7
|
+
const css: string;
|
|
8
|
+
export default css;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare module "*.scss" {
|
|
12
|
+
const css: import("lit").CSSResult;
|
|
13
|
+
export default css;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare module "*.scss?inline" {
|
|
17
|
+
const css: string;
|
|
18
|
+
export default css;
|
|
19
|
+
}
|
package/src/decorators.ts
CHANGED
|
@@ -16,12 +16,25 @@ export const ancestorAttribute = mySubscriber.ancestorAttribute;
|
|
|
16
16
|
export const autoSubscribe = mySubscriber.autoSubscribe;
|
|
17
17
|
export const autoFill = mySubscriber.autoFill;
|
|
18
18
|
export const get = api.get;
|
|
19
|
+
export const post = api.post;
|
|
20
|
+
export const put = api.put;
|
|
21
|
+
export const patch = api.patch;
|
|
19
22
|
export {
|
|
20
23
|
DataProviderKey,
|
|
21
24
|
type DataProviderKeyHost,
|
|
22
25
|
} from "./core/utils/dataProviderKey";
|
|
23
26
|
export { Endpoint };
|
|
24
|
-
export type { ApiGetResult } from "./core/utils/api";
|
|
27
|
+
export type { ApiResult, ApiGetResult } from "./core/utils/api";
|
|
28
|
+
export type {
|
|
29
|
+
ApiSendOptions,
|
|
30
|
+
GetOptions,
|
|
31
|
+
PostOptions,
|
|
32
|
+
PutOptions,
|
|
33
|
+
PatchOptions,
|
|
34
|
+
} from "./core/decorators/api";
|
|
35
|
+
export type { DynamicPathOptions } from "./core/decorators/subscriber/dynamicPath";
|
|
36
|
+
export type { BindOptions } from "./core/decorators/subscriber/bind";
|
|
37
|
+
export type { PublishOptions } from "./core/decorators/subscriber/publish";
|
|
25
38
|
export const awaitConnectedAncestors = lifecycle.awaitConnectedAncestors;
|
|
26
39
|
export const dispatchConnectedEvent = lifecycle.dispatchConnectedEvent;
|
|
27
40
|
export const CONNECTED = lifecycle.CONNECTED;
|
|
@@ -41,4 +54,7 @@ window["concorde-decorator-subscriber"] = {
|
|
|
41
54
|
autoSubscribe: mySubscriber.autoSubscribe,
|
|
42
55
|
autoFill: mySubscriber.autoFill,
|
|
43
56
|
get: api.get,
|
|
57
|
+
post: api.post,
|
|
58
|
+
put: api.put,
|
|
59
|
+
patch: api.patch,
|
|
44
60
|
};
|
package/src/directives.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as directives from "@supersoniks/concorde/core/directives/DataProvider";
|
|
2
2
|
import {dp as pubDp, dataProvider as pubDataProvider, get as pubGet, set as pubSet} from "@supersoniks/concorde/core/utils/PublisherProxy";
|
|
3
|
+
import type {DirectiveResult} from "lit/async-directive.js";
|
|
3
4
|
|
|
4
5
|
import {ConcordeWindow} from "./core/_types/types";
|
|
5
6
|
/**
|
|
@@ -10,8 +11,8 @@ export const dp = pubDp;
|
|
|
10
11
|
* @deprecated @see pubDataProvider
|
|
11
12
|
*/
|
|
12
13
|
export const dataProvider = pubDataProvider;
|
|
13
|
-
export const subscribe = directives.subscribe;
|
|
14
|
-
export const sub = directives.sub;
|
|
14
|
+
export const subscribe = directives.subscribe as DirectiveResult;
|
|
15
|
+
export const sub = directives.sub as DirectiveResult;
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* @deprecated @see pubGet
|
|
@@ -13,6 +13,8 @@ Recommended patterns for new Concorde apps (Lit + TypeScript). Under the hood, d
|
|
|
13
13
|
| Write from component state | `@publish` |
|
|
14
14
|
| React to assignments | `@handle` |
|
|
15
15
|
| HTTP GET | `@get` + `Endpoint`, or `sonic-list` / `sonic-queue` with `fetch` |
|
|
16
|
+
| HTTP POST (body from store) | `@post` + `Endpoint` + body `DataProviderKey` |
|
|
17
|
+
| HTTP PUT / PATCH (body from store) | `@put` / `@patch` — same model as `@post` |
|
|
16
18
|
| Forms | `formDataProvider` + `name` on fields |
|
|
17
19
|
| Offline doc demos | `serviceURL="/docs-mock-api"` — [Local API demos](#docs/_misc/docs-mock-api.md/docs-mock-api) |
|
|
18
20
|
|
|
@@ -33,7 +35,7 @@ get(cartKey);
|
|
|
33
35
|
</template>
|
|
34
36
|
</sonic-code>
|
|
35
37
|
|
|
36
|
-
Dynamic paths (`users.${userId}`) → decorators or `sub()` — not `get("users.${id}")` in imperative code.
|
|
38
|
+
Dynamic paths (`users.${userId}`) → decorators or `sub()` — not `get("users.${id}")` in imperative code. Resolution rules: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
37
39
|
|
|
38
40
|
[DataProviderKey](#docs/_misc/dataProviderKey.md/dataProviderKey)
|
|
39
41
|
|
|
@@ -45,13 +47,17 @@ Dynamic paths (`users.${userId}`) → decorators or `sub()` — not `get("users.
|
|
|
45
47
|
| `@publish` | Push property writes to store |
|
|
46
48
|
| `@handle` | Method called on assignment |
|
|
47
49
|
| `@ancestorAttribute` | Copy ancestor HTML attribute onto property |
|
|
48
|
-
| `@get` | HTTP GET into `
|
|
50
|
+
| `@get` | HTTP GET into `ApiResult<T>` |
|
|
51
|
+
| `@post` | HTTP POST into `ApiResult<T>` (body from a publisher) |
|
|
52
|
+
| `@put` / `@patch` | HTTP PUT / PATCH into `ApiResult<T>` |
|
|
49
53
|
|
|
50
54
|
Walkthrough: [My first component](#docs/_getting-started/my-first-component.md/my-first-component)
|
|
51
55
|
|
|
52
56
|
## HTTP and lists
|
|
53
57
|
|
|
54
|
-
- [@get](#docs/_decorators/get.md/get) — single
|
|
58
|
+
- [@get](#docs/_decorators/get.md/get) — single GET on a component
|
|
59
|
+
- [@post](#docs/_decorators/post.md/post) — POST with body read from a `DataProviderKey`
|
|
60
|
+
- [@put](#docs/_decorators/put.md/put) · [@patch](#docs/_decorators/patch.md/patch) — PUT / PATCH (same options as `@post`)
|
|
55
61
|
- [List](#core/components/functional/list/list.md/list) — `fetch` + `key="data"` + `/docs-mock-api/api/users`
|
|
56
62
|
- [Queue](#core/components/functional/queue/queue.md/queue) — lazy `offset=$offset&per_page=$limit` + optional `dataFilterProvider` (form → query)
|
|
57
63
|
|
|
@@ -18,7 +18,7 @@ import { ancestorAttribute } from "@supersoniks/concorde/decorators";
|
|
|
18
18
|
|
|
19
19
|
### Basic example
|
|
20
20
|
|
|
21
|
-
The component reads `dataProvider` and `testAttribute` from its ancestor wrapper.
|
|
21
|
+
The component reads `dataProvider` and `testAttribute` from its ancestor wrapper. By default (`dynamic: false`), values are read once at connect.
|
|
22
22
|
|
|
23
23
|
<sonic-code language="typescript">
|
|
24
24
|
<template>
|
|
@@ -36,10 +36,8 @@ export class DemoAncestorAttribute extends LitElement {
|
|
|
36
36
|
|
|
37
37
|
render() {
|
|
38
38
|
return html`
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
<p>testAttribute: <strong>${this.testAttribute || "null"}</strong></p>
|
|
42
|
-
</section>
|
|
39
|
+
<p>dataProvider: <strong>${this.dataProvider ?? "null"}</strong></p>
|
|
40
|
+
<p>testAttribute: <strong>${this.testAttribute ?? "null"}</strong></p>
|
|
43
41
|
`;
|
|
44
42
|
}
|
|
45
43
|
}
|
|
@@ -55,7 +53,6 @@ export class DemoAncestorAttribute extends LitElement {
|
|
|
55
53
|
</template>
|
|
56
54
|
</sonic-code>
|
|
57
55
|
|
|
58
|
-
|
|
59
56
|
## Use cases
|
|
60
57
|
|
|
61
58
|
This decorator is particularly useful for:
|
|
@@ -68,9 +65,60 @@ This decorator is particularly useful for:
|
|
|
68
65
|
## Behavior
|
|
69
66
|
|
|
70
67
|
- The search starts from the current element and traverses up the DOM tree
|
|
71
|
-
- If the attribute is not found, the property will be assigned `null`
|
|
72
68
|
- The injection happens automatically at the time of `connectedCallback`
|
|
73
|
-
-
|
|
69
|
+
- By default (`dynamic: false`), the value is read once at connect time and is not updated afterward
|
|
70
|
+
- With `{ dynamic: true }`, the property stays in sync when:
|
|
71
|
+
- an ancestor **changes** the attribute value
|
|
72
|
+
- a **closer** ancestor **gains** the attribute (that value wins)
|
|
73
|
+
- the **nearest** ancestor **loses** the attribute (falls back to the next one up, or `null`)
|
|
74
|
+
- When `dynamic` is enabled, updates also propagate to `@subscribe` / `@bind` paths that depend on the decorated property (e.g. `${dataProvider}`)
|
|
75
|
+
|
|
76
|
+
### Dynamic mode
|
|
77
|
+
|
|
78
|
+
Use `{ dynamic: true }` when the decorated property must follow the DOM. With Lit, add **`@state()`** on the same property so template updates are visible when the observer assigns a new value.
|
|
79
|
+
|
|
80
|
+
The live demo below shows only the resolved attribute value — no store, no reparenting.
|
|
81
|
+
|
|
82
|
+
<sonic-code language="typescript">
|
|
83
|
+
<template>
|
|
84
|
+
@customElement("demo-ancestor-attribute-dynamic")
|
|
85
|
+
export class DemoAncestorAttributeDynamic extends LitElement {
|
|
86
|
+
@ancestorAttribute("dataProvider", { dynamic: true })
|
|
87
|
+
@state()
|
|
88
|
+
dataProvider: string | null = null;
|
|
89
|
+
|
|
90
|
+
render() {
|
|
91
|
+
return html`
|
|
92
|
+
<p>Nearest ancestor: <strong>${this.dataProvider ?? "null"}</strong></p>
|
|
93
|
+
`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
</template>
|
|
97
|
+
</sonic-code>
|
|
98
|
+
|
|
99
|
+
Try in the demo:
|
|
100
|
+
|
|
101
|
+
- **parent-a** / **parent-b** — change the value on the direct parent
|
|
102
|
+
- **Remove parent attr** — falls back to **outer**
|
|
103
|
+
- **Add closer** — a wrapper with `from-closer` becomes the nearest ancestor
|
|
104
|
+
- **Remove closer** — back to parent or outer
|
|
105
|
+
- **Remove outer attr** — if parent has no attribute either, the child shows `null`
|
|
106
|
+
|
|
107
|
+
<sonic-code>
|
|
108
|
+
<template>
|
|
109
|
+
<docs-demo-sources for="demo-ancestor-attribute-dynamic-section"></docs-demo-sources>
|
|
110
|
+
<demo-ancestor-attribute-dynamic-section></demo-ancestor-attribute-dynamic-section>
|
|
111
|
+
</template>
|
|
112
|
+
</sonic-code>
|
|
113
|
+
|
|
114
|
+
Static mode (default) — read once at connect, no observer:
|
|
115
|
+
|
|
116
|
+
<sonic-code language="typescript">
|
|
117
|
+
<template>
|
|
118
|
+
@ancestorAttribute("dataProvider")
|
|
119
|
+
dataProvider: string | null = null;
|
|
120
|
+
</template>
|
|
121
|
+
</sonic-code>
|
|
74
122
|
|
|
75
123
|
## Notes
|
|
76
124
|
|
|
@@ -4,7 +4,7 @@ Binds a class property to a path in a publisher. The property updates when publi
|
|
|
4
4
|
|
|
5
5
|
For Lit re-renders, also add `@state()` on the same property.
|
|
6
6
|
|
|
7
|
-
**See also:** [@subscribe](#docs/_decorators/subscribe.md/subscribe), [@handle](#docs/_decorators/handle.md/handle), [@publish](#docs/_decorators/publish.md/publish), [@get](#docs/_decorators/get.md/get).
|
|
7
|
+
**See also:** [@subscribe](#docs/_decorators/subscribe.md/subscribe), [@handle](#docs/_decorators/handle.md/handle), [@publish](#docs/_decorators/publish.md/publish), [@get](#docs/_decorators/get.md/get), [@post](#docs/_decorators/post.md/post), [@put](#docs/_decorators/put.md/put), [@patch](#docs/_decorators/patch.md/patch).
|
|
8
8
|
|
|
9
9
|
## Principle
|
|
10
10
|
|
|
@@ -144,7 +144,7 @@ export class DemoBindReflect extends LitElement {
|
|
|
144
144
|
|
|
145
145
|
### Dynamic paths
|
|
146
146
|
|
|
147
|
-
Use `${prop}` or `${this.prop}` inside a **normal string literal** (not a JS template literal with backticks). `@bind` re-subscribes when a reactive dependency changes.
|
|
147
|
+
Use `${prop}` or `${this.prop}` inside a **normal string literal** (not a JS template literal with backticks). `@bind` re-subscribes when a reactive dependency changes. While a placeholder is `null`/`undefined`, the bind is inactive; optional `{ skipEmptyPlaceholder: true }` also waits on `""`. See [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
148
148
|
|
|
149
149
|
> Properties referenced in the pattern must be reactive (`@property`, etc.) or you must call `requestUpdate` manually.
|
|
150
150
|
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
# @get
|
|
2
2
|
|
|
3
|
-
Loads data through [`API.getDetailed`](../../core/utils/api.ts). The decorated property is **`
|
|
3
|
+
Loads data through [`API.getDetailed`](../../core/utils/api.ts). The decorated property is **`ApiResult<T> | null`**: `request`, `response` (or `null` for `dataProvider(...)` resolution without HTTP), and typed `result`.
|
|
4
4
|
|
|
5
|
-
Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) as the first argument. Import `get` and `
|
|
5
|
+
Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) as the first argument. Import `get` and `ApiResult` from `@supersoniks/concorde/decorators`, and `Endpoint` from `@supersoniks/concorde/utils/endpoint`.
|
|
6
6
|
|
|
7
7
|
## Configuration
|
|
8
8
|
|
|
9
9
|
- **Default:** `HTML.getApiConfiguration(host)` (ancestor `serviceURL`, etc.).
|
|
10
10
|
- **Second argument:** `DataProviderKey<APIConfiguration>` — config is read from the publisher at the resolved path; internal mutations trigger another GET. See [API configuration](#docs/_misc/api-configuration.md/api-configuration) for mock demos.
|
|
11
11
|
|
|
12
|
+
## Dynamic path
|
|
13
|
+
|
|
14
|
+
`${prop}` on the endpoint or config key is resolved on the host. While a placeholder is `null` or `undefined`, no GET runs. Optional `skipEmptyPlaceholder: true` also blocks `""` (empty string only). Details: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
15
|
+
|
|
12
16
|
## When the GET runs again
|
|
13
17
|
|
|
14
18
|
- A referenced Lit property changes (endpoint path and/or config key contains `${...}`).
|
|
@@ -18,7 +22,7 @@ Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) as the first argument.
|
|
|
18
22
|
|
|
19
23
|
<sonic-code language="typescript">
|
|
20
24
|
<template>
|
|
21
|
-
import { get, type
|
|
25
|
+
import { get, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
22
26
|
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
23
27
|
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
24
28
|
</template>
|
|
@@ -32,7 +36,7 @@ Same demo service as [`sonic-queue`](../../core/components/functional/queue/queu
|
|
|
32
36
|
<template>
|
|
33
37
|
@get(new Endpoint<User>("users/${userId}"))
|
|
34
38
|
@state()
|
|
35
|
-
payload:
|
|
39
|
+
payload: ApiResult<User> | null = null;
|
|
36
40
|
</template>
|
|
37
41
|
</sonic-code>
|
|
38
42
|
|
|
@@ -66,3 +70,8 @@ Scoped `@get` with `@publish` / `@subscribe` on the payload (see [@publish](#doc
|
|
|
66
70
|
</sonic-code>
|
|
67
71
|
|
|
68
72
|
Stale responses are ignored if the path or generation changed before the request finished.
|
|
73
|
+
|
|
74
|
+
## See also
|
|
75
|
+
|
|
76
|
+
- [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path)
|
|
77
|
+
- [@post](#docs/_decorators/post.md/post) · [@put](#docs/_decorators/put.md/put) · [@patch](#docs/_decorators/patch.md/patch) — send decorators (same path rules)
|
|
@@ -161,6 +161,10 @@ onProfile(profile: Profile) {
|
|
|
161
161
|
|
|
162
162
|
> Options can be combined, e.g. `@handle(a, b, { waitForAllDefined: true, skip: [Skip.Nullish] })`. For any **arbitrary** validation on a specific value, just guard inside the method (`if (!isValid(v)) return;`) — that is exactly what an `accept`-style predicate would do, since `@handle` only runs your method.
|
|
163
163
|
|
|
164
|
+
### `skipEmptyPlaceholder`
|
|
165
|
+
|
|
166
|
+
On a **dynamic key path** (`"items.${itemId}"`), if `true`, a placeholder resolved to `''` is treated as not ready (no subscription) — **empty string only**, not `0` or `false`. See [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
167
|
+
|
|
164
168
|
## Highlights
|
|
165
169
|
|
|
166
170
|
- Strict typing: the method receives one argument per key, in order.
|
|
@@ -168,4 +172,4 @@ onProfile(profile: Profile) {
|
|
|
168
172
|
- By default the method runs on **every** assignment, even with `null` / `undefined` (unlike `@onAssign`, which waits for all values). Opt back into that behavior with `waitForAllDefined`.
|
|
169
173
|
- `skip` filters out values by **named category** (e.g. `[Skip.Nullish, Skip.EmptyObject]`); for arbitrary checks on a specific value, guard inside the method.
|
|
170
174
|
|
|
171
|
-
See also [DataProviderKey](#docs/_misc/dataProviderKey.md/dataProviderKey).
|
|
175
|
+
See also [DataProviderKey](#docs/_misc/dataProviderKey.md/dataProviderKey) and [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
@@ -128,6 +128,8 @@ Each placeholder is replaced at runtime with the current value of the correspond
|
|
|
128
128
|
- removes the previous subscriptions before attaching the new ones,
|
|
129
129
|
- observe the changes inside `willUpdate(changedProperties)` so nothing touches the getters/setters.
|
|
130
130
|
|
|
131
|
+
While a placeholder is `null`/`undefined`, subscriptions are detached. Optional `skipEmptyPlaceholder` on [@handle](#docs/_decorators/handle.md/handle) (typed replacement). Details: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
132
|
+
|
|
131
133
|
|
|
132
134
|
<sonic-code language="typescript">
|
|
133
135
|
<template>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# @patch
|
|
2
|
+
|
|
3
|
+
Sends data through [`API.patchDetailed`](../../core/utils/api.ts). Same model as [@post](#docs/_decorators/post.md/post): decorated property is **`ApiResult<T> | null`** (`request`, `response`, `result`).
|
|
4
|
+
|
|
5
|
+
Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) and a `DataProviderKey` for the **request body**. Import `patch` and `ApiResult` from `@supersoniks/concorde/decorators`.
|
|
6
|
+
|
|
7
|
+
## Configuration
|
|
8
|
+
|
|
9
|
+
Same as [@post](#docs/_decorators/post.md/post) / [@get](#docs/_decorators/get.md/get): scoped `HTML.getApiConfiguration(host)` or `DataProviderKey<APIConfiguration>` as third argument.
|
|
10
|
+
|
|
11
|
+
## Options (`PatchOptions`)
|
|
12
|
+
|
|
13
|
+
Same shape as `PostOptions` on [@post](#docs/_decorators/post.md/post) (`ApiSendOptions`): `refetchEveryMs`, `skipIfBodyMissing`, `autoPostOnBodyMutation`, `triggerKey`, `skipEmptyPlaceholder`. See [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path) for `${sessionId}` and empty-string behaviour.
|
|
14
|
+
|
|
15
|
+
## Import
|
|
16
|
+
|
|
17
|
+
<sonic-code language="typescript">
|
|
18
|
+
<template>
|
|
19
|
+
import { patch, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
20
|
+
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
21
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
22
|
+
</template>
|
|
23
|
+
</sonic-code>
|
|
24
|
+
|
|
25
|
+
## Example
|
|
26
|
+
|
|
27
|
+
<sonic-code language="typescript">
|
|
28
|
+
<template>
|
|
29
|
+
const patchBodyKey = new DataProviderKey<Partial<Resource>>("resourcePatch");
|
|
30
|
+
|
|
31
|
+
@patch(
|
|
32
|
+
new Endpoint<Resource, { resourceId: string }>("resources/${resourceId}"),
|
|
33
|
+
patchBodyKey,
|
|
34
|
+
{ skipEmptyPlaceholder: true },
|
|
35
|
+
)
|
|
36
|
+
@state()
|
|
37
|
+
payload?: ApiResult<Resource> | null;
|
|
38
|
+
</template>
|
|
39
|
+
</sonic-code>
|
|
40
|
+
|
|
41
|
+
## See also
|
|
42
|
+
|
|
43
|
+
- [@post](#docs/_decorators/post.md/post) — POST (live demos)
|
|
44
|
+
- [@put](#docs/_decorators/put.md/put) — full replacement (PUT)
|
|
45
|
+
- [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path)
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# @post
|
|
2
|
+
|
|
3
|
+
Sends data through [`API.postDetailed`](../../core/utils/api.ts). The decorated property is **`ApiResult<T> | null`**: `request`, `response`, and typed `result`.
|
|
4
|
+
|
|
5
|
+
Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) as the first argument and a `DataProviderKey` for the **request body** as the second. Import `post` and `ApiResult` from `@supersoniks/concorde/decorators`, and `Endpoint` from `@supersoniks/concorde/utils/endpoint`.
|
|
6
|
+
|
|
7
|
+
## Configuration
|
|
8
|
+
|
|
9
|
+
Same as [@get](#docs/_decorators/get.md/get): scoped `HTML.getApiConfiguration(host)` by default, or `DataProviderKey<APIConfiguration>` as third argument. See [API configuration](#docs/_misc/api-configuration.md/api-configuration) for mock demos.
|
|
10
|
+
|
|
11
|
+
## Optional `PostOptions` (third or fourth argument)
|
|
12
|
+
|
|
13
|
+
| Option | Description |
|
|
14
|
+
|--------|-------------|
|
|
15
|
+
| `refetchEveryMs` | Re-post on an interval (ms). |
|
|
16
|
+
| `skipIfBodyMissing` | Skip when body publisher is `null`/`undefined` (default: `true`). |
|
|
17
|
+
| `autoPostOnBodyMutation` | Re-post when the body publisher mutates (default: `true`). `false` = manual via `triggerKey.invalidate()`. |
|
|
18
|
+
| `skipEmptyPlaceholder` | If `true`, a placeholder resolved to `''` blocks the request (empty string only — not `0` or `false`). See [Dynamic paths](#docs/_misc/dynamic-path.md/dynamic-path). |
|
|
19
|
+
| `triggerKey` | `DataProviderKey` — `invalidate()` re-runs the POST with the current body. |
|
|
20
|
+
|
|
21
|
+
## When the POST runs again
|
|
22
|
+
|
|
23
|
+
- Body publisher `onInternalMutation` when `autoPostOnBodyMutation` is `true` (default). Plusieurs mutations synchrones dans la même frame sont regroupées en **un seul POST** via `requestAnimationFrame`.
|
|
24
|
+
- Endpoint path dependency changes (`${sessionId}` on the host).
|
|
25
|
+
- Configuration publisher mutation.
|
|
26
|
+
- `triggerKey` publisher `invalidate()`.
|
|
27
|
+
- `refetchEveryMs` timer (if set).
|
|
28
|
+
|
|
29
|
+
## Import
|
|
30
|
+
|
|
31
|
+
<sonic-code language="typescript">
|
|
32
|
+
<template>
|
|
33
|
+
import { post, publish, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
34
|
+
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
35
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
36
|
+
</template>
|
|
37
|
+
</sonic-code>
|
|
38
|
+
|
|
39
|
+
## Minimal example
|
|
40
|
+
|
|
41
|
+
Mock service: `POST /docs-mock-api/api/register` (same route as [`sonic-submit`](#core/components/functional/submit/submit.md/submit) demos). Publisher setup lives in `decorators-demo-post.ts`.
|
|
42
|
+
|
|
43
|
+
<sonic-code language="typescript">
|
|
44
|
+
<template>
|
|
45
|
+
const syncRequest = new DataProviderKey<SyncRequest>("syncRequest");
|
|
46
|
+
const syncTrigger = new DataProviderKey<number>("syncTrigger");
|
|
47
|
+
|
|
48
|
+
@post(
|
|
49
|
+
new Endpoint<SyncResponse, { sessionId: string }>("sessions/${sessionId}/sync"),
|
|
50
|
+
syncRequest,
|
|
51
|
+
{ triggerKey: syncTrigger },
|
|
52
|
+
)
|
|
53
|
+
@state()
|
|
54
|
+
payload?: ApiResult<SyncResponse> | null;
|
|
55
|
+
</template>
|
|
56
|
+
</sonic-code>
|
|
57
|
+
|
|
58
|
+
## Live demos
|
|
59
|
+
|
|
60
|
+
<sonic-code>
|
|
61
|
+
<template>
|
|
62
|
+
<docs-demo-sources for="demo-api-post"></docs-demo-sources>
|
|
63
|
+
<demo-api-post></demo-api-post>
|
|
64
|
+
</template>
|
|
65
|
+
</sonic-code>
|
|
66
|
+
|
|
67
|
+
Dynamic endpoint path — changing `sessionId` on the host re-runs the POST (`POST /docs-mock-api/api/sessions/{id}/sync`):
|
|
68
|
+
|
|
69
|
+
<sonic-code>
|
|
70
|
+
<template>
|
|
71
|
+
<docs-demo-sources for="demo-api-post-dynamic"></docs-demo-sources>
|
|
72
|
+
<demo-api-post-dynamic></demo-api-post-dynamic>
|
|
73
|
+
</template>
|
|
74
|
+
</sonic-code>
|
|
75
|
+
|
|
76
|
+
`@post` + `@publish` on the same property (see [@publish](#docs/_decorators/publish.md/publish)):
|
|
77
|
+
|
|
78
|
+
<sonic-code>
|
|
79
|
+
<template>
|
|
80
|
+
<docs-demo-sources for="demo-api-post-publish"></docs-demo-sources>
|
|
81
|
+
<demo-api-post-publish></demo-api-post-publish>
|
|
82
|
+
</template>
|
|
83
|
+
</sonic-code>
|
|
84
|
+
|
|
85
|
+
Stale responses are ignored if the path or generation changed before the request finished.
|
|
86
|
+
|
|
87
|
+
**Note:** plusieurs composants `@post` sur la même page qui partagent le même `bodyKey` enverront chacun une requête à chaque mutation du body — utiliser une clé par composant (voir les deux démos live ci-dessus).
|
|
88
|
+
|
|
89
|
+
Path placeholders (`${sessionId}`, …): [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
90
|
+
|
|
91
|
+
## See also
|
|
92
|
+
|
|
93
|
+
- [@put](#docs/_decorators/put.md/put) · [@patch](#docs/_decorators/patch.md/patch) — same decorator model, `PUT` / `PATCH` via `putDetailed` / `patchDetailed`
|
|
@@ -52,4 +52,4 @@ export class DemoPublish extends LitElement {
|
|
|
52
52
|
</template>
|
|
53
53
|
</sonic-code>
|
|
54
54
|
|
|
55
|
-
Dynamic paths use the same placeholder rules as `@bind` / `@subscribe`.
|
|
55
|
+
Dynamic paths use the same placeholder rules as `@bind` / `@subscribe`. Resolution and `skipEmptyPlaceholder`: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# @put
|
|
2
|
+
|
|
3
|
+
Sends data through [`API.putDetailed`](../../core/utils/api.ts). Same model as [@post](#docs/_decorators/post.md/post): decorated property is **`ApiResult<T> | null`** (`request`, `response`, `result`).
|
|
4
|
+
|
|
5
|
+
Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) and a `DataProviderKey` for the **request body**. Import `put` and `ApiResult` from `@supersoniks/concorde/decorators`.
|
|
6
|
+
|
|
7
|
+
## Configuration
|
|
8
|
+
|
|
9
|
+
Same as [@post](#docs/_decorators/post.md/post) / [@get](#docs/_decorators/get.md/get): scoped `HTML.getApiConfiguration(host)` or `DataProviderKey<APIConfiguration>` as third argument.
|
|
10
|
+
|
|
11
|
+
## Options (`PutOptions`)
|
|
12
|
+
|
|
13
|
+
Same shape as `PostOptions` on [@post](#docs/_decorators/post.md/post) (`ApiSendOptions`): `refetchEveryMs`, `skipIfBodyMissing`, `autoPostOnBodyMutation`, `triggerKey`, `skipEmptyPlaceholder`. See [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path) for `${sessionId}` and empty-string behaviour.
|
|
14
|
+
|
|
15
|
+
## Import
|
|
16
|
+
|
|
17
|
+
<sonic-code language="typescript">
|
|
18
|
+
<template>
|
|
19
|
+
import { put, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
20
|
+
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
21
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
22
|
+
</template>
|
|
23
|
+
</sonic-code>
|
|
24
|
+
|
|
25
|
+
## Example
|
|
26
|
+
|
|
27
|
+
<sonic-code language="typescript">
|
|
28
|
+
<template>
|
|
29
|
+
const bodyKey = new DataProviderKey<UpdatePayload>("resourceBody");
|
|
30
|
+
|
|
31
|
+
@put(new Endpoint<Resource, { resourceId: string }>("resources/${resourceId}"), bodyKey)
|
|
32
|
+
@state()
|
|
33
|
+
payload?: ApiResult<Resource> | null;
|
|
34
|
+
</template>
|
|
35
|
+
</sonic-code>
|
|
36
|
+
|
|
37
|
+
Changing `resourceId` on the host re-runs the PUT when the path becomes ready — see [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
38
|
+
|
|
39
|
+
## See also
|
|
40
|
+
|
|
41
|
+
- [@post](#docs/_decorators/post.md/post) — POST (live demos, polling, `@publish`)
|
|
42
|
+
- [@patch](#docs/_decorators/patch.md/patch) — partial update (PATCH)
|
|
43
|
+
- [Endpoint](#docs/_misc/endpoint.md/endpoint) · [API configuration](#docs/_misc/api-configuration.md/api-configuration)
|
|
@@ -45,7 +45,9 @@ cart: { items: string[] } | null = null;
|
|
|
45
45
|
|
|
46
46
|
## Dynamic path and scope
|
|
47
47
|
|
|
48
|
-
Placeholders `${prop}` in the key string are resolved from **properties on the same component**.
|
|
48
|
+
Placeholders `${prop}` in the key string are resolved from **properties on the same component**. While a value is `null`/`undefined`, the subscription is inactive; optional `{ skipEmptyPlaceholder: true }` also waits on `""`. Full rules: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
49
|
+
|
|
50
|
+
Declare dynamic props in the key’s second generic so TypeScript expects them on the host:
|
|
49
51
|
|
|
50
52
|
<sonic-code language="typescript">
|
|
51
53
|
<template>
|
|
@@ -94,4 +96,5 @@ user: User | null = null;
|
|
|
94
96
|
|
|
95
97
|
- [Data flow](#docs/_core-concept/dataFlow.md/dataFlow) — overview
|
|
96
98
|
- [DataProviderKey](#docs/_misc/dataProviderKey.md/dataProviderKey) — paths and host generics
|
|
99
|
+
- [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path) — `${prop}` resolution and `skipEmptyPlaceholder`
|
|
97
100
|
- [sub()](#docs/_directives/sub.md/sub) — same paths inside `html` templates
|
|
@@ -37,7 +37,7 @@ render() {
|
|
|
37
37
|
|
|
38
38
|
## Dynamic DataProviderKey (`${prop}`)
|
|
39
39
|
|
|
40
|
-
Like `@subscribe`: the path is resolved on the template **host component**; the directive re-subscribes when observed props change.
|
|
40
|
+
Like `@subscribe`: the path is resolved on the template **host component**; the directive re-subscribes when observed props change. Placeholder values (`null`, `""`, `0`, …): [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path) (`skipEmptyPlaceholder` not available on `sub()` yet).
|
|
41
41
|
|
|
42
42
|
<sonic-code language="typescript">
|
|
43
43
|
<template>
|
|
@@ -81,7 +81,7 @@ export const docsUserRowKey = new DataProviderKey<
|
|
|
81
81
|
</template>
|
|
82
82
|
</sonic-code>
|
|
83
83
|
|
|
84
|
-
The second generic (`{ dataProvider: string | null }`) lists what the host must expose so `"${dataProvider}"` can be resolved. See [DataProviderKey](#docs/_misc/dataProviderKey.md/dataProviderKey).
|
|
84
|
+
The second generic (`{ dataProvider: string | null }`) lists what the host must expose so `"${dataProvider}"` can be resolved. See [DataProviderKey](#docs/_misc/dataProviderKey.md/dataProviderKey) and [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
85
85
|
|
|
86
86
|
### Scope — which store segment applies
|
|
87
87
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# API configuration
|
|
2
2
|
|
|
3
|
-
`APIConfiguration` is the object built by [`HTML.getApiConfiguration`](../../core/utils/HTML.ts) from **ancestor attributes** on the DOM (or from a typed publisher — see [@get
|
|
3
|
+
`APIConfiguration` is the object built by [`HTML.getApiConfiguration`](../../core/utils/HTML.ts) from **ancestor attributes** on the DOM (or from a typed publisher — see [@get](#docs/_decorators/get.md/get) / [@post](#docs/_decorators/post.md/post) configuration key). It is passed to [`API`](../../core/utils/api.ts) by fetchers, **sonic-submit**, the **`wording()`** directive, **`@get`**, **`@post`**, **`@put`**, and **`@patch`**.
|
|
4
4
|
|
|
5
5
|
> **Mock service:** same [Local API demos](#docs/_misc/docs-mock-api.md/docs-mock-api) Service Worker / Vite middleware. Routes used on this page are listed in the [API config routes](#api-config-routes) section below.
|
|
6
6
|
|
|
@@ -74,6 +74,8 @@ Implementation: `src/docs/mock-api/api-config-mock.ts` (bundled in the Service W
|
|
|
74
74
|
## See also
|
|
75
75
|
|
|
76
76
|
- [@get](#docs/_decorators/get.md/get) — `APIConfiguration` + `Endpoint`
|
|
77
|
+
- [@post](#docs/_decorators/post.md/post) — same configuration model for POST
|
|
78
|
+
- [@put](#docs/_decorators/put.md/put) · [@patch](#docs/_decorators/patch.md/patch) — PUT / PATCH
|
|
77
79
|
- [Endpoint](#docs/_misc/endpoint.md/endpoint) — typed path
|
|
78
80
|
- [Local API demos](#docs/_misc/docs-mock-api.md/docs-mock-api) — offline `serviceURL`
|
|
79
81
|
- [Fetch](#core/components/functional/fetch/fetch.md/fetch) — attribute table (legacy sonic-fetch)
|
|
@@ -78,7 +78,7 @@ firstItem.path; // "data.items.0"
|
|
|
78
78
|
|
|
79
79
|
### Dynamic paths
|
|
80
80
|
|
|
81
|
-
Use placeholders `${prop}` or `{$prop}` in the path string. The path is resolved at runtime from the component's properties. The type remains declarative:
|
|
81
|
+
Use placeholders `${prop}` or `{$prop}` in the path string. The path is resolved at runtime from the component's properties. See [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path) for resolution rules and `skipEmptyPlaceholder`. The type remains declarative:
|
|
82
82
|
|
|
83
83
|
<sonic-code language="typescript">
|
|
84
84
|
<template>
|
|
@@ -159,7 +159,7 @@ export class UserForm extends LitElement {
|
|
|
159
159
|
</template>
|
|
160
160
|
</sonic-code>
|
|
161
161
|
|
|
162
|
-
These decorators support dynamic paths: `"base.${prop}"` in the constructor. A wrong property type (e.g. `number` for `DataProviderKey<string>`) is a TypeScript error. See [@handle](#docs/_decorators/handle.md/handle) for method callbacks.
|
|
162
|
+
These decorators support dynamic paths: `"base.${prop}"` in the constructor. A wrong property type (e.g. `number` for `DataProviderKey<string>`) is a TypeScript error. Resolution rules: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path). See [@handle](#docs/_decorators/handle.md/handle) for method callbacks.
|
|
163
163
|
|
|
164
164
|
## Notes
|
|
165
165
|
|