A music player that connects to your cloud/distributed storage.
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Elm housekeeping

+91 -105
+10 -6
Justfile
··· 174 174 ) 175 175 176 176 177 + @elm-housekeeping: 178 + echo "> Running elm-impfix" 179 + {{NPM_DIR}}/.bin/elm-impfix "{{SRC_DIR}}/**/*.elm" --replace 180 + # echo "> Running elm-review" 181 + # {{NPM_DIR}}/.bin/elm-review {{SRC_DIR}} --config system/Review --fix 182 + echo "> Running elm-format" 183 + elm-format {{SRC_DIR}} --yes 184 + 185 + 177 186 @quality: 178 187 echo "> Running es-lint" 179 188 {{NPM_DIR}}/.bin/eslint src/Javascript/** 180 189 echo "> Running elm-review" 181 - {{NPM_DIR}}/.bin/elm-review src --config system/Review 182 - 183 - 184 - @quality-fix: 185 - echo "> Running elm-review" 186 - {{NPM_DIR}}/.bin/elm-review src --config system/Review --fix 190 + {{NPM_DIR}}/.bin/elm-review {{SRC_DIR}} --config system/Review 187 191 188 192 189 193 @server:
+1
README.md
··· 67 67 - [Node.js](https://nodejs.org/) programming language with the [Yarn](https://yarnpkg.com/) package manager 68 68 - [Just](https://github.com/casey/just) command runner (improved `make`) 69 69 - [Devd](https://github.com/cortesi/devd) web server for development (optional) 70 + - [Elm Format](https://github.com/avh4/elm-format) elm code formatter (optional) 70 71 - [Watchexec](https://github.com/watchexec/watchexec) watching for file changes (optional) 71 72 - [Elm Proofread](https://github.com/icidasset/elm-proofread) documentation tests (optional) 72 73
+1
package.json
··· 3 3 "devDependencies": { 4 4 "autoprefixer": "^9.7.4", 5 5 "csso-cli": "^3.0.0", 6 + "elm-impfix": "^1.0.8", 6 7 "elm-review": "^1.0.2", 7 8 "eslint": "^6.8.0", 8 9 "postcss": "^7.0.27",
+1 -1
src/Applications/UI/Adjunct.elm
··· 3 3 import Keyboard 4 4 import Maybe.Extra as Maybe 5 5 import Return 6 - import Return.Ext as Return exposing (communicate) 6 + import Return.Ext as Return 7 7 import UI.Alfred.State as Alfred 8 8 import UI.Authentication as Authentication 9 9 import UI.Interface.State exposing (hideOverlay)
+1 -8
src/Applications/UI/Alfred/State.elm
··· 3 3 import Alfred exposing (Alfred) 4 4 import Browser.Dom as Dom 5 5 import Chunky exposing (..) 6 - import Css.Classes as C 7 - import Html exposing (Html, text) 8 - import Html.Attributes exposing (autofocus, id, placeholder, type_) 9 - import Html.Events exposing (onInput) 10 - import Html.Ext exposing (onTapPreventDefault) 11 - import Keyboard 12 6 import List.Extra as List 13 - import Material.Icons as Icons 14 7 import Material.Icons.Types exposing (Coloring(..)) 15 - import Return exposing (andThen, return) 8 + import Return exposing (return) 16 9 import Return.Ext as Return 17 10 import String.Ext as String 18 11 import Task
-2
src/Applications/UI/Audio/State.elm
··· 2 2 3 3 import Dict 4 4 import LastFm 5 - import Management 6 5 import Maybe.Extra as Maybe 7 - import Monocle.Lens as Lens exposing (Lens) 8 6 import Return exposing (return) 9 7 import Return.Ext as Return exposing (communicate) 10 8 import UI.Ports as Ports
+1 -2
src/Applications/UI/Authentication/State.elm
··· 4 4 import Common exposing (Switch(..)) 5 5 import Http 6 6 import Json.Decode as Json 7 - import Monocle.Lens as Lens 8 7 import Notifications 9 8 import Return exposing (andThen, return) 10 - import Return.Ext as Return exposing (communicate) 9 + import Return.Ext as Return 11 10 import UI.Common.State as Common exposing (showNotification, showNotificationWithModel) 12 11 import UI.Reply as Reply exposing (Reply(..)) 13 12 import UI.Reply.Translate as Reply
+2 -2
src/Applications/UI/Backdrop.elm
··· 1 1 module UI.Backdrop exposing (..) 2 2 3 3 import Chunky exposing (..) 4 - import Color exposing (Color) 4 + import Color 5 5 import Css.Classes as C 6 6 import Html exposing (Html) 7 7 import Html.Attributes exposing (src, style) 8 8 import Html.Events exposing (on) 9 9 import Html.Lazy as Lazy 10 10 import Json.Decode 11 - import Return exposing (andThen, return) 11 + import Return exposing (return) 12 12 import Return.Ext as Return 13 13 import UI.Ports as Ports 14 14 import UI.Reply as Reply exposing (Reply(..))
+1 -6
src/Applications/UI/Equalizer/State.elm
··· 1 1 module UI.Equalizer.State exposing (..) 2 2 3 - import Color exposing (Color) 4 - import Color.Ext as Color 5 - import Coordinates exposing (Coordinates) 3 + import Coordinates 6 4 import Equalizer exposing (..) 7 5 import Html.Events.Extra.Pointer as Pointer 8 - import Json.Decode as Decode 9 - import Management 10 - import Material.Icons as Icons 11 6 import Return exposing (andThen, return) 12 7 import UI.Ports as Ports 13 8 import UI.Reply exposing (Reply(..))
+3 -12
src/Applications/UI/EtCetera/State.elm
··· 2 2 3 3 import Alien 4 4 import Common exposing (Switch(..)) 5 - import Debouncer.Basic as Debouncer 6 - import Maybe.Extra as Maybe 7 5 import Monocle.Lens as Lens 8 6 import Notifications 9 - import Return exposing (return) 10 - import Return.Ext as Return exposing (communicate) 7 + import Return 8 + import Return.Ext as Return 11 9 import Time 12 10 import UI.Authentication as Authentication 13 - import UI.Common.State as Common exposing (modifySingleton) 14 - import UI.DnD as DnD 15 - import UI.Page as Page 11 + import UI.Common.State as Common 16 12 import UI.Ports as Ports 17 - import UI.Queue as Queue 18 - import UI.Queue.State as Queue 19 - import UI.Reply as Reply 20 13 import UI.Sources.State as Sources 21 - import UI.Tracks as Tracks 22 - import UI.Tracks.State as Tracks 23 14 import UI.Types as UI exposing (..) 24 15 import User.Layer exposing (..) 25 16
+1 -5
src/Applications/UI/Interface/State.elm
··· 2 2 3 3 import Common exposing (Switch(..)) 4 4 import Debouncer.Basic as Debouncer 5 - import Maybe.Extra as Maybe 6 - import Monocle.Lens as Lens 7 5 import Return exposing (return) 8 - import Return.Ext as Return exposing (communicate) 6 + import Return.Ext as Return 9 7 import UI.Common.State as Common exposing (modifySingleton) 10 8 import UI.DnD as DnD 11 9 import UI.Page as Page 12 - import UI.Ports as Ports 13 10 import UI.Queue as Queue 14 11 import UI.Queue.State as Queue 15 - import UI.Sources.State as Sources 16 12 import UI.Tracks as Tracks 17 13 import UI.Tracks.Scene.List 18 14 import UI.Tracks.State as Tracks
+1 -2
src/Applications/UI/Playlists/State.elm
··· 6 6 import Html.Events.Extra.Mouse as Mouse 7 7 import Json.Encode 8 8 import List.Extra as List 9 - import Monocle.Lens as Lens 10 9 import Notifications 11 10 import Playlists exposing (..) 12 11 import Playlists.Encoding as Playlists 13 12 import Return exposing (andThen, return) 14 - import Return.Ext as Return exposing (communicate) 13 + import Return.Ext as Return 15 14 import UI.Common.State as Common 16 15 import UI.Page as Page 17 16 import UI.Playlists.ContextMenu as Playlists
-3
src/Applications/UI/Playlists/View.elm
··· 4 4 import Color exposing (Color) 5 5 import Color.Ext as Color 6 6 import Common 7 - import Conditional exposing (ifThenElse) 8 - import Coordinates 9 7 import Css.Classes as C 10 8 import Html exposing (Html, text) 11 9 import Html.Attributes exposing (href, placeholder, style, value) 12 10 import Html.Events exposing (onInput, onSubmit) 13 - import Html.Events.Extra.Mouse as Mouse 14 11 import List.Extra as List 15 12 import Material.Icons as Icons 16 13 import Material.Icons.Types exposing (Coloring(..))
+2 -12
src/Applications/UI/Reply/Translate.elm
··· 6 6 import Chunky exposing (..) 7 7 import Common exposing (Switch(..)) 8 8 import Conditional exposing (..) 9 - import ContextMenu exposing (ContextMenu) 10 - import Css exposing (url) 11 - import Css.Classes as C 12 - import Debouncer.Basic as Debouncer 13 9 import Dict 14 10 import Dict.Ext as Dict 15 11 import File.Download 16 12 import File.Select 17 - import Html exposing (Html, section) 18 - import Html.Attributes exposing (class, id, style) 19 - import Html.Events exposing (on, onClick) 20 - import Html.Events.Extra.Pointer as Pointer 21 - import Html.Lazy as Lazy 13 + import Html.Attributes exposing (id) 22 14 import Json.Encode 23 15 import LastFm 24 16 import List.Ext as List ··· 44 36 import UI.Common.State exposing (showNotification, showNotificationWithModel) 45 37 import UI.Demo as Demo 46 38 import UI.Interface.State as Interface 47 - import UI.Navigation as Navigation 48 39 import UI.Notifications 49 - import UI.Page as Page 50 40 import UI.Playlists.Alfred 51 41 import UI.Playlists.ContextMenu as Playlists 52 42 import UI.Playlists.Directory ··· 63 53 import UI.Tracks.Scene.List 64 54 import UI.Tracks.State as Tracks 65 55 import UI.Types as UI exposing (..) 66 - import Url exposing (Protocol(..), Url) 56 + import Url exposing (Protocol(..)) 67 57 import Url.Ext as Url 68 58 import User.Layer exposing (..) 69 59 import User.Layer.Methods.RemoteStorage as RemoteStorage
+2 -3
src/Applications/UI/Services/State.elm
··· 2 2 3 3 import Http 4 4 import LastFm 5 - import Monocle.Lens as Lens 6 5 import Notifications 7 - import Return exposing (andThen, return) 8 - import Return.Ext as Return exposing (communicate) 6 + import Return exposing (andThen) 7 + import Return.Ext as Return 9 8 import UI.Common.State as Common exposing (showNotification) 10 9 import UI.Reply exposing (Reply(..)) 11 10 import UI.Types as UI exposing (Manager, Msg(..))
+3 -3
src/Applications/UI/Tracks/State.elm
··· 3 3 import ContextMenu 4 4 import List.Ext as List 5 5 import List.Extra as List 6 - import Monocle.Lens as Lens exposing (Lens) 6 + import Monocle.Lens as Lens 7 7 import Notifications 8 - import Return exposing (andThen, return) 9 - import Return.Ext as Return exposing (communicate) 8 + import Return 9 + import Return.Ext as Return 10 10 import UI.Common.State as Common exposing (showNotification) 11 11 import UI.Reply as Reply exposing (Reply(..)) 12 12 import UI.Tracks as Tracks
-17
src/Applications/UI/Types.elm
··· 10 10 import ContextMenu exposing (ContextMenu) 11 11 import Coordinates exposing (Viewport) 12 12 import Css exposing (url) 13 - import Css.Classes as C 14 13 import Debouncer.Basic as Debouncer exposing (Debouncer) 15 14 import Dict exposing (Dict) 16 - import Dict.Ext as Dict 17 15 import Equalizer exposing (Knob) 18 16 import File exposing (File) 19 - import Html exposing (Html, section) 20 - import Html.Attributes exposing (class, id, style) 21 - import Html.Events exposing (on, onClick) 22 17 import Html.Events.Extra.Mouse as Mouse 23 18 import Html.Events.Extra.Pointer as Pointer 24 - import Html.Lazy as Lazy 25 19 import Http 26 20 import Json.Decode 27 21 import Keyboard 28 22 import LastFm 29 - import List.Ext as List 30 - import List.Extra as List 31 23 import Management 32 - import Maybe.Extra as Maybe 33 24 import Notifications exposing (Notification) 34 25 import Playlists exposing (Playlist, PlaylistTrack) 35 - import Playlists.Encoding as Playlists 36 26 import Queue 37 27 import Sources 38 28 import Sources.Encoding as Sources 39 - import String.Ext as String 40 29 import Time 41 30 import Tracks 42 31 import Tracks.Encoding as Tracks 43 32 import UI.Authentication as Authentication 44 33 import UI.Authentication.ContextMenu as Authentication 45 - import UI.Demo as Demo 46 - import UI.DnD as DnD 47 - import UI.Navigation as Navigation 48 34 import UI.Notifications 49 35 import UI.Page as Page exposing (Page) 50 - import UI.Playlists.ContextMenu as Playlists 51 - import UI.Ports as Ports 52 36 import UI.Queue as Queue 53 37 import UI.Queue.ContextMenu as Queue 54 38 import UI.Reply as Reply exposing (Reply(..)) ··· 57 41 import UI.Tracks as Tracks 58 42 import UI.Tracks.ContextMenu as Tracks 59 43 import Url exposing (Protocol(..), Url) 60 - import Url.Ext as Url 61 44 import User.Layer exposing (..) 62 45 import User.Layer.Methods.RemoteStorage as RemoteStorage 63 46
+1 -4
src/Applications/UI/User/State/Import.elm
··· 6 6 import LastFm 7 7 import List.Extra as List 8 8 import Maybe.Extra as Maybe 9 - import Monocle.Lens as Lens 10 9 import Notifications 11 10 import Process 12 11 import Return exposing (andThen, return) 13 12 import Return.Ext as Return exposing (communicate) 14 13 import Return3 15 14 import Task 16 - import UI.Audio.State as Audio 17 15 import UI.Backdrop as Backdrop 18 16 import UI.Common.State as Common exposing (showNotification) 19 17 import UI.Equalizer.State as Equalizer 20 - import UI.Page as Page exposing (Page) 18 + import UI.Page as Page 21 19 import UI.Playlists.Directory 22 - import UI.Playlists.State as Playlists 23 20 import UI.Ports as Ports 24 21 import UI.Reply exposing (..) 25 22 import UI.Reply.Translate as Reply
-1
src/Library/Icons.elm
··· 1 1 module Icons exposing (..) 2 2 3 3 import Chunky exposing (slaby) 4 - import Color exposing (Color) 5 4 import Html 6 5 import Material.Icons.Types exposing (Coloring) 7 6 import VirtualDom
+60 -16
yarn.lock
··· 1044 1044 dependencies: 1045 1045 delayed-stream "~1.0.0" 1046 1046 1047 - commander@^2.20.0: 1047 + commander@^2.15.1, commander@^2.20.0: 1048 1048 version "2.20.3" 1049 1049 resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 1050 1050 integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== ··· 1429 1429 inherits "^2.0.1" 1430 1430 minimalistic-assert "^1.0.0" 1431 1431 minimalistic-crypto-utils "^1.0.0" 1432 + 1433 + elm-impfix@^1.0.8: 1434 + version "1.0.8" 1435 + resolved "https://registry.yarnpkg.com/elm-impfix/-/elm-impfix-1.0.8.tgz#4cd9067b4376edef326f11fc876064445b8e46a1" 1436 + integrity sha512-DBvvWxY2+0DFhEBkQCartSVAEKyx00w431FD9Cnb5xeuhWx5IiuxxuPgtCG1pDJ8iC3Uv9CNzgDJvPc9+HTHvA== 1437 + dependencies: 1438 + chalk "^2.4.1" 1439 + commander "^2.15.1" 1440 + glob "^7.1.2" 1441 + parse-filepath "^1.0.2" 1432 1442 1433 1443 elm-json@^0.2.6: 1434 1444 version "0.2.6" ··· 2430 2440 resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" 2431 2441 integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== 2432 2442 2443 + is-absolute@^1.0.0: 2444 + version "1.0.0" 2445 + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" 2446 + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== 2447 + dependencies: 2448 + is-relative "^1.0.0" 2449 + is-windows "^1.0.1" 2450 + 2433 2451 is-accessor-descriptor@^0.1.6: 2434 2452 version "0.1.6" 2435 2453 resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" ··· 2611 2629 dependencies: 2612 2630 has "^1.0.1" 2613 2631 2632 + is-relative@^1.0.0: 2633 + version "1.0.0" 2634 + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" 2635 + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== 2636 + dependencies: 2637 + is-unc-path "^1.0.0" 2638 + 2614 2639 is-stream@^1.1.0: 2615 2640 version "1.1.0" 2616 2641 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" ··· 2627 2652 version "1.0.0" 2628 2653 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2629 2654 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 2655 + 2656 + is-unc-path@^1.0.0: 2657 + version "1.0.0" 2658 + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" 2659 + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== 2660 + dependencies: 2661 + unc-path-regex "^0.1.2" 2630 2662 2631 2663 is-windows@^1.0.1, is-windows@^1.0.2: 2632 2664 version "1.0.2" ··· 2871 2903 dependencies: 2872 2904 p-defer "^1.0.0" 2873 2905 2874 - map-cache@^0.2.2: 2906 + map-cache@^0.2.0, map-cache@^0.2.2: 2875 2907 version "0.2.2" 2876 2908 resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2877 2909 integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= ··· 3502 3534 pbkdf2 "^3.0.3" 3503 3535 safe-buffer "^5.1.1" 3504 3536 3537 + parse-filepath@^1.0.2: 3538 + version "1.0.2" 3539 + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" 3540 + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= 3541 + dependencies: 3542 + is-absolute "^1.0.0" 3543 + map-cache "^0.2.0" 3544 + path-root "^0.1.1" 3545 + 3505 3546 parse-json@^4.0.0: 3506 3547 version "4.0.0" 3507 3548 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" ··· 3554 3595 version "1.0.6" 3555 3596 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 3556 3597 integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 3598 + 3599 + path-root-regex@^0.1.0: 3600 + version "0.1.2" 3601 + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" 3602 + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= 3603 + 3604 + path-root@^0.1.1: 3605 + version "0.1.1" 3606 + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" 3607 + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= 3608 + dependencies: 3609 + path-root-regex "^0.1.0" 3557 3610 3558 3611 path-type@^4.0.0: 3559 3612 version "4.0.0" ··· 4641 4694 lodash "^4.17.15" 4642 4695 postcss-selector-parser "^6.0.2" 4643 4696 4644 - tailwindcss-transforms@^2.2.0: 4645 - version "2.2.0" 4646 - resolved "https://registry.yarnpkg.com/tailwindcss-transforms/-/tailwindcss-transforms-2.2.0.tgz#3e0e594a2b34a056714d5fe539e2ace3226edf28" 4647 - integrity sha512-0HPzE1QgGi94lNOgsIKA0AWaQern+JR0XNJkRmpyjFybpSLtQ5HkupF/caAmUW+pTt4cguDzd5gw09uw1oaG3A== 4648 - dependencies: 4649 - lodash "^4.17.11" 4650 - 4651 - tailwindcss-transitions@^2.2.0: 4652 - version "2.2.0" 4653 - resolved "https://registry.yarnpkg.com/tailwindcss-transitions/-/tailwindcss-transitions-2.2.0.tgz#73dd0122ce6d30575d98921fe795b8e290c96790" 4654 - integrity sha512-yI8nzJL8EOXdXECQDVDFBQ89yNhqYuAzltwgHEjU+0R5TZAfIfA4DEtvdVbBMmvAgYOGMhm0D/7zPfc7Wl3MSg== 4655 - dependencies: 4656 - lodash "^4.17.15" 4657 - 4658 4697 tailwindcss@^1.2.0: 4659 4698 version "1.2.0" 4660 4699 resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.2.0.tgz#5df317cebac4f3131f275d258a39da1ba3a0f291" ··· 4903 4942 version "0.0.6" 4904 4943 resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 4905 4944 integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 4945 + 4946 + unc-path-regex@^0.1.2: 4947 + version "0.1.2" 4948 + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" 4949 + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= 4906 4950 4907 4951 union-value@^1.0.0: 4908 4952 version "1.0.1"