vviinn-widgets 2.1.0 → 2.2.2
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/dist/cjs/Handler-d1a8a86a.js +329 -0
- package/dist/{vviinn-widgets/app-globals-e0943e34.js → cjs/app-globals-30781f30.js} +15 -925
- package/{www/build/cropper-handler.entry.js → dist/cjs/cropper-handler.cjs.entry.js} +11 -7
- package/dist/{vviinn-widgets/customized-slots-f3449695.js → cjs/customized-slots-5d904d8e.js} +6 -3
- package/dist/cjs/highlight-box_22.cjs.entry.js +737 -0
- package/{www/build/imageSearch.store-407f49f0.js → dist/cjs/imageSearch.store-128957a4.js} +11573 -11902
- package/dist/cjs/index-741a970d.js +1354 -0
- package/dist/cjs/index-c493804d.js +41 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/loader.cjs.js +23 -0
- package/dist/cjs/vviinn-carousel_5.cjs.entry.js +1232 -0
- package/dist/{vviinn-widgets/vviinn-error.entry.js → cjs/vviinn-error.cjs.entry.js} +8 -4
- package/{www/build/vviinn-preloader.entry.js → dist/cjs/vviinn-preloader.cjs.entry.js} +11 -10
- package/dist/cjs/vviinn-vps-button.cjs.entry.js +43 -0
- package/{www/build/vviinn-vps-widget.entry.js → dist/cjs/vviinn-vps-widget.cjs.entry.js} +31 -30
- package/dist/cjs/vviinn-widgets.cjs.js +21 -0
- package/dist/collection/Image/error.js +14 -0
- package/dist/collection/Image/form.js +5 -0
- package/dist/collection/Image/fromFile.js +18 -0
- package/dist/collection/Image/imageToB64.js +9 -0
- package/dist/collection/Image/index.js +0 -0
- package/dist/collection/Image/renderPromise.js +6 -0
- package/dist/collection/Image/resizeImage.js +28 -0
- package/dist/collection/Image/sizing.js +39 -0
- package/dist/collection/Image/toFile.js +17 -0
- package/dist/collection/analytics/GAnalytics.js +32 -0
- package/dist/collection/analytics/GeneralAnalytics.js +9 -0
- package/dist/collection/analytics/GtagAnalytics.js +35 -0
- package/dist/collection/analytics/ProductAnalytics.js +1 -0
- package/dist/collection/campaign/Campaign.js +8 -0
- package/dist/collection/campaign/CampaignService.js +5 -0
- package/dist/collection/campaign/VCSCampaign.js +1 -0
- package/dist/collection/campaign/VCSCampaignResponse.js +1 -0
- package/dist/collection/campaign/VCSCampaignService.js +5 -0
- package/dist/collection/campaign/VPRCampaignResponse.js +1 -0
- package/dist/collection/campaign/VPRCampaignService.js +5 -0
- package/dist/collection/collection-manifest.json +43 -0
- package/dist/collection/components/customized-slots.js +47 -0
- package/dist/collection/components/image-search/image-view/highlight-box/highlight-box.css +71 -0
- package/dist/collection/components/image-search/image-view/highlight-box/highlight-box.js +25 -0
- package/dist/collection/components/image-search/image-view/image-cropper/cropper-handler/cropper-handler.css +49 -0
- package/dist/collection/components/image-search/image-view/image-cropper/cropper-handler/cropper-handler.js +64 -0
- package/dist/collection/components/image-search/image-view/image-cropper/image-cropper.css +33 -0
- package/dist/{vviinn-widgets/image-cropper.entry.js → collection/components/image-search/image-view/image-cropper/image-cropper.js} +54 -32
- package/dist/collection/components/image-search/search-filters/search-filters.css +120 -0
- package/dist/collection/components/image-search/search-filters/search-filters.js +102 -0
- package/dist/collection/components/vviinn-carousel/vviinn-carousel.css +138 -0
- package/{www/build/vviinn-carousel.entry.js → dist/collection/components/vviinn-carousel/vviinn-carousel.js} +115 -18
- package/dist/collection/components/vviinn-error/vviinn-empty-results/vviinn-empty-results.css +7 -0
- package/dist/collection/components/vviinn-error/vviinn-empty-results/vviinn-empty-results.js +36 -0
- package/dist/collection/components/vviinn-error/vviinn-error.css +38 -0
- package/dist/collection/components/vviinn-error/vviinn-error.js +18 -0
- package/dist/collection/components/vviinn-error/vviinn-server-error/vviinn-server-error.css +3 -0
- package/dist/collection/components/vviinn-error/vviinn-server-error/vviinn-server-error.js +34 -0
- package/dist/collection/components/vviinn-error/vviinn-wrong-format/vviinn-wrong-format.css +3 -0
- package/dist/collection/components/vviinn-error/vviinn-wrong-format/vviinn-wrong-format.js +34 -0
- package/dist/collection/components/vviinn-example-images/vviinn-example-image/vviinn-example-image.css +34 -0
- package/dist/collection/components/vviinn-example-images/vviinn-example-image/vviinn-example-image.js +129 -0
- package/dist/collection/components/vviinn-example-images/vviinn-example-images.css +19 -0
- package/dist/collection/components/vviinn-example-images/vviinn-example-images.js +80 -0
- package/dist/{vviinn-widgets/index-c9483145.js → collection/components/vviinn-icons/index.js} +13 -12
- package/dist/collection/components/vviinn-image-selector/vviinn-image-selector.css +25 -0
- package/dist/collection/components/vviinn-image-selector/vviinn-image-selector.js +64 -0
- package/dist/collection/components/vviinn-image-view/vviinn-detected-object/vviinn-detected-object.css +47 -0
- package/dist/collection/components/vviinn-image-view/vviinn-detected-object/vviinn-detected-object.js +83 -0
- package/dist/collection/components/vviinn-image-view/vviinn-image-view.css +31 -0
- package/dist/collection/components/vviinn-image-view/vviinn-image-view.js +61 -0
- package/dist/collection/components/vviinn-modal/vviinn-modal.css +105 -0
- package/dist/collection/components/vviinn-modal/vviinn-modal.js +98 -0
- package/dist/collection/components/vviinn-onboarding/onboarding-cards/onboarding-card.css +41 -0
- package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-1/vviinn-onboarding-card-1.js +26 -0
- package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-2/vviinn-onboarding-card-2.js +26 -0
- package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-3/vviinn-onboarding-card-3.js +26 -0
- package/dist/collection/components/vviinn-onboarding/vviinn-onboarding.css +58 -0
- package/dist/collection/components/vviinn-onboarding/vviinn-onboarding.js +28 -0
- package/dist/collection/components/vviinn-overlay/vviinn-overlay.css +33 -0
- package/dist/collection/components/vviinn-overlay/vviinn-overlay.js +15 -0
- package/dist/collection/components/vviinn-overlayed-modal/vviinn-overlayed-modal.css +29 -0
- package/dist/collection/components/vviinn-overlayed-modal/vviinn-overlayed-modal.js +71 -0
- package/dist/collection/components/vviinn-preloader/vviinn-preloader.css +37 -0
- package/dist/collection/components/vviinn-preloader/vviinn-preloader.js +20 -0
- package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.css +19 -0
- package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.js +27 -0
- package/dist/collection/components/vviinn-product-card/render-helpers.js +32 -0
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.css +95 -0
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.js +425 -0
- package/dist/collection/components/vviinn-slider/arrow.js +11 -0
- package/dist/collection/components/vviinn-slider/vviinn-slide/vviinn-slide.css +4 -0
- package/dist/collection/components/vviinn-slider/vviinn-slide/vviinn-slide.js +15 -0
- package/dist/collection/components/vviinn-slider/vviinn-slider.css +109 -0
- package/dist/collection/components/vviinn-slider/vviinn-slider.js +181 -0
- package/dist/collection/components/vviinn-teaser/vviinn-teaser.css +14 -0
- package/dist/collection/components/vviinn-teaser/vviinn-teaser.js +29 -0
- package/dist/collection/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.css +238 -0
- package/dist/collection/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.js +200 -0
- package/dist/collection/components/vviinn-vpr-button/stories/kek.stories.js +18 -0
- package/dist/collection/components/vviinn-vpr-button/vviinn-vpr-button.css +35 -0
- package/dist/collection/components/vviinn-vpr-button/vviinn-vpr-button.js +149 -0
- package/dist/collection/components/vviinn-vpr-widget/GridMode.js +1 -0
- package/dist/collection/components/vviinn-vpr-widget/token-helpers.js +11 -0
- package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-vidget.js +441 -0
- package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-widget.css +74 -0
- package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.css +0 -0
- package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js +177 -0
- package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.css +350 -0
- package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +247 -0
- package/dist/collection/cropper/Cropper.js +1 -0
- package/dist/collection/cropper/Handler.js +61 -0
- package/dist/collection/dom/index.js +3 -0
- package/dist/collection/error.js +14 -0
- package/dist/collection/file/index.js +4 -0
- package/dist/collection/geometry/Clip.js +14 -0
- package/dist/collection/geometry/Point.js +32 -0
- package/dist/collection/geometry/Rectangle.js +95 -0
- package/dist/collection/geometry/RectangleAlt.js +1 -0
- package/dist/collection/geometry/Sized.js +8 -0
- package/dist/collection/global.js +19 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/interfaces/generated.js +5 -0
- package/dist/collection/interfaces/recommendation.js +1 -0
- package/dist/collection/network/apiClient.js +9 -0
- package/dist/collection/network/ion/File.js +14 -0
- package/dist/collection/network/ion/Form.js +64 -0
- package/dist/collection/network/ion/Link.js +8 -0
- package/dist/collection/network/ion/ValueObject.js +23 -0
- package/dist/collection/network/request.js +19 -0
- package/dist/collection/network/utils.js +37 -0
- package/dist/collection/recommendation/recommendation.js +1 -0
- package/dist/collection/searchSession/searchSession.js +26 -0
- package/dist/collection/sentry.js +14 -0
- package/dist/collection/slider/GridMode.js +1 -0
- package/dist/collection/store/file-processing.js +13 -0
- package/dist/collection/store/imageSearch.store.js +138 -0
- package/dist/collection/store/store.js +11 -0
- package/dist/collection/stories/Button.js +21 -0
- package/dist/collection/stories/Button.stories.js +42 -0
- package/dist/collection/stories/Header.js +45 -0
- package/dist/collection/stories/Header.stories.js +15 -0
- package/dist/collection/stories/Page.js +61 -0
- package/dist/collection/stories/Page.stories.js +19 -0
- package/dist/collection/stories/assets/code-brackets.svg +1 -0
- package/dist/collection/stories/assets/colors.svg +1 -0
- package/dist/collection/stories/assets/comments.svg +1 -0
- package/dist/collection/stories/assets/direction.svg +1 -0
- package/dist/collection/stories/assets/flow.svg +1 -0
- package/dist/collection/stories/assets/plugin.svg +1 -0
- package/dist/collection/stories/assets/repo.svg +1 -0
- package/dist/collection/stories/assets/stackalt.svg +1 -0
- package/dist/collection/stories/image-selector.stories.js +6 -0
- package/dist/collection/stories/image-view.stories.js +6 -0
- package/dist/collection/stories/modal.stories.js +12 -0
- package/dist/collection/stories/onboarding.stories.js +11 -0
- package/dist/collection/stories/overlay.stories.js +5 -0
- package/dist/collection/stories/overlayedModal.stories.js +8 -0
- package/dist/collection/stories/privacy-badge.stories.js +11 -0
- package/dist/collection/stories/slider.stories.js +17 -0
- package/dist/collection/stories/teaser.stories.js +5 -0
- package/dist/collection/stories/vps-widget.stories.js +47 -0
- package/dist/collection/stories/vviinn-product.stories.js +19 -0
- package/dist/collection/utils/collections/collectionsUtils.js +5 -0
- package/dist/collection/utils/either.js +3 -0
- package/dist/collection/utils/enum/enumUtils.js +3 -0
- package/dist/collection/utils/event/Events.js +1 -0
- package/dist/collection/utils/number/index.js +4 -0
- package/dist/collection/utils/option/option.js +4 -0
- package/dist/collection/utils/semigroup/semigroupDiff.js +6 -0
- package/dist/collection/utils/token/tokenUtils.js +9 -0
- package/dist/esm/Handler-639a4cb3.js +308 -0
- package/{www/build/app-globals-e0943e34.js → dist/esm/app-globals-345e497d.js} +10 -922
- package/dist/{vviinn-widgets → esm}/cropper-handler.entry.js +2 -2
- package/{www/build/customized-slots-f3449695.js → dist/esm/customized-slots-a76a8d41.js} +1 -1
- package/dist/esm/highlight-box_22.entry.js +712 -0
- package/dist/{vviinn-widgets/imageSearch.store-407f49f0.js → esm/imageSearch.store-8eab0da1.js} +11510 -11872
- package/dist/esm/index-6fa21e24.js +1323 -0
- package/{www/build/index-c9483145.js → dist/esm/index-8cb063df.js} +6 -4
- package/dist/esm/index.js +1 -0
- package/dist/esm/loader.js +19 -0
- package/dist/esm/polyfills/core-js.js +11 -0
- package/dist/esm/polyfills/css-shim.js +1 -0
- package/dist/esm/polyfills/dom.js +79 -0
- package/dist/esm/polyfills/es5-html-element.js +1 -0
- package/dist/esm/polyfills/index.js +34 -0
- package/dist/esm/polyfills/system.js +6 -0
- package/dist/esm/vviinn-carousel_5.entry.js +1224 -0
- package/{www/build → dist/esm}/vviinn-error.entry.js +1 -1
- package/dist/{vviinn-widgets → esm}/vviinn-preloader.entry.js +3 -6
- package/dist/{vviinn-widgets → esm}/vviinn-vps-button.entry.js +3 -3
- package/dist/{vviinn-widgets → esm}/vviinn-vps-widget.entry.js +4 -7
- package/dist/esm/vviinn-widgets.js +19 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/loader/cdn.js +3 -0
- package/dist/loader/index.cjs.js +3 -0
- package/dist/loader/index.d.ts +12 -0
- package/dist/loader/index.es2017.js +3 -0
- package/dist/loader/index.js +4 -0
- package/dist/loader/package.json +10 -0
- package/dist/types/components/vviinn-carousel/vviinn-carousel.d.ts +1 -0
- package/dist/types/components/vviinn-icons/index.d.ts +2 -0
- package/dist/types/components/vviinn-product-card/render-helpers.d.ts +3 -2
- package/dist/types/components/vviinn-product-card/vviinn-product-card.d.ts +2 -0
- package/dist/types/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.d.ts +25 -0
- package/dist/types/components/vviinn-vpr-button/stories/kek.stories.d.ts +7 -0
- package/dist/types/components/vviinn-vpr-button/vviinn-vpr-button.d.ts +14 -0
- package/dist/types/components/vviinn-vpr-widget/vviinn-vpr-vidget.d.ts +13 -3
- package/dist/types/components.d.ts +54 -0
- package/dist/vviinn-widgets/index.esm.js +0 -1
- package/dist/vviinn-widgets/p-04b06ea9.entry.js +1 -0
- package/dist/vviinn-widgets/p-400eb62f.entry.js +1 -0
- package/dist/vviinn-widgets/p-56fc949a.js +1 -0
- package/dist/vviinn-widgets/p-59edfbe2.js +1 -0
- package/dist/vviinn-widgets/p-78ccc9eb.js +15 -0
- package/dist/vviinn-widgets/p-9d24f51e.entry.js +1 -0
- package/dist/vviinn-widgets/p-d085199d.entry.js +1 -0
- package/dist/vviinn-widgets/p-e1ba8626.js +1 -0
- package/dist/vviinn-widgets/p-e38f4aa2.entry.js +1 -0
- package/dist/vviinn-widgets/p-e67cae57.js +1 -0
- package/dist/vviinn-widgets/p-f47e82b2.entry.js +1 -0
- package/dist/vviinn-widgets/p-f582db5c.js +1 -0
- package/dist/vviinn-widgets/p-fb14e3cc.entry.js +1 -0
- package/dist/vviinn-widgets/vviinn-widgets.css +1 -6
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -125
- package/package.json +3 -1
- package/www/build/index.esm.js +0 -1
- package/www/build/p-04b06ea9.entry.js +1 -0
- package/www/build/p-400eb62f.entry.js +1 -0
- package/www/build/p-56fc949a.js +1 -0
- package/www/build/p-59edfbe2.js +1 -0
- package/www/build/p-78ccc9eb.js +15 -0
- package/www/build/p-7e4978d5.js +1 -0
- package/www/build/p-9d24f51e.entry.js +1 -0
- package/www/build/p-a67898be.css +1 -0
- package/www/build/p-d085199d.entry.js +1 -0
- package/www/build/p-e1ba8626.js +1 -0
- package/www/build/p-e38f4aa2.entry.js +1 -0
- package/www/build/p-e67cae57.js +1 -0
- package/www/build/p-f47e82b2.entry.js +1 -0
- package/www/build/p-f582db5c.js +1 -0
- package/www/build/p-fb14e3cc.entry.js +1 -0
- package/www/build/vviinn-widgets.css +1 -6
- package/www/build/vviinn-widgets.esm.js +1 -125
- package/www/index.html +6 -13
- package/dist/vviinn-widgets/Array-4b9f84cf.js +0 -4295
- package/dist/vviinn-widgets/Handler-47db9890.js +0 -1428
- package/dist/vviinn-widgets/NonEmptyArray-6ef0d207.js +0 -4370
- package/dist/vviinn-widgets/css-shim-f0027935.js +0 -4
- package/dist/vviinn-widgets/dom-db0073f0.js +0 -73
- package/dist/vviinn-widgets/highlight-box.entry.js +0 -41
- package/dist/vviinn-widgets/index-b6d739a9.js +0 -3010
- package/dist/vviinn-widgets/number-98d54dd6.js +0 -1533
- package/dist/vviinn-widgets/search-filters.entry.js +0 -73
- package/dist/vviinn-widgets/shadow-css-c1fdfa9f.js +0 -389
- package/dist/vviinn-widgets/vviinn-carousel.entry.js +0 -205
- package/dist/vviinn-widgets/vviinn-detected-object.entry.js +0 -52
- package/dist/vviinn-widgets/vviinn-empty-results.entry.js +0 -16
- package/dist/vviinn-widgets/vviinn-example-image.entry.js +0 -38
- package/dist/vviinn-widgets/vviinn-example-images.entry.js +0 -28
- package/dist/vviinn-widgets/vviinn-image-selector.entry.js +0 -31
- package/dist/vviinn-widgets/vviinn-image-view.entry.js +0 -55
- package/dist/vviinn-widgets/vviinn-modal.entry.js +0 -30
- package/dist/vviinn-widgets/vviinn-onboarding-card-1.entry.js +0 -21
- package/dist/vviinn-widgets/vviinn-onboarding-card-2.entry.js +0 -21
- package/dist/vviinn-widgets/vviinn-onboarding-card-3.entry.js +0 -21
- package/dist/vviinn-widgets/vviinn-onboarding.entry.js +0 -20
- package/dist/vviinn-widgets/vviinn-overlay.entry.js +0 -15
- package/dist/vviinn-widgets/vviinn-overlayed-modal.entry.js +0 -18
- package/dist/vviinn-widgets/vviinn-privacy-badge.entry.js +0 -20
- package/dist/vviinn-widgets/vviinn-product-card.entry.js +0 -176
- package/dist/vviinn-widgets/vviinn-server-error.entry.js +0 -16
- package/dist/vviinn-widgets/vviinn-slide.entry.js +0 -15
- package/dist/vviinn-widgets/vviinn-slider.entry.js +0 -120
- package/dist/vviinn-widgets/vviinn-teaser.entry.js +0 -20
- package/dist/vviinn-widgets/vviinn-vpr-widget.entry.js +0 -128
- package/dist/vviinn-widgets/vviinn-wrong-format.entry.js +0 -16
- package/www/build/Array-4b9f84cf.js +0 -4295
- package/www/build/Handler-47db9890.js +0 -1428
- package/www/build/NonEmptyArray-6ef0d207.js +0 -4370
- package/www/build/css-shim-f0027935.js +0 -4
- package/www/build/dom-db0073f0.js +0 -73
- package/www/build/highlight-box.entry.js +0 -41
- package/www/build/image-cropper.entry.js +0 -113
- package/www/build/index-b6d739a9.js +0 -3010
- package/www/build/number-98d54dd6.js +0 -1533
- package/www/build/search-filters.entry.js +0 -73
- package/www/build/shadow-css-c1fdfa9f.js +0 -389
- package/www/build/vviinn-detected-object.entry.js +0 -52
- package/www/build/vviinn-empty-results.entry.js +0 -16
- package/www/build/vviinn-example-image.entry.js +0 -38
- package/www/build/vviinn-example-images.entry.js +0 -28
- package/www/build/vviinn-image-selector.entry.js +0 -31
- package/www/build/vviinn-image-view.entry.js +0 -55
- package/www/build/vviinn-modal.entry.js +0 -30
- package/www/build/vviinn-onboarding-card-1.entry.js +0 -21
- package/www/build/vviinn-onboarding-card-2.entry.js +0 -21
- package/www/build/vviinn-onboarding-card-3.entry.js +0 -21
- package/www/build/vviinn-onboarding.entry.js +0 -20
- package/www/build/vviinn-overlay.entry.js +0 -15
- package/www/build/vviinn-overlayed-modal.entry.js +0 -18
- package/www/build/vviinn-privacy-badge.entry.js +0 -20
- package/www/build/vviinn-product-card.entry.js +0 -176
- package/www/build/vviinn-server-error.entry.js +0 -16
- package/www/build/vviinn-slide.entry.js +0 -15
- package/www/build/vviinn-slider.entry.js +0 -120
- package/www/build/vviinn-teaser.entry.js +0 -20
- package/www/build/vviinn-vpr-widget.entry.js +0 -128
- package/www/build/vviinn-vps-button.entry.js +0 -39
- package/www/build/vviinn-wrong-format.entry.js +0 -16
|
@@ -1,1428 +0,0 @@
|
|
|
1
|
-
// -------------------------------------------------------------------------------------
|
|
2
|
-
// instances
|
|
3
|
-
// -------------------------------------------------------------------------------------
|
|
4
|
-
/**
|
|
5
|
-
* @category instances
|
|
6
|
-
* @since 2.10.0
|
|
7
|
-
*/
|
|
8
|
-
var getBooleanAlgebra = function (B) { return function () { return ({
|
|
9
|
-
meet: function (x, y) { return function (a) { return B.meet(x(a), y(a)); }; },
|
|
10
|
-
join: function (x, y) { return function (a) { return B.join(x(a), y(a)); }; },
|
|
11
|
-
zero: function () { return B.zero; },
|
|
12
|
-
one: function () { return B.one; },
|
|
13
|
-
implies: function (x, y) { return function (a) { return B.implies(x(a), y(a)); }; },
|
|
14
|
-
not: function (x) { return function (a) { return B.not(x(a)); }; }
|
|
15
|
-
}); }; };
|
|
16
|
-
/**
|
|
17
|
-
* Unary functions form a semigroup as long as you can provide a semigroup for the codomain.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* import { Predicate, getSemigroup } from 'fp-ts/function'
|
|
21
|
-
* import * as B from 'fp-ts/boolean'
|
|
22
|
-
*
|
|
23
|
-
* const f: Predicate<number> = (n) => n <= 2
|
|
24
|
-
* const g: Predicate<number> = (n) => n >= 0
|
|
25
|
-
*
|
|
26
|
-
* const S1 = getSemigroup(B.SemigroupAll)<number>()
|
|
27
|
-
*
|
|
28
|
-
* assert.deepStrictEqual(S1.concat(f, g)(1), true)
|
|
29
|
-
* assert.deepStrictEqual(S1.concat(f, g)(3), false)
|
|
30
|
-
*
|
|
31
|
-
* const S2 = getSemigroup(B.SemigroupAny)<number>()
|
|
32
|
-
*
|
|
33
|
-
* assert.deepStrictEqual(S2.concat(f, g)(1), true)
|
|
34
|
-
* assert.deepStrictEqual(S2.concat(f, g)(3), true)
|
|
35
|
-
*
|
|
36
|
-
* @category instances
|
|
37
|
-
* @since 2.10.0
|
|
38
|
-
*/
|
|
39
|
-
var getSemigroup$2 = function (S) { return function () { return ({
|
|
40
|
-
concat: function (f, g) { return function (a) { return S.concat(f(a), g(a)); }; }
|
|
41
|
-
}); }; };
|
|
42
|
-
/**
|
|
43
|
-
* Unary functions form a monoid as long as you can provide a monoid for the codomain.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* import { Predicate } from 'fp-ts/Predicate'
|
|
47
|
-
* import { getMonoid } from 'fp-ts/function'
|
|
48
|
-
* import * as B from 'fp-ts/boolean'
|
|
49
|
-
*
|
|
50
|
-
* const f: Predicate<number> = (n) => n <= 2
|
|
51
|
-
* const g: Predicate<number> = (n) => n >= 0
|
|
52
|
-
*
|
|
53
|
-
* const M1 = getMonoid(B.MonoidAll)<number>()
|
|
54
|
-
*
|
|
55
|
-
* assert.deepStrictEqual(M1.concat(f, g)(1), true)
|
|
56
|
-
* assert.deepStrictEqual(M1.concat(f, g)(3), false)
|
|
57
|
-
*
|
|
58
|
-
* const M2 = getMonoid(B.MonoidAny)<number>()
|
|
59
|
-
*
|
|
60
|
-
* assert.deepStrictEqual(M2.concat(f, g)(1), true)
|
|
61
|
-
* assert.deepStrictEqual(M2.concat(f, g)(3), true)
|
|
62
|
-
*
|
|
63
|
-
* @category instances
|
|
64
|
-
* @since 2.10.0
|
|
65
|
-
*/
|
|
66
|
-
var getMonoid$2 = function (M) {
|
|
67
|
-
var getSemigroupM = getSemigroup$2(M);
|
|
68
|
-
return function () { return ({
|
|
69
|
-
concat: getSemigroupM().concat,
|
|
70
|
-
empty: function () { return M.empty; }
|
|
71
|
-
}); };
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* @category instances
|
|
75
|
-
* @since 2.10.0
|
|
76
|
-
*/
|
|
77
|
-
var getSemiring = function (S) { return ({
|
|
78
|
-
add: function (f, g) { return function (x) { return S.add(f(x), g(x)); }; },
|
|
79
|
-
zero: function () { return S.zero; },
|
|
80
|
-
mul: function (f, g) { return function (x) { return S.mul(f(x), g(x)); }; },
|
|
81
|
-
one: function () { return S.one; }
|
|
82
|
-
}); };
|
|
83
|
-
/**
|
|
84
|
-
* @category instances
|
|
85
|
-
* @since 2.10.0
|
|
86
|
-
*/
|
|
87
|
-
var getRing = function (R) {
|
|
88
|
-
var S = getSemiring(R);
|
|
89
|
-
return {
|
|
90
|
-
add: S.add,
|
|
91
|
-
mul: S.mul,
|
|
92
|
-
one: S.one,
|
|
93
|
-
zero: S.zero,
|
|
94
|
-
sub: function (f, g) { return function (x) { return R.sub(f(x), g(x)); }; }
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
// -------------------------------------------------------------------------------------
|
|
98
|
-
// utils
|
|
99
|
-
// -------------------------------------------------------------------------------------
|
|
100
|
-
/**
|
|
101
|
-
* @since 2.11.0
|
|
102
|
-
*/
|
|
103
|
-
var apply = function (a) { return function (f) { return f(a); }; };
|
|
104
|
-
/**
|
|
105
|
-
* @since 2.0.0
|
|
106
|
-
*/
|
|
107
|
-
function identity(a) {
|
|
108
|
-
return a;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* @since 2.0.0
|
|
112
|
-
*/
|
|
113
|
-
var unsafeCoerce = identity;
|
|
114
|
-
/**
|
|
115
|
-
* @since 2.0.0
|
|
116
|
-
*/
|
|
117
|
-
function constant$1(a) {
|
|
118
|
-
return function () { return a; };
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* A thunk that returns always `true`.
|
|
122
|
-
*
|
|
123
|
-
* @since 2.0.0
|
|
124
|
-
*/
|
|
125
|
-
var constTrue =
|
|
126
|
-
/*#__PURE__*/
|
|
127
|
-
constant$1(true);
|
|
128
|
-
/**
|
|
129
|
-
* A thunk that returns always `false`.
|
|
130
|
-
*
|
|
131
|
-
* @since 2.0.0
|
|
132
|
-
*/
|
|
133
|
-
var constFalse =
|
|
134
|
-
/*#__PURE__*/
|
|
135
|
-
constant$1(false);
|
|
136
|
-
/**
|
|
137
|
-
* A thunk that returns always `null`.
|
|
138
|
-
*
|
|
139
|
-
* @since 2.0.0
|
|
140
|
-
*/
|
|
141
|
-
var constNull =
|
|
142
|
-
/*#__PURE__*/
|
|
143
|
-
constant$1(null);
|
|
144
|
-
/**
|
|
145
|
-
* A thunk that returns always `undefined`.
|
|
146
|
-
*
|
|
147
|
-
* @since 2.0.0
|
|
148
|
-
*/
|
|
149
|
-
var constUndefined =
|
|
150
|
-
/*#__PURE__*/
|
|
151
|
-
constant$1(undefined);
|
|
152
|
-
/**
|
|
153
|
-
* A thunk that returns always `void`.
|
|
154
|
-
*
|
|
155
|
-
* @since 2.0.0
|
|
156
|
-
*/
|
|
157
|
-
var constVoid = constUndefined;
|
|
158
|
-
/**
|
|
159
|
-
* Flips the order of the arguments of a function of two arguments.
|
|
160
|
-
*
|
|
161
|
-
* @since 2.0.0
|
|
162
|
-
*/
|
|
163
|
-
function flip(f) {
|
|
164
|
-
return function (b, a) { return f(a, b); };
|
|
165
|
-
}
|
|
166
|
-
function flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {
|
|
167
|
-
switch (arguments.length) {
|
|
168
|
-
case 1:
|
|
169
|
-
return ab;
|
|
170
|
-
case 2:
|
|
171
|
-
return function () {
|
|
172
|
-
return bc(ab.apply(this, arguments));
|
|
173
|
-
};
|
|
174
|
-
case 3:
|
|
175
|
-
return function () {
|
|
176
|
-
return cd(bc(ab.apply(this, arguments)));
|
|
177
|
-
};
|
|
178
|
-
case 4:
|
|
179
|
-
return function () {
|
|
180
|
-
return de(cd(bc(ab.apply(this, arguments))));
|
|
181
|
-
};
|
|
182
|
-
case 5:
|
|
183
|
-
return function () {
|
|
184
|
-
return ef(de(cd(bc(ab.apply(this, arguments)))));
|
|
185
|
-
};
|
|
186
|
-
case 6:
|
|
187
|
-
return function () {
|
|
188
|
-
return fg(ef(de(cd(bc(ab.apply(this, arguments))))));
|
|
189
|
-
};
|
|
190
|
-
case 7:
|
|
191
|
-
return function () {
|
|
192
|
-
return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));
|
|
193
|
-
};
|
|
194
|
-
case 8:
|
|
195
|
-
return function () {
|
|
196
|
-
return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));
|
|
197
|
-
};
|
|
198
|
-
case 9:
|
|
199
|
-
return function () {
|
|
200
|
-
return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* @since 2.0.0
|
|
207
|
-
*/
|
|
208
|
-
function tuple$3() {
|
|
209
|
-
var t = [];
|
|
210
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
211
|
-
t[_i] = arguments[_i];
|
|
212
|
-
}
|
|
213
|
-
return t;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* @since 2.0.0
|
|
217
|
-
*/
|
|
218
|
-
function increment(n) {
|
|
219
|
-
return n + 1;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* @since 2.0.0
|
|
223
|
-
*/
|
|
224
|
-
function decrement(n) {
|
|
225
|
-
return n - 1;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* @since 2.0.0
|
|
229
|
-
*/
|
|
230
|
-
function absurd(_) {
|
|
231
|
-
throw new Error('Called `absurd` function which should be uncallable');
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.
|
|
235
|
-
*
|
|
236
|
-
* @example
|
|
237
|
-
* import { tupled } from 'fp-ts/function'
|
|
238
|
-
*
|
|
239
|
-
* const add = tupled((x: number, y: number): number => x + y)
|
|
240
|
-
*
|
|
241
|
-
* assert.strictEqual(add([1, 2]), 3)
|
|
242
|
-
*
|
|
243
|
-
* @since 2.4.0
|
|
244
|
-
*/
|
|
245
|
-
function tupled(f) {
|
|
246
|
-
return function (a) { return f.apply(void 0, a); };
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Inverse function of `tupled`
|
|
250
|
-
*
|
|
251
|
-
* @since 2.4.0
|
|
252
|
-
*/
|
|
253
|
-
function untupled(f) {
|
|
254
|
-
return function () {
|
|
255
|
-
var a = [];
|
|
256
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
257
|
-
a[_i] = arguments[_i];
|
|
258
|
-
}
|
|
259
|
-
return f(a);
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {
|
|
263
|
-
switch (arguments.length) {
|
|
264
|
-
case 1:
|
|
265
|
-
return a;
|
|
266
|
-
case 2:
|
|
267
|
-
return ab(a);
|
|
268
|
-
case 3:
|
|
269
|
-
return bc(ab(a));
|
|
270
|
-
case 4:
|
|
271
|
-
return cd(bc(ab(a)));
|
|
272
|
-
case 5:
|
|
273
|
-
return de(cd(bc(ab(a))));
|
|
274
|
-
case 6:
|
|
275
|
-
return ef(de(cd(bc(ab(a)))));
|
|
276
|
-
case 7:
|
|
277
|
-
return fg(ef(de(cd(bc(ab(a))))));
|
|
278
|
-
case 8:
|
|
279
|
-
return gh(fg(ef(de(cd(bc(ab(a)))))));
|
|
280
|
-
case 9:
|
|
281
|
-
return hi(gh(fg(ef(de(cd(bc(ab(a))))))));
|
|
282
|
-
default:
|
|
283
|
-
var ret = arguments[0];
|
|
284
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
285
|
-
ret = arguments[i](ret);
|
|
286
|
-
}
|
|
287
|
-
return ret;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Type hole simulation
|
|
292
|
-
*
|
|
293
|
-
* @since 2.7.0
|
|
294
|
-
*/
|
|
295
|
-
var hole = absurd;
|
|
296
|
-
/**
|
|
297
|
-
* @since 2.11.0
|
|
298
|
-
*/
|
|
299
|
-
var SK = function (_, b) { return b; };
|
|
300
|
-
/**
|
|
301
|
-
* Use `Predicate` module instead.
|
|
302
|
-
*
|
|
303
|
-
* @since 2.0.0
|
|
304
|
-
* @deprecated
|
|
305
|
-
*/
|
|
306
|
-
function not(predicate) {
|
|
307
|
-
return function (a) { return !predicate(a); };
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Use `Endomorphism` module instead.
|
|
311
|
-
*
|
|
312
|
-
* @category instances
|
|
313
|
-
* @since 2.10.0
|
|
314
|
-
* @deprecated
|
|
315
|
-
*/
|
|
316
|
-
var getEndomorphismMonoid = function () { return ({
|
|
317
|
-
concat: function (first, second) { return flow(first, second); },
|
|
318
|
-
empty: identity
|
|
319
|
-
}); };
|
|
320
|
-
|
|
321
|
-
var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from) {
|
|
322
|
-
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
323
|
-
to[j] = from[i];
|
|
324
|
-
return to;
|
|
325
|
-
};
|
|
326
|
-
// -------------------------------------------------------------------------------------
|
|
327
|
-
// Option
|
|
328
|
-
// -------------------------------------------------------------------------------------
|
|
329
|
-
/** @internal */
|
|
330
|
-
var isNone = function (fa) { return fa._tag === 'None'; };
|
|
331
|
-
/** @internal */
|
|
332
|
-
var isSome = function (fa) { return fa._tag === 'Some'; };
|
|
333
|
-
/** @internal */
|
|
334
|
-
var none = { _tag: 'None' };
|
|
335
|
-
/** @internal */
|
|
336
|
-
var some = function (a) { return ({ _tag: 'Some', value: a }); };
|
|
337
|
-
// -------------------------------------------------------------------------------------
|
|
338
|
-
// Either
|
|
339
|
-
// -------------------------------------------------------------------------------------
|
|
340
|
-
/** @internal */
|
|
341
|
-
var isLeft = function (ma) { return ma._tag === 'Left'; };
|
|
342
|
-
/** @internal */
|
|
343
|
-
var isRight = function (ma) { return ma._tag === 'Right'; };
|
|
344
|
-
/** @internal */
|
|
345
|
-
var left = function (e) { return ({ _tag: 'Left', left: e }); };
|
|
346
|
-
/** @internal */
|
|
347
|
-
var right = function (a) { return ({ _tag: 'Right', right: a }); };
|
|
348
|
-
// -------------------------------------------------------------------------------------
|
|
349
|
-
// ReadonlyNonEmptyArray
|
|
350
|
-
// -------------------------------------------------------------------------------------
|
|
351
|
-
/** @internal */
|
|
352
|
-
var singleton = function (a) { return [a]; };
|
|
353
|
-
/** @internal */
|
|
354
|
-
var isNonEmpty = function (as) { return as.length > 0; };
|
|
355
|
-
/** @internal */
|
|
356
|
-
var head = function (as) { return as[0]; };
|
|
357
|
-
/** @internal */
|
|
358
|
-
var tail = function (as) { return as.slice(1); };
|
|
359
|
-
// -------------------------------------------------------------------------------------
|
|
360
|
-
// empty
|
|
361
|
-
// -------------------------------------------------------------------------------------
|
|
362
|
-
/** @internal */
|
|
363
|
-
var emptyReadonlyArray = [];
|
|
364
|
-
/** @internal */
|
|
365
|
-
var emptyRecord = {};
|
|
366
|
-
// -------------------------------------------------------------------------------------
|
|
367
|
-
// Record
|
|
368
|
-
// -------------------------------------------------------------------------------------
|
|
369
|
-
/** @internal */
|
|
370
|
-
var has = Object.prototype.hasOwnProperty;
|
|
371
|
-
// -------------------------------------------------------------------------------------
|
|
372
|
-
// NonEmptyArray
|
|
373
|
-
// -------------------------------------------------------------------------------------
|
|
374
|
-
/** @internal */
|
|
375
|
-
var fromReadonlyNonEmptyArray = function (as) { return __spreadArray([as[0]], as.slice(1)); };
|
|
376
|
-
|
|
377
|
-
/**
|
|
378
|
-
* A `Magma` is a pair `(A, concat)` in which `A` is a non-empty set and `concat` is a binary operation on `A`
|
|
379
|
-
*
|
|
380
|
-
* See [Semigroup](https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html) for some instances.
|
|
381
|
-
*
|
|
382
|
-
* @since 2.0.0
|
|
383
|
-
*/
|
|
384
|
-
// -------------------------------------------------------------------------------------
|
|
385
|
-
// combinators
|
|
386
|
-
// -------------------------------------------------------------------------------------
|
|
387
|
-
/**
|
|
388
|
-
* The dual of a `Magma`, obtained by swapping the arguments of `concat`.
|
|
389
|
-
*
|
|
390
|
-
* @example
|
|
391
|
-
* import { reverse, concatAll } from 'fp-ts/Magma'
|
|
392
|
-
* import * as N from 'fp-ts/number'
|
|
393
|
-
*
|
|
394
|
-
* const subAll = concatAll(reverse(N.MagmaSub))(0)
|
|
395
|
-
*
|
|
396
|
-
* assert.deepStrictEqual(subAll([1, 2, 3]), 2)
|
|
397
|
-
*
|
|
398
|
-
* @category combinators
|
|
399
|
-
* @since 2.11.0
|
|
400
|
-
*/
|
|
401
|
-
var reverse$2 = function (M) { return ({
|
|
402
|
-
concat: function (first, second) { return M.concat(second, first); }
|
|
403
|
-
}); };
|
|
404
|
-
/**
|
|
405
|
-
* @category combinators
|
|
406
|
-
* @since 2.11.0
|
|
407
|
-
*/
|
|
408
|
-
var filterFirst = function (predicate) { return function (M) { return ({
|
|
409
|
-
concat: function (first, second) { return (predicate(first) ? M.concat(first, second) : second); }
|
|
410
|
-
}); }; };
|
|
411
|
-
/**
|
|
412
|
-
* @category combinators
|
|
413
|
-
* @since 2.11.0
|
|
414
|
-
*/
|
|
415
|
-
var filterSecond = function (predicate) { return function (M) { return ({
|
|
416
|
-
concat: function (first, second) { return (predicate(second) ? M.concat(first, second) : first); }
|
|
417
|
-
}); }; };
|
|
418
|
-
/**
|
|
419
|
-
* @category combinators
|
|
420
|
-
* @since 2.11.0
|
|
421
|
-
*/
|
|
422
|
-
var endo = function (f) { return function (M) { return ({
|
|
423
|
-
concat: function (first, second) { return M.concat(f(first), f(second)); }
|
|
424
|
-
}); }; };
|
|
425
|
-
// -------------------------------------------------------------------------------------
|
|
426
|
-
// utils
|
|
427
|
-
// -------------------------------------------------------------------------------------
|
|
428
|
-
/**
|
|
429
|
-
* Given a sequence of `as`, concat them and return the total.
|
|
430
|
-
*
|
|
431
|
-
* If `as` is empty, return the provided `startWith` value.
|
|
432
|
-
*
|
|
433
|
-
* @example
|
|
434
|
-
* import { concatAll } from 'fp-ts/Magma'
|
|
435
|
-
* import * as N from 'fp-ts/number'
|
|
436
|
-
*
|
|
437
|
-
* const subAll = concatAll(N.MagmaSub)(0)
|
|
438
|
-
*
|
|
439
|
-
* assert.deepStrictEqual(subAll([1, 2, 3]), -6)
|
|
440
|
-
*
|
|
441
|
-
* @since 2.11.0
|
|
442
|
-
*/
|
|
443
|
-
var concatAll$1 = function (M) { return function (startWith) { return function (as) {
|
|
444
|
-
return as.reduce(function (a, acc) { return M.concat(a, acc); }, startWith);
|
|
445
|
-
}; }; };
|
|
446
|
-
|
|
447
|
-
// -------------------------------------------------------------------------------------
|
|
448
|
-
// constructors
|
|
449
|
-
// -------------------------------------------------------------------------------------
|
|
450
|
-
/**
|
|
451
|
-
* @category constructors
|
|
452
|
-
* @since 2.0.0
|
|
453
|
-
*/
|
|
454
|
-
var fromEquals = function (equals) { return ({
|
|
455
|
-
equals: function (x, y) { return x === y || equals(x, y); }
|
|
456
|
-
}); };
|
|
457
|
-
// -------------------------------------------------------------------------------------
|
|
458
|
-
// combinators
|
|
459
|
-
// -------------------------------------------------------------------------------------
|
|
460
|
-
/**
|
|
461
|
-
* @category combinators
|
|
462
|
-
* @since 2.10.0
|
|
463
|
-
*/
|
|
464
|
-
var struct$1 = function (eqs) {
|
|
465
|
-
return fromEquals(function (first, second) {
|
|
466
|
-
for (var key in eqs) {
|
|
467
|
-
if (!eqs[key].equals(first[key], second[key])) {
|
|
468
|
-
return false;
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
return true;
|
|
472
|
-
});
|
|
473
|
-
};
|
|
474
|
-
/**
|
|
475
|
-
* Given a tuple of `Eq`s returns a `Eq` for the tuple
|
|
476
|
-
*
|
|
477
|
-
* @example
|
|
478
|
-
* import { tuple } from 'fp-ts/Eq'
|
|
479
|
-
* import * as S from 'fp-ts/string'
|
|
480
|
-
* import * as N from 'fp-ts/number'
|
|
481
|
-
* import * as B from 'fp-ts/boolean'
|
|
482
|
-
*
|
|
483
|
-
* const E = tuple(S.Eq, N.Eq, B.Eq)
|
|
484
|
-
* assert.strictEqual(E.equals(['a', 1, true], ['a', 1, true]), true)
|
|
485
|
-
* assert.strictEqual(E.equals(['a', 1, true], ['b', 1, true]), false)
|
|
486
|
-
* assert.strictEqual(E.equals(['a', 1, true], ['a', 2, true]), false)
|
|
487
|
-
* assert.strictEqual(E.equals(['a', 1, true], ['a', 1, false]), false)
|
|
488
|
-
*
|
|
489
|
-
* @category combinators
|
|
490
|
-
* @since 2.10.0
|
|
491
|
-
*/
|
|
492
|
-
var tuple$2 = function () {
|
|
493
|
-
var eqs = [];
|
|
494
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
495
|
-
eqs[_i] = arguments[_i];
|
|
496
|
-
}
|
|
497
|
-
return fromEquals(function (first, second) { return eqs.every(function (E, i) { return E.equals(first[i], second[i]); }); });
|
|
498
|
-
};
|
|
499
|
-
// -------------------------------------------------------------------------------------
|
|
500
|
-
// non-pipeables
|
|
501
|
-
// -------------------------------------------------------------------------------------
|
|
502
|
-
/* istanbul ignore next */
|
|
503
|
-
var contramap_$1 = function (fa, f) { return pipe(fa, contramap$1(f)); };
|
|
504
|
-
// -------------------------------------------------------------------------------------
|
|
505
|
-
// type class members
|
|
506
|
-
// -------------------------------------------------------------------------------------
|
|
507
|
-
/**
|
|
508
|
-
* @category Contravariant
|
|
509
|
-
* @since 2.0.0
|
|
510
|
-
*/
|
|
511
|
-
var contramap$1 = function (f) { return function (fa) {
|
|
512
|
-
return fromEquals(function (x, y) { return fa.equals(f(x), f(y)); });
|
|
513
|
-
}; };
|
|
514
|
-
// -------------------------------------------------------------------------------------
|
|
515
|
-
// instances
|
|
516
|
-
// -------------------------------------------------------------------------------------
|
|
517
|
-
/**
|
|
518
|
-
* @category instances
|
|
519
|
-
* @since 2.0.0
|
|
520
|
-
*/
|
|
521
|
-
var URI$1 = 'Eq';
|
|
522
|
-
/**
|
|
523
|
-
* @category instances
|
|
524
|
-
* @since 2.5.0
|
|
525
|
-
*/
|
|
526
|
-
var eqStrict = {
|
|
527
|
-
equals: function (a, b) { return a === b; }
|
|
528
|
-
};
|
|
529
|
-
var empty = {
|
|
530
|
-
equals: function () { return true; }
|
|
531
|
-
};
|
|
532
|
-
/**
|
|
533
|
-
* @category instances
|
|
534
|
-
* @since 2.10.0
|
|
535
|
-
*/
|
|
536
|
-
var getSemigroup$1 = function () { return ({
|
|
537
|
-
concat: function (x, y) { return fromEquals(function (a, b) { return x.equals(a, b) && y.equals(a, b); }); }
|
|
538
|
-
}); };
|
|
539
|
-
/**
|
|
540
|
-
* @category instances
|
|
541
|
-
* @since 2.6.0
|
|
542
|
-
*/
|
|
543
|
-
var getMonoid$1 = function () { return ({
|
|
544
|
-
concat: getSemigroup$1().concat,
|
|
545
|
-
empty: empty
|
|
546
|
-
}); };
|
|
547
|
-
/**
|
|
548
|
-
* @category instances
|
|
549
|
-
* @since 2.7.0
|
|
550
|
-
*/
|
|
551
|
-
var Contravariant$1 = {
|
|
552
|
-
URI: URI$1,
|
|
553
|
-
contramap: contramap_$1
|
|
554
|
-
};
|
|
555
|
-
// -------------------------------------------------------------------------------------
|
|
556
|
-
// deprecated
|
|
557
|
-
// -------------------------------------------------------------------------------------
|
|
558
|
-
/**
|
|
559
|
-
* Use [`tuple`](#tuple) instead.
|
|
560
|
-
*
|
|
561
|
-
* @category combinators
|
|
562
|
-
* @since 2.0.0
|
|
563
|
-
* @deprecated
|
|
564
|
-
*/
|
|
565
|
-
var getTupleEq = tuple$2;
|
|
566
|
-
/**
|
|
567
|
-
* Use [`struct`](#struct) instead.
|
|
568
|
-
*
|
|
569
|
-
* @category combinators
|
|
570
|
-
* @since 2.0.0
|
|
571
|
-
* @deprecated
|
|
572
|
-
*/
|
|
573
|
-
var getStructEq = struct$1;
|
|
574
|
-
/**
|
|
575
|
-
* Use [`eqStrict`](#eqstrict) instead
|
|
576
|
-
*
|
|
577
|
-
* @since 2.0.0
|
|
578
|
-
* @deprecated
|
|
579
|
-
*/
|
|
580
|
-
var strictEqual = eqStrict.equals;
|
|
581
|
-
/**
|
|
582
|
-
* Use small, specific instances instead.
|
|
583
|
-
*
|
|
584
|
-
* @category instances
|
|
585
|
-
* @since 2.0.0
|
|
586
|
-
* @deprecated
|
|
587
|
-
*/
|
|
588
|
-
var eq = Contravariant$1;
|
|
589
|
-
/**
|
|
590
|
-
* Use [`Eq`](./boolean.ts.html#eq) instead.
|
|
591
|
-
*
|
|
592
|
-
* @category instances
|
|
593
|
-
* @since 2.0.0
|
|
594
|
-
* @deprecated
|
|
595
|
-
*/
|
|
596
|
-
var eqBoolean = eqStrict;
|
|
597
|
-
/**
|
|
598
|
-
* Use [`Eq`](./string.ts.html#eq) instead.
|
|
599
|
-
*
|
|
600
|
-
* @category instances
|
|
601
|
-
* @since 2.0.0
|
|
602
|
-
* @deprecated
|
|
603
|
-
*/
|
|
604
|
-
var eqString = eqStrict;
|
|
605
|
-
/**
|
|
606
|
-
* Use [`Eq`](./number.ts.html#eq) instead.
|
|
607
|
-
*
|
|
608
|
-
* @category instances
|
|
609
|
-
* @since 2.0.0
|
|
610
|
-
* @deprecated
|
|
611
|
-
*/
|
|
612
|
-
var eqNumber = eqStrict;
|
|
613
|
-
/**
|
|
614
|
-
* Use [`Eq`](./Date.ts.html#eq) instead.
|
|
615
|
-
*
|
|
616
|
-
* @category instances
|
|
617
|
-
* @since 2.0.0
|
|
618
|
-
* @deprecated
|
|
619
|
-
*/
|
|
620
|
-
var eqDate = {
|
|
621
|
-
equals: function (first, second) { return first.valueOf() === second.valueOf(); }
|
|
622
|
-
};
|
|
623
|
-
|
|
624
|
-
// -------------------------------------------------------------------------------------
|
|
625
|
-
// defaults
|
|
626
|
-
// -------------------------------------------------------------------------------------
|
|
627
|
-
/**
|
|
628
|
-
* @category defaults
|
|
629
|
-
* @since 2.10.0
|
|
630
|
-
*/
|
|
631
|
-
var equalsDefault = function (compare) { return function (first, second) {
|
|
632
|
-
return first === second || compare(first, second) === 0;
|
|
633
|
-
}; };
|
|
634
|
-
// -------------------------------------------------------------------------------------
|
|
635
|
-
// constructors
|
|
636
|
-
// -------------------------------------------------------------------------------------
|
|
637
|
-
/**
|
|
638
|
-
* @category constructors
|
|
639
|
-
* @since 2.0.0
|
|
640
|
-
*/
|
|
641
|
-
var fromCompare = function (compare) { return ({
|
|
642
|
-
equals: equalsDefault(compare),
|
|
643
|
-
compare: function (first, second) { return (first === second ? 0 : compare(first, second)); }
|
|
644
|
-
}); };
|
|
645
|
-
// -------------------------------------------------------------------------------------
|
|
646
|
-
// combinators
|
|
647
|
-
// -------------------------------------------------------------------------------------
|
|
648
|
-
/**
|
|
649
|
-
* Given a tuple of `Ord`s returns an `Ord` for the tuple.
|
|
650
|
-
*
|
|
651
|
-
* @example
|
|
652
|
-
* import { tuple } from 'fp-ts/Ord'
|
|
653
|
-
* import * as B from 'fp-ts/boolean'
|
|
654
|
-
* import * as S from 'fp-ts/string'
|
|
655
|
-
* import * as N from 'fp-ts/number'
|
|
656
|
-
*
|
|
657
|
-
* const O = tuple(S.Ord, N.Ord, B.Ord)
|
|
658
|
-
* assert.strictEqual(O.compare(['a', 1, true], ['b', 2, true]), -1)
|
|
659
|
-
* assert.strictEqual(O.compare(['a', 1, true], ['a', 2, true]), -1)
|
|
660
|
-
* assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1)
|
|
661
|
-
*
|
|
662
|
-
* @category combinators
|
|
663
|
-
* @since 2.10.0
|
|
664
|
-
*/
|
|
665
|
-
var tuple$1 = function () {
|
|
666
|
-
var ords = [];
|
|
667
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
668
|
-
ords[_i] = arguments[_i];
|
|
669
|
-
}
|
|
670
|
-
return fromCompare(function (first, second) {
|
|
671
|
-
var i = 0;
|
|
672
|
-
for (; i < ords.length - 1; i++) {
|
|
673
|
-
var r = ords[i].compare(first[i], second[i]);
|
|
674
|
-
if (r !== 0) {
|
|
675
|
-
return r;
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
return ords[i].compare(first[i], second[i]);
|
|
679
|
-
});
|
|
680
|
-
};
|
|
681
|
-
/**
|
|
682
|
-
* @category combinators
|
|
683
|
-
* @since 2.10.0
|
|
684
|
-
*/
|
|
685
|
-
var reverse$1 = function (O) { return fromCompare(function (first, second) { return O.compare(second, first); }); };
|
|
686
|
-
// -------------------------------------------------------------------------------------
|
|
687
|
-
// non-pipeables
|
|
688
|
-
// -------------------------------------------------------------------------------------
|
|
689
|
-
/* istanbul ignore next */
|
|
690
|
-
var contramap_ = function (fa, f) { return pipe(fa, contramap(f)); };
|
|
691
|
-
// -------------------------------------------------------------------------------------
|
|
692
|
-
// type class members
|
|
693
|
-
// -------------------------------------------------------------------------------------
|
|
694
|
-
/**
|
|
695
|
-
* @category Contravariant
|
|
696
|
-
* @since 2.0.0
|
|
697
|
-
*/
|
|
698
|
-
var contramap = function (f) { return function (fa) {
|
|
699
|
-
return fromCompare(function (first, second) { return fa.compare(f(first), f(second)); });
|
|
700
|
-
}; };
|
|
701
|
-
// -------------------------------------------------------------------------------------
|
|
702
|
-
// instances
|
|
703
|
-
// -------------------------------------------------------------------------------------
|
|
704
|
-
/**
|
|
705
|
-
* @category instances
|
|
706
|
-
* @since 2.0.0
|
|
707
|
-
*/
|
|
708
|
-
var URI = 'Ord';
|
|
709
|
-
/**
|
|
710
|
-
* @category instances
|
|
711
|
-
* @since 2.0.0
|
|
712
|
-
*/
|
|
713
|
-
var getSemigroup = function () { return ({
|
|
714
|
-
concat: function (first, second) {
|
|
715
|
-
return fromCompare(function (a, b) {
|
|
716
|
-
var ox = first.compare(a, b);
|
|
717
|
-
return ox !== 0 ? ox : second.compare(a, b);
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
}); };
|
|
721
|
-
/**
|
|
722
|
-
* Returns a `Monoid` such that:
|
|
723
|
-
*
|
|
724
|
-
* - its `concat(ord1, ord2)` operation will order first by `ord1`, and then by `ord2`
|
|
725
|
-
* - its `empty` value is an `Ord` that always considers compared elements equal
|
|
726
|
-
*
|
|
727
|
-
* @example
|
|
728
|
-
* import { sort } from 'fp-ts/Array'
|
|
729
|
-
* import { contramap, reverse, getMonoid } from 'fp-ts/Ord'
|
|
730
|
-
* import * as S from 'fp-ts/string'
|
|
731
|
-
* import * as B from 'fp-ts/boolean'
|
|
732
|
-
* import { pipe } from 'fp-ts/function'
|
|
733
|
-
* import { concatAll } from 'fp-ts/Monoid'
|
|
734
|
-
* import * as N from 'fp-ts/number'
|
|
735
|
-
*
|
|
736
|
-
* interface User {
|
|
737
|
-
* readonly id: number
|
|
738
|
-
* readonly name: string
|
|
739
|
-
* readonly age: number
|
|
740
|
-
* readonly rememberMe: boolean
|
|
741
|
-
* }
|
|
742
|
-
*
|
|
743
|
-
* const byName = pipe(
|
|
744
|
-
* S.Ord,
|
|
745
|
-
* contramap((p: User) => p.name)
|
|
746
|
-
* )
|
|
747
|
-
*
|
|
748
|
-
* const byAge = pipe(
|
|
749
|
-
* N.Ord,
|
|
750
|
-
* contramap((p: User) => p.age)
|
|
751
|
-
* )
|
|
752
|
-
*
|
|
753
|
-
* const byRememberMe = pipe(
|
|
754
|
-
* B.Ord,
|
|
755
|
-
* contramap((p: User) => p.rememberMe)
|
|
756
|
-
* )
|
|
757
|
-
*
|
|
758
|
-
* const M = getMonoid<User>()
|
|
759
|
-
*
|
|
760
|
-
* const users: Array<User> = [
|
|
761
|
-
* { id: 1, name: 'Guido', age: 47, rememberMe: false },
|
|
762
|
-
* { id: 2, name: 'Guido', age: 46, rememberMe: true },
|
|
763
|
-
* { id: 3, name: 'Giulio', age: 44, rememberMe: false },
|
|
764
|
-
* { id: 4, name: 'Giulio', age: 44, rememberMe: true }
|
|
765
|
-
* ]
|
|
766
|
-
*
|
|
767
|
-
* // sort by name, then by age, then by `rememberMe`
|
|
768
|
-
* const O1 = concatAll(M)([byName, byAge, byRememberMe])
|
|
769
|
-
* assert.deepStrictEqual(sort(O1)(users), [
|
|
770
|
-
* { id: 3, name: 'Giulio', age: 44, rememberMe: false },
|
|
771
|
-
* { id: 4, name: 'Giulio', age: 44, rememberMe: true },
|
|
772
|
-
* { id: 2, name: 'Guido', age: 46, rememberMe: true },
|
|
773
|
-
* { id: 1, name: 'Guido', age: 47, rememberMe: false }
|
|
774
|
-
* ])
|
|
775
|
-
*
|
|
776
|
-
* // now `rememberMe = true` first, then by name, then by age
|
|
777
|
-
* const O2 = concatAll(M)([reverse(byRememberMe), byName, byAge])
|
|
778
|
-
* assert.deepStrictEqual(sort(O2)(users), [
|
|
779
|
-
* { id: 4, name: 'Giulio', age: 44, rememberMe: true },
|
|
780
|
-
* { id: 2, name: 'Guido', age: 46, rememberMe: true },
|
|
781
|
-
* { id: 3, name: 'Giulio', age: 44, rememberMe: false },
|
|
782
|
-
* { id: 1, name: 'Guido', age: 47, rememberMe: false }
|
|
783
|
-
* ])
|
|
784
|
-
*
|
|
785
|
-
* @category instances
|
|
786
|
-
* @since 2.4.0
|
|
787
|
-
*/
|
|
788
|
-
var getMonoid = function () { return ({
|
|
789
|
-
concat: getSemigroup().concat,
|
|
790
|
-
empty: fromCompare(function () { return 0; })
|
|
791
|
-
}); };
|
|
792
|
-
/**
|
|
793
|
-
* @category instances
|
|
794
|
-
* @since 2.7.0
|
|
795
|
-
*/
|
|
796
|
-
var Contravariant = {
|
|
797
|
-
URI: URI,
|
|
798
|
-
contramap: contramap_
|
|
799
|
-
};
|
|
800
|
-
// -------------------------------------------------------------------------------------
|
|
801
|
-
// utils
|
|
802
|
-
// -------------------------------------------------------------------------------------
|
|
803
|
-
/**
|
|
804
|
-
* @since 2.11.0
|
|
805
|
-
*/
|
|
806
|
-
var trivial = {
|
|
807
|
-
equals: constTrue,
|
|
808
|
-
compare:
|
|
809
|
-
/*#__PURE__*/
|
|
810
|
-
constant$1(0)
|
|
811
|
-
};
|
|
812
|
-
/**
|
|
813
|
-
* @since 2.11.0
|
|
814
|
-
*/
|
|
815
|
-
var equals = function (O) { return function (second) { return function (first) {
|
|
816
|
-
return first === second || O.compare(first, second) === 0;
|
|
817
|
-
}; }; };
|
|
818
|
-
// TODO: curry in v3
|
|
819
|
-
/**
|
|
820
|
-
* Test whether one value is _strictly less than_ another
|
|
821
|
-
*
|
|
822
|
-
* @since 2.0.0
|
|
823
|
-
*/
|
|
824
|
-
var lt = function (O) { return function (first, second) { return O.compare(first, second) === -1; }; };
|
|
825
|
-
// TODO: curry in v3
|
|
826
|
-
/**
|
|
827
|
-
* Test whether one value is _strictly greater than_ another
|
|
828
|
-
*
|
|
829
|
-
* @since 2.0.0
|
|
830
|
-
*/
|
|
831
|
-
var gt = function (O) { return function (first, second) { return O.compare(first, second) === 1; }; };
|
|
832
|
-
// TODO: curry in v3
|
|
833
|
-
/**
|
|
834
|
-
* Test whether one value is _non-strictly less than_ another
|
|
835
|
-
*
|
|
836
|
-
* @since 2.0.0
|
|
837
|
-
*/
|
|
838
|
-
var leq = function (O) { return function (first, second) { return O.compare(first, second) !== 1; }; };
|
|
839
|
-
// TODO: curry in v3
|
|
840
|
-
/**
|
|
841
|
-
* Test whether one value is _non-strictly greater than_ another
|
|
842
|
-
*
|
|
843
|
-
* @since 2.0.0
|
|
844
|
-
*/
|
|
845
|
-
var geq = function (O) { return function (first, second) { return O.compare(first, second) !== -1; }; };
|
|
846
|
-
// TODO: curry in v3
|
|
847
|
-
/**
|
|
848
|
-
* Take the minimum of two values. If they are considered equal, the first argument is chosen
|
|
849
|
-
*
|
|
850
|
-
* @since 2.0.0
|
|
851
|
-
*/
|
|
852
|
-
var min$1 = function (O) { return function (first, second) {
|
|
853
|
-
return first === second || O.compare(first, second) < 1 ? first : second;
|
|
854
|
-
}; };
|
|
855
|
-
// TODO: curry in v3
|
|
856
|
-
/**
|
|
857
|
-
* Take the maximum of two values. If they are considered equal, the first argument is chosen
|
|
858
|
-
*
|
|
859
|
-
* @since 2.0.0
|
|
860
|
-
*/
|
|
861
|
-
var max$1 = function (O) { return function (first, second) {
|
|
862
|
-
return first === second || O.compare(first, second) > -1 ? first : second;
|
|
863
|
-
}; };
|
|
864
|
-
/**
|
|
865
|
-
* Clamp a value between a minimum and a maximum
|
|
866
|
-
*
|
|
867
|
-
* @since 2.0.0
|
|
868
|
-
*/
|
|
869
|
-
var clamp = function (O) {
|
|
870
|
-
var minO = min$1(O);
|
|
871
|
-
var maxO = max$1(O);
|
|
872
|
-
return function (low, hi) { return function (a) { return maxO(minO(a, hi), low); }; };
|
|
873
|
-
};
|
|
874
|
-
/**
|
|
875
|
-
* Test whether a value is between a minimum and a maximum (inclusive)
|
|
876
|
-
*
|
|
877
|
-
* @since 2.0.0
|
|
878
|
-
*/
|
|
879
|
-
var between = function (O) {
|
|
880
|
-
var ltO = lt(O);
|
|
881
|
-
var gtO = gt(O);
|
|
882
|
-
return function (low, hi) { return function (a) { return (ltO(a, low) || gtO(a, hi) ? false : true); }; };
|
|
883
|
-
};
|
|
884
|
-
// -------------------------------------------------------------------------------------
|
|
885
|
-
// deprecated
|
|
886
|
-
// -------------------------------------------------------------------------------------
|
|
887
|
-
// tslint:disable: deprecation
|
|
888
|
-
/**
|
|
889
|
-
* Use [`tuple`](#tuple) instead.
|
|
890
|
-
*
|
|
891
|
-
* @category combinators
|
|
892
|
-
* @since 2.0.0
|
|
893
|
-
* @deprecated
|
|
894
|
-
*/
|
|
895
|
-
var getTupleOrd = tuple$1;
|
|
896
|
-
/**
|
|
897
|
-
* Use [`reverse`](#reverse) instead.
|
|
898
|
-
*
|
|
899
|
-
* @category combinators
|
|
900
|
-
* @since 2.0.0
|
|
901
|
-
* @deprecated
|
|
902
|
-
*/
|
|
903
|
-
var getDualOrd = reverse$1;
|
|
904
|
-
/**
|
|
905
|
-
* Use [`Contravariant`](#contravariant) instead.
|
|
906
|
-
*
|
|
907
|
-
* @category instances
|
|
908
|
-
* @since 2.0.0
|
|
909
|
-
* @deprecated
|
|
910
|
-
*/
|
|
911
|
-
var ord = Contravariant;
|
|
912
|
-
// default compare for primitive types
|
|
913
|
-
function compare(first, second) {
|
|
914
|
-
return first < second ? -1 : first > second ? 1 : 0;
|
|
915
|
-
}
|
|
916
|
-
var strictOrd = {
|
|
917
|
-
equals: eqStrict.equals,
|
|
918
|
-
compare: compare
|
|
919
|
-
};
|
|
920
|
-
/**
|
|
921
|
-
* Use [`Ord`](./boolean.ts.html#ord) instead.
|
|
922
|
-
*
|
|
923
|
-
* @category instances
|
|
924
|
-
* @since 2.0.0
|
|
925
|
-
* @deprecated
|
|
926
|
-
*/
|
|
927
|
-
var ordBoolean = strictOrd;
|
|
928
|
-
/**
|
|
929
|
-
* Use [`Ord`](./string.ts.html#ord) instead.
|
|
930
|
-
*
|
|
931
|
-
* @category instances
|
|
932
|
-
* @since 2.0.0
|
|
933
|
-
* @deprecated
|
|
934
|
-
*/
|
|
935
|
-
var ordString = strictOrd;
|
|
936
|
-
/**
|
|
937
|
-
* Use [`Ord`](./number.ts.html#ord) instead.
|
|
938
|
-
*
|
|
939
|
-
* @category instances
|
|
940
|
-
* @since 2.0.0
|
|
941
|
-
* @deprecated
|
|
942
|
-
*/
|
|
943
|
-
var ordNumber = strictOrd;
|
|
944
|
-
/**
|
|
945
|
-
* Use [`Ord`](./Date.ts.html#ord) instead.
|
|
946
|
-
*
|
|
947
|
-
* @category instances
|
|
948
|
-
* @since 2.0.0
|
|
949
|
-
* @deprecated
|
|
950
|
-
*/
|
|
951
|
-
var ordDate =
|
|
952
|
-
/*#__PURE__*/
|
|
953
|
-
pipe(ordNumber,
|
|
954
|
-
/*#__PURE__*/
|
|
955
|
-
contramap(function (date) { return date.valueOf(); }));
|
|
956
|
-
|
|
957
|
-
/**
|
|
958
|
-
* If a type `A` can form a `Semigroup` it has an **associative** binary operation.
|
|
959
|
-
*
|
|
960
|
-
* ```ts
|
|
961
|
-
* interface Semigroup<A> {
|
|
962
|
-
* readonly concat: (x: A, y: A) => A
|
|
963
|
-
* }
|
|
964
|
-
* ```
|
|
965
|
-
*
|
|
966
|
-
* Associativity means the following equality must hold for any choice of `x`, `y`, and `z`.
|
|
967
|
-
*
|
|
968
|
-
* ```ts
|
|
969
|
-
* concat(x, concat(y, z)) = concat(concat(x, y), z)
|
|
970
|
-
* ```
|
|
971
|
-
*
|
|
972
|
-
* A common example of a semigroup is the type `string` with the operation `+`.
|
|
973
|
-
*
|
|
974
|
-
* ```ts
|
|
975
|
-
* import { Semigroup } from 'fp-ts/Semigroup'
|
|
976
|
-
*
|
|
977
|
-
* const semigroupString: Semigroup<string> = {
|
|
978
|
-
* concat: (x, y) => x + y
|
|
979
|
-
* }
|
|
980
|
-
*
|
|
981
|
-
* const x = 'x'
|
|
982
|
-
* const y = 'y'
|
|
983
|
-
* const z = 'z'
|
|
984
|
-
*
|
|
985
|
-
* semigroupString.concat(x, y) // 'xy'
|
|
986
|
-
*
|
|
987
|
-
* semigroupString.concat(x, semigroupString.concat(y, z)) // 'xyz'
|
|
988
|
-
*
|
|
989
|
-
* semigroupString.concat(semigroupString.concat(x, y), z) // 'xyz'
|
|
990
|
-
* ```
|
|
991
|
-
*
|
|
992
|
-
* *Adapted from https://typelevel.org/cats*
|
|
993
|
-
*
|
|
994
|
-
* @since 2.0.0
|
|
995
|
-
*/
|
|
996
|
-
// -------------------------------------------------------------------------------------
|
|
997
|
-
// constructors
|
|
998
|
-
// -------------------------------------------------------------------------------------
|
|
999
|
-
/**
|
|
1000
|
-
* Get a semigroup where `concat` will return the minimum, based on the provided order.
|
|
1001
|
-
*
|
|
1002
|
-
* @example
|
|
1003
|
-
* import * as N from 'fp-ts/number'
|
|
1004
|
-
* import * as S from 'fp-ts/Semigroup'
|
|
1005
|
-
*
|
|
1006
|
-
* const S1 = S.min(N.Ord)
|
|
1007
|
-
*
|
|
1008
|
-
* assert.deepStrictEqual(S1.concat(1, 2), 1)
|
|
1009
|
-
*
|
|
1010
|
-
* @category constructors
|
|
1011
|
-
* @since 2.10.0
|
|
1012
|
-
*/
|
|
1013
|
-
var min = function (O) { return ({
|
|
1014
|
-
concat: min$1(O)
|
|
1015
|
-
}); };
|
|
1016
|
-
/**
|
|
1017
|
-
* Get a semigroup where `concat` will return the maximum, based on the provided order.
|
|
1018
|
-
*
|
|
1019
|
-
* @example
|
|
1020
|
-
* import * as N from 'fp-ts/number'
|
|
1021
|
-
* import * as S from 'fp-ts/Semigroup'
|
|
1022
|
-
*
|
|
1023
|
-
* const S1 = S.max(N.Ord)
|
|
1024
|
-
*
|
|
1025
|
-
* assert.deepStrictEqual(S1.concat(1, 2), 2)
|
|
1026
|
-
*
|
|
1027
|
-
* @category constructors
|
|
1028
|
-
* @since 2.10.0
|
|
1029
|
-
*/
|
|
1030
|
-
var max = function (O) { return ({
|
|
1031
|
-
concat: max$1(O)
|
|
1032
|
-
}); };
|
|
1033
|
-
/**
|
|
1034
|
-
* @category constructors
|
|
1035
|
-
* @since 2.10.0
|
|
1036
|
-
*/
|
|
1037
|
-
var constant = function (a) { return ({
|
|
1038
|
-
concat: function () { return a; }
|
|
1039
|
-
}); };
|
|
1040
|
-
// -------------------------------------------------------------------------------------
|
|
1041
|
-
// combinators
|
|
1042
|
-
// -------------------------------------------------------------------------------------
|
|
1043
|
-
/**
|
|
1044
|
-
* The dual of a `Semigroup`, obtained by swapping the arguments of `concat`.
|
|
1045
|
-
*
|
|
1046
|
-
* @example
|
|
1047
|
-
* import { reverse } from 'fp-ts/Semigroup'
|
|
1048
|
-
* import * as S from 'fp-ts/string'
|
|
1049
|
-
*
|
|
1050
|
-
* assert.deepStrictEqual(reverse(S.Semigroup).concat('a', 'b'), 'ba')
|
|
1051
|
-
*
|
|
1052
|
-
* @category combinators
|
|
1053
|
-
* @since 2.10.0
|
|
1054
|
-
*/
|
|
1055
|
-
var reverse = reverse$2;
|
|
1056
|
-
/**
|
|
1057
|
-
* Given a struct of semigroups returns a semigroup for the struct.
|
|
1058
|
-
*
|
|
1059
|
-
* @example
|
|
1060
|
-
* import { struct } from 'fp-ts/Semigroup'
|
|
1061
|
-
* import * as N from 'fp-ts/number'
|
|
1062
|
-
*
|
|
1063
|
-
* interface Point {
|
|
1064
|
-
* readonly x: number
|
|
1065
|
-
* readonly y: number
|
|
1066
|
-
* }
|
|
1067
|
-
*
|
|
1068
|
-
* const S = struct<Point>({
|
|
1069
|
-
* x: N.SemigroupSum,
|
|
1070
|
-
* y: N.SemigroupSum
|
|
1071
|
-
* })
|
|
1072
|
-
*
|
|
1073
|
-
* assert.deepStrictEqual(S.concat({ x: 1, y: 2 }, { x: 3, y: 4 }), { x: 4, y: 6 })
|
|
1074
|
-
*
|
|
1075
|
-
* @category combinators
|
|
1076
|
-
* @since 2.10.0
|
|
1077
|
-
*/
|
|
1078
|
-
var struct = function (semigroups) { return ({
|
|
1079
|
-
concat: function (first, second) {
|
|
1080
|
-
var r = {};
|
|
1081
|
-
for (var k in semigroups) {
|
|
1082
|
-
if (has.call(semigroups, k)) {
|
|
1083
|
-
r[k] = semigroups[k].concat(first[k], second[k]);
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
|
-
return r;
|
|
1087
|
-
}
|
|
1088
|
-
}); };
|
|
1089
|
-
/**
|
|
1090
|
-
* Given a tuple of semigroups returns a semigroup for the tuple.
|
|
1091
|
-
*
|
|
1092
|
-
* @example
|
|
1093
|
-
* import { tuple } from 'fp-ts/Semigroup'
|
|
1094
|
-
* import * as B from 'fp-ts/boolean'
|
|
1095
|
-
* import * as N from 'fp-ts/number'
|
|
1096
|
-
* import * as S from 'fp-ts/string'
|
|
1097
|
-
*
|
|
1098
|
-
* const S1 = tuple(S.Semigroup, N.SemigroupSum)
|
|
1099
|
-
* assert.deepStrictEqual(S1.concat(['a', 1], ['b', 2]), ['ab', 3])
|
|
1100
|
-
*
|
|
1101
|
-
* const S2 = tuple(S.Semigroup, N.SemigroupSum, B.SemigroupAll)
|
|
1102
|
-
* assert.deepStrictEqual(S2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false])
|
|
1103
|
-
*
|
|
1104
|
-
* @category combinators
|
|
1105
|
-
* @since 2.10.0
|
|
1106
|
-
*/
|
|
1107
|
-
var tuple = function () {
|
|
1108
|
-
var semigroups = [];
|
|
1109
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1110
|
-
semigroups[_i] = arguments[_i];
|
|
1111
|
-
}
|
|
1112
|
-
return ({
|
|
1113
|
-
concat: function (first, second) { return semigroups.map(function (s, i) { return s.concat(first[i], second[i]); }); }
|
|
1114
|
-
});
|
|
1115
|
-
};
|
|
1116
|
-
/**
|
|
1117
|
-
* Between each pair of elements insert `middle`.
|
|
1118
|
-
*
|
|
1119
|
-
* @example
|
|
1120
|
-
* import { intercalate } from 'fp-ts/Semigroup'
|
|
1121
|
-
* import * as S from 'fp-ts/string'
|
|
1122
|
-
* import { pipe } from 'fp-ts/function'
|
|
1123
|
-
*
|
|
1124
|
-
* const S1 = pipe(S.Semigroup, intercalate(' + '))
|
|
1125
|
-
*
|
|
1126
|
-
* assert.strictEqual(S1.concat('a', 'b'), 'a + b')
|
|
1127
|
-
*
|
|
1128
|
-
* @category combinators
|
|
1129
|
-
* @since 2.10.0
|
|
1130
|
-
*/
|
|
1131
|
-
var intercalate = function (middle) { return function (S) { return ({
|
|
1132
|
-
concat: function (x, y) { return S.concat(x, S.concat(middle, y)); }
|
|
1133
|
-
}); }; };
|
|
1134
|
-
// -------------------------------------------------------------------------------------
|
|
1135
|
-
// instances
|
|
1136
|
-
// -------------------------------------------------------------------------------------
|
|
1137
|
-
/**
|
|
1138
|
-
* Always return the first argument.
|
|
1139
|
-
*
|
|
1140
|
-
* @example
|
|
1141
|
-
* import * as S from 'fp-ts/Semigroup'
|
|
1142
|
-
*
|
|
1143
|
-
* assert.deepStrictEqual(S.first<number>().concat(1, 2), 1)
|
|
1144
|
-
*
|
|
1145
|
-
* @category instances
|
|
1146
|
-
* @since 2.10.0
|
|
1147
|
-
*/
|
|
1148
|
-
var first = function () { return ({ concat: identity }); };
|
|
1149
|
-
/**
|
|
1150
|
-
* Always return the last argument.
|
|
1151
|
-
*
|
|
1152
|
-
* @example
|
|
1153
|
-
* import * as S from 'fp-ts/Semigroup'
|
|
1154
|
-
*
|
|
1155
|
-
* assert.deepStrictEqual(S.last<number>().concat(1, 2), 2)
|
|
1156
|
-
*
|
|
1157
|
-
* @category instances
|
|
1158
|
-
* @since 2.10.0
|
|
1159
|
-
*/
|
|
1160
|
-
var last = function () { return ({ concat: function (_, y) { return y; } }); };
|
|
1161
|
-
// -------------------------------------------------------------------------------------
|
|
1162
|
-
// utils
|
|
1163
|
-
// -------------------------------------------------------------------------------------
|
|
1164
|
-
/**
|
|
1165
|
-
* Given a sequence of `as`, concat them and return the total.
|
|
1166
|
-
*
|
|
1167
|
-
* If `as` is empty, return the provided `startWith` value.
|
|
1168
|
-
*
|
|
1169
|
-
* @example
|
|
1170
|
-
* import { concatAll } from 'fp-ts/Semigroup'
|
|
1171
|
-
* import * as N from 'fp-ts/number'
|
|
1172
|
-
*
|
|
1173
|
-
* const sum = concatAll(N.SemigroupSum)(0)
|
|
1174
|
-
*
|
|
1175
|
-
* assert.deepStrictEqual(sum([1, 2, 3]), 6)
|
|
1176
|
-
* assert.deepStrictEqual(sum([]), 0)
|
|
1177
|
-
*
|
|
1178
|
-
* @since 2.10.0
|
|
1179
|
-
*/
|
|
1180
|
-
var concatAll = concatAll$1;
|
|
1181
|
-
// -------------------------------------------------------------------------------------
|
|
1182
|
-
// deprecated
|
|
1183
|
-
// -------------------------------------------------------------------------------------
|
|
1184
|
-
/**
|
|
1185
|
-
* Use `void` module instead.
|
|
1186
|
-
*
|
|
1187
|
-
* @category instances
|
|
1188
|
-
* @since 2.0.0
|
|
1189
|
-
* @deprecated
|
|
1190
|
-
*/
|
|
1191
|
-
var semigroupVoid = constant(undefined);
|
|
1192
|
-
/**
|
|
1193
|
-
* Use [`getAssignSemigroup`](./struct.ts.html#getAssignSemigroup) instead.
|
|
1194
|
-
*
|
|
1195
|
-
* @category instances
|
|
1196
|
-
* @since 2.0.0
|
|
1197
|
-
* @deprecated
|
|
1198
|
-
*/
|
|
1199
|
-
var getObjectSemigroup = function () { return ({
|
|
1200
|
-
concat: function (first, second) { return Object.assign({}, first, second); }
|
|
1201
|
-
}); };
|
|
1202
|
-
/**
|
|
1203
|
-
* Use [`last`](#last) instead.
|
|
1204
|
-
*
|
|
1205
|
-
* @category instances
|
|
1206
|
-
* @since 2.0.0
|
|
1207
|
-
* @deprecated
|
|
1208
|
-
*/
|
|
1209
|
-
var getLastSemigroup = last;
|
|
1210
|
-
/**
|
|
1211
|
-
* Use [`first`](#first) instead.
|
|
1212
|
-
*
|
|
1213
|
-
* @category instances
|
|
1214
|
-
* @since 2.0.0
|
|
1215
|
-
* @deprecated
|
|
1216
|
-
*/
|
|
1217
|
-
var getFirstSemigroup = first;
|
|
1218
|
-
/**
|
|
1219
|
-
* Use [`tuple`](#tuple) instead.
|
|
1220
|
-
*
|
|
1221
|
-
* @category combinators
|
|
1222
|
-
* @since 2.0.0
|
|
1223
|
-
* @deprecated
|
|
1224
|
-
*/
|
|
1225
|
-
var getTupleSemigroup = tuple;
|
|
1226
|
-
/**
|
|
1227
|
-
* Use [`struct`](#struct) instead.
|
|
1228
|
-
*
|
|
1229
|
-
* @category combinators
|
|
1230
|
-
* @since 2.0.0
|
|
1231
|
-
* @deprecated
|
|
1232
|
-
*/
|
|
1233
|
-
var getStructSemigroup = struct;
|
|
1234
|
-
/**
|
|
1235
|
-
* Use [`reverse`](#reverse) instead.
|
|
1236
|
-
*
|
|
1237
|
-
* @category combinators
|
|
1238
|
-
* @since 2.0.0
|
|
1239
|
-
* @deprecated
|
|
1240
|
-
*/
|
|
1241
|
-
var getDualSemigroup = reverse;
|
|
1242
|
-
/**
|
|
1243
|
-
* Use [`max`](#max) instead.
|
|
1244
|
-
*
|
|
1245
|
-
* @category constructors
|
|
1246
|
-
* @since 2.0.0
|
|
1247
|
-
* @deprecated
|
|
1248
|
-
*/
|
|
1249
|
-
var getJoinSemigroup = max;
|
|
1250
|
-
/**
|
|
1251
|
-
* Use [`min`](#min) instead.
|
|
1252
|
-
*
|
|
1253
|
-
* @category constructors
|
|
1254
|
-
* @since 2.0.0
|
|
1255
|
-
* @deprecated
|
|
1256
|
-
*/
|
|
1257
|
-
var getMeetSemigroup = min;
|
|
1258
|
-
/**
|
|
1259
|
-
* Use [`intercalate`](#intercalate) instead.
|
|
1260
|
-
*
|
|
1261
|
-
* @category combinators
|
|
1262
|
-
* @since 2.5.0
|
|
1263
|
-
* @deprecated
|
|
1264
|
-
*/
|
|
1265
|
-
var getIntercalateSemigroup = intercalate;
|
|
1266
|
-
function fold(S) {
|
|
1267
|
-
var concatAllS = concatAll(S);
|
|
1268
|
-
return function (startWith, as) { return (as === undefined ? concatAllS(startWith) : concatAllS(startWith)(as)); };
|
|
1269
|
-
}
|
|
1270
|
-
/**
|
|
1271
|
-
* Use [`SemigroupAll`](./boolean.ts.html#SemigroupAll) instead.
|
|
1272
|
-
*
|
|
1273
|
-
* @category instances
|
|
1274
|
-
* @since 2.0.0
|
|
1275
|
-
* @deprecated
|
|
1276
|
-
*/
|
|
1277
|
-
var semigroupAll = {
|
|
1278
|
-
concat: function (x, y) { return x && y; }
|
|
1279
|
-
};
|
|
1280
|
-
/**
|
|
1281
|
-
* Use [`SemigroupAny`](./boolean.ts.html#SemigroupAny) instead.
|
|
1282
|
-
*
|
|
1283
|
-
* @category instances
|
|
1284
|
-
* @since 2.0.0
|
|
1285
|
-
* @deprecated
|
|
1286
|
-
*/
|
|
1287
|
-
var semigroupAny = {
|
|
1288
|
-
concat: function (x, y) { return x || y; }
|
|
1289
|
-
};
|
|
1290
|
-
/**
|
|
1291
|
-
* Use [`getSemigroup`](./function.ts.html#getSemigroup) instead.
|
|
1292
|
-
*
|
|
1293
|
-
* @category instances
|
|
1294
|
-
* @since 2.0.0
|
|
1295
|
-
* @deprecated
|
|
1296
|
-
*/
|
|
1297
|
-
var getFunctionSemigroup = getSemigroup$2;
|
|
1298
|
-
/**
|
|
1299
|
-
* Use [`Semigroup`](./string.ts.html#Semigroup) instead.
|
|
1300
|
-
*
|
|
1301
|
-
* @category instances
|
|
1302
|
-
* @since 2.0.0
|
|
1303
|
-
* @deprecated
|
|
1304
|
-
*/
|
|
1305
|
-
var semigroupString = {
|
|
1306
|
-
concat: function (x, y) { return x + y; }
|
|
1307
|
-
};
|
|
1308
|
-
/**
|
|
1309
|
-
* Use [`SemigroupSum`](./number.ts.html#SemigroupSum) instead.
|
|
1310
|
-
*
|
|
1311
|
-
* @category instances
|
|
1312
|
-
* @since 2.0.0
|
|
1313
|
-
* @deprecated
|
|
1314
|
-
*/
|
|
1315
|
-
var semigroupSum = {
|
|
1316
|
-
concat: function (x, y) { return x + y; }
|
|
1317
|
-
};
|
|
1318
|
-
/**
|
|
1319
|
-
* Use [`SemigroupProduct`](./number.ts.html#SemigroupProduct) instead.
|
|
1320
|
-
*
|
|
1321
|
-
* @category instances
|
|
1322
|
-
* @since 2.0.0
|
|
1323
|
-
* @deprecated
|
|
1324
|
-
*/
|
|
1325
|
-
var semigroupProduct = {
|
|
1326
|
-
concat: function (x, y) { return x * y; }
|
|
1327
|
-
};
|
|
1328
|
-
|
|
1329
|
-
const semigroupDiff = {
|
|
1330
|
-
concat: (x, y) => x - y,
|
|
1331
|
-
};
|
|
1332
|
-
const semigroupDiv = {
|
|
1333
|
-
concat: (x, y) => x / y,
|
|
1334
|
-
};
|
|
1335
|
-
|
|
1336
|
-
const fromRectangle$1 = ({ x, y }) => {
|
|
1337
|
-
return {
|
|
1338
|
-
x,
|
|
1339
|
-
y,
|
|
1340
|
-
};
|
|
1341
|
-
};
|
|
1342
|
-
const fromMouseEvent = ({ clientX, clientY }) => {
|
|
1343
|
-
return {
|
|
1344
|
-
x: clientX,
|
|
1345
|
-
y: clientY,
|
|
1346
|
-
};
|
|
1347
|
-
};
|
|
1348
|
-
const fromTouchEvent = ({ touches }) => {
|
|
1349
|
-
return {
|
|
1350
|
-
x: touches[0].clientX,
|
|
1351
|
-
y: touches[0].clientY,
|
|
1352
|
-
};
|
|
1353
|
-
};
|
|
1354
|
-
const pointDiffSemigroup = struct({
|
|
1355
|
-
x: semigroupDiff,
|
|
1356
|
-
y: semigroupDiff,
|
|
1357
|
-
});
|
|
1358
|
-
const pointSumSemigroup = struct({
|
|
1359
|
-
x: semigroupSum,
|
|
1360
|
-
y: semigroupSum,
|
|
1361
|
-
});
|
|
1362
|
-
const pointProductSemigroup = struct({
|
|
1363
|
-
x: semigroupProduct,
|
|
1364
|
-
y: semigroupProduct,
|
|
1365
|
-
});
|
|
1366
|
-
|
|
1367
|
-
var HandlerDirection;
|
|
1368
|
-
(function (HandlerDirection) {
|
|
1369
|
-
HandlerDirection[HandlerDirection["East"] = 0] = "East";
|
|
1370
|
-
HandlerDirection[HandlerDirection["North"] = 1] = "North";
|
|
1371
|
-
HandlerDirection[HandlerDirection["NorthEast"] = 2] = "NorthEast";
|
|
1372
|
-
HandlerDirection[HandlerDirection["NorthWest"] = 3] = "NorthWest";
|
|
1373
|
-
HandlerDirection[HandlerDirection["South"] = 4] = "South";
|
|
1374
|
-
HandlerDirection[HandlerDirection["SouthEast"] = 5] = "SouthEast";
|
|
1375
|
-
HandlerDirection[HandlerDirection["SouthWest"] = 6] = "SouthWest";
|
|
1376
|
-
HandlerDirection[HandlerDirection["West"] = 7] = "West";
|
|
1377
|
-
})(HandlerDirection || (HandlerDirection = {}));
|
|
1378
|
-
const getCursorValue = (direction) => {
|
|
1379
|
-
switch (direction) {
|
|
1380
|
-
case HandlerDirection.East:
|
|
1381
|
-
return "e-resize";
|
|
1382
|
-
case HandlerDirection.North:
|
|
1383
|
-
return "n-resize";
|
|
1384
|
-
case HandlerDirection.NorthEast:
|
|
1385
|
-
return "ne-resize";
|
|
1386
|
-
case HandlerDirection.NorthWest:
|
|
1387
|
-
return "nw-resize";
|
|
1388
|
-
case HandlerDirection.South:
|
|
1389
|
-
return "s-resize";
|
|
1390
|
-
case HandlerDirection.SouthEast:
|
|
1391
|
-
return "se-resize";
|
|
1392
|
-
case HandlerDirection.SouthWest:
|
|
1393
|
-
return "sw-resize";
|
|
1394
|
-
case HandlerDirection.West:
|
|
1395
|
-
return "w-resize";
|
|
1396
|
-
default:
|
|
1397
|
-
return "pointer";
|
|
1398
|
-
}
|
|
1399
|
-
};
|
|
1400
|
-
const fromRectangle = (r) => [
|
|
1401
|
-
{
|
|
1402
|
-
position: fromRectangle$1(r),
|
|
1403
|
-
direction: HandlerDirection.NorthWest,
|
|
1404
|
-
},
|
|
1405
|
-
{
|
|
1406
|
-
position: pointSumSemigroup.concat(fromRectangle$1(r), {
|
|
1407
|
-
x: r.width,
|
|
1408
|
-
y: 0,
|
|
1409
|
-
}),
|
|
1410
|
-
direction: HandlerDirection.NorthEast,
|
|
1411
|
-
},
|
|
1412
|
-
{
|
|
1413
|
-
position: pointSumSemigroup.concat(fromRectangle$1(r), {
|
|
1414
|
-
x: 0,
|
|
1415
|
-
y: r.height,
|
|
1416
|
-
}),
|
|
1417
|
-
direction: HandlerDirection.SouthWest,
|
|
1418
|
-
},
|
|
1419
|
-
{
|
|
1420
|
-
position: pointSumSemigroup.concat(fromRectangle$1(r), {
|
|
1421
|
-
x: r.width,
|
|
1422
|
-
y: r.height,
|
|
1423
|
-
}),
|
|
1424
|
-
direction: HandlerDirection.SouthEast,
|
|
1425
|
-
},
|
|
1426
|
-
];
|
|
1427
|
-
|
|
1428
|
-
export { fromEquals as A, min as B, max as C, struct as D, getStructSemigroup as E, semigroupDiv as F, contramap as G, ordNumber as H, fromRectangle$1 as I, pointSumSemigroup as J, HandlerDirection as K, pointProductSemigroup as L, fromCompare as M, fromRectangle as N, fromMouseEvent as O, pointDiffSemigroup as P, getCursorValue as Q, SK as S, identity as a, isLeft as b, isRight as c, emptyReadonlyArray as d, emptyRecord as e, flow as f, isNonEmpty as g, head as h, isNone as i, constFalse as j, constTrue as k, left as l, isSome as m, none as n, constNull as o, pipe as p, constUndefined as q, right as r, some as s, tuple$3 as t, first as u, last as v, tail as w, singleton as x, fromReadonlyNonEmptyArray as y, getMonoid as z };
|